По-простому связать эмулятор и Икар-оболочку не выйдет.
И тот и тот требует админа, а если запускать от админа скрипт подмену - то такой скрипт не запускается через Шелл.
Тогда решил сделать так , через скрипт-подмену запускаем эмулятор и оболочку Windows ,а из эмулятора [которому даем права админа] запускаем Икар . Выглядит так :
[нужно обозвать эмулятор Vkey_iCarDUINO.exe и бросить в папку TipTop software\
iCar DS вместе с RUN_iCarDS.exe]
Код:
#NoTrayIcon
#pragma compile(Icon, "C:\Program Files (x86)\AutoIt3\Icons\au3script_v9.ico")
#include <MsgBoxConstants.au3>
If (@OSArch = "X86") Then
$rDir = "C:\Program Files\TipTop software\iCar DS\Vkey_iCarDUINO.exe"
$sKey = "HKLM"
Else
$rDir = "C:\Program Files (x86)\TipTop software\iCar DS\Vkey_iCarDUINO.exe"
$sKey = "HKLM64"
EndIf
$sKey &= "\SOFTWARE\Microsoft\Windows NT\CurrentVersion\Winlogon"
If (Not ProcessExists("iCarDS.exe")) Then
ShellExecute($rDir)
EndIf
Sleep(3000)
If (Not ProcessExists("explorer.exe")) Then
$sShell = RegRead($sKey, "Shell")
RegWrite($sKey, "Shell", "REG_SZ", "explorer.exe")
If (@error) Then
MsgBox($MB_ICONERROR, "RunExplorer", "Ошибка записи в реестр, код: " & @error)
EndIf
Sleep(500)
Run(@WindowsDir & "\explorer.exe")
WinWait('[Class:Shell_TrayWnd]')
$hTrayWnd = WinGetHandle('[Class:Shell_TrayWnd]')
WinSetState($hTrayWnd,'', @SW_HIDE)
Sleep(3000)
RegWrite($sKey, "Shell", "REG_SZ", $sShell)
EndIf
и под него эмулятор на 4-е кнопки :
Код:
#NoTrayIcon
#RequireAdmin
#pragma compile(Icon, "C:\Program Files (x86)\AutoIt3\Icons\au3script_v9.ico")
If (@OSArch = "X86") Then
$rDir = "C:\Program Files\TipTop software\iCar DS\iCarDS.exe"
$sKey = "HKLM"
Else
$rDir = "C:\Program Files (x86)\TipTop software\iCar DS\iCarDS.exe"
$sKey = "HKLM64"
EndIf
If (Not ProcessExists("iCarDS.exe")) Then
ShellExecute($rDir)
EndIf
Sleep(3000)
HotKeySet("!+{f8}", "Vkey_DUINO")
HotKeySet("!+{f7}", "Vkey_DUINO1")
HotKeySet("!+{f6}", "Vkey_DUINO2")
HotKeySet("!+{f5}", "Vkey_DUINO3")
HotKeySet("!+{f4}", "Vkey_DUINO4")
While 1
Sleep(100)
WEnd
Func Vkey_DUINO()
If ProcessExists("iCarDS.exe") Then
$RRSDK = ObjCreate("RoadRunner.SDK")
If Not @error Then
$RRSDK.Execute("SetVar;duino_key;duino_111111101||OnDuinoKeyPress")
EndIf
EndIf
EndFunc
Func Vkey_DUINO1()
If ProcessExists("iCarDS.exe") Then
$RRSDK = ObjCreate("RoadRunner.SDK")
If Not @error Then
$RRSDK.Execute("SetVar;duino_key;duino_111111102||OnDuinoKeyPress")
EndIf
EndIf
EndFunc
Func Vkey_DUINO2()
If ProcessExists("iCarDS.exe") Then
$RRSDK = ObjCreate("RoadRunner.SDK")
If Not @error Then
$RRSDK.Execute("SetVar;duino_key;duino_111111103||OnDuinoKeyPress")
EndIf
EndIf
EndFunc
Func Vkey_DUINO3()
If ProcessExists("iCarDS.exe") Then
$RRSDK = ObjCreate("RoadRunner.SDK")
If Not @error Then
$RRSDK.Execute("SetVar;duino_key;duino_111111104||OnDuinoKeyPress")
EndIf
EndIf
Func Vkey_DUINO4()
If ProcessExists("iCarDS.exe") Then
$RRSDK = ObjCreate("RoadRunner.SDK")
If Not @error Then
$RRSDK.Execute("SetVar;duino_key;duino_111111105||OnDuinoKeyPress")
EndIf
EndIf
EndFunc