Jump to content
Korean Random

AtotIK

User
  • Content Count

    1,528
  • Joined

  • Last visited

  • Days Won

    10

AtotIK last won the day on January 28

AtotIK had the most liked content!

Community Reputation

580 ⭐⭐⭐

2 Followers

Basic information

  • Gender
    Мужчина

Contacts

  • Nick
    AtotIK

Recent Profile Visitors

16,973 profile views
  1. Всё уже придумано для вас, осталось только начать пользоваться.
  2. Банки без вшитого ключа работают. Но при этом ограничение на 200 звуковых файлов действует.
  3. По умолчанию при установке на "диск C" система может задать права записи в папку только для администратора. Сталкивался с таким сам. Нажмите правой клавишей мыши на папку Games, далее "Свойства -- Безопасность", нажимайте кнопку "Изменить", далее "Добавить", вводите в текстовом поле "Все", нажимаете "Проверить имена". Если всё корректно, то "Все" подчеркивается. Потом "Ок", ставите галочку в "Полный доступ" и "Ок" во всех окошках и проверяйте ещё раз. Таким образом в эту папку смогут записывать и менять её содержимое все пользователи.
  4. Зачем изобретать велосипед, если уже всё сделали и обкатали здесь? И объединить моды для WG/Lesta в один инсталлятор вообще нет проблем. В том же OpenWG.Utils есть функция CHECK_IsLesta для использования в секции [Files] или [Components].
  5. Для кого придумали это? https://gitlab.com/xvm/xvm/-/blob/master/src/installer/src/xvm.iss Прекрасно работает, а если попросите у автора - зальёт новую dll с поддержкой WG/Lesta.
  6. Тут посмотрите: https://bitbucket.org/IzeBerg/
  7. Хм, а у меня на арте гусеницы на живом танке не перекрашиваются в другой цвет. Upd. Да, в простом бою тоже не красятся. Реплей с Батчатом. Файлы собраны свежие с 1.18. 20220808_1051_ussr-R52_Object_261_60_asia_miao.wotreplay 20220810_0904_france-F18_Bat_Chatillon25t_31_airfield.wotreplay
  8. @StranikS_Scan привет. Будут изменения в программе в связи с переходом на новую реализацию гусениц? Upd. Добавился "res\packages\vehicles_level_08-part3.pkg", учитывайте это в конфиге.
  9. Ребята, а можно отдельно в png символ лампочки в ушах, пожалуйста?
  10. А вот универсальный метод, но он сложнее. Работает везде. type HANDLE = LongInt; HMODULE = HANDLE; pHMODULE = Array[0..255] of HMODULE; LPDWORD = DWORD; PDWORD = Array[0..255] of DWORD; LPTSTR = String; function OpenProcess(dwDesiredAccess: DWORD; bInheritHandle: Boolean; dwProcessId: DWORD): HANDLE; external '[email protected] stdcall delayload'; function CloseHandle(hObject: HANDLE): BOOL; external '[email protected] stdcall delayload'; function EnumProcesses(var pProcessIds: PDWORD; cb: DWORD; var pBytesReturned: DWORD): BOOL; external '[email protected] stdcall delayload'; function EnumProcessModules(hProcess: HANDLE; var lphModule: pHMODULE; cb: DWORD; var lpcbNeeded: LPDWORD): BOOL; external '[email protected] stdcall delayload'; function GetModuleFileNameExW(hProcess: HANDLE; hModule: HMODULE; lpFilename: LPTSTR; nSize: DWORD): DWORD; external '[email protected] stdcall delayload'; function IsAppRunning(procName: String; FullPath: Boolean): Boolean; var Found, isModuleShot: Boolean; FilenameEnd: Integer; Filename: AnsiString; NA, Entry, maxEntries: DWORD; Processes: PDWORD; lpFilename: LPTSTR; hProcess: HANDLE; hMod: pHMODULE; begin SetLength(lpFilename, 255); Found := False; if (EnumProcesses(Processes, SizeOf(Processes), maxEntries)) then begin Entry := 0; maxEntries := maxEntries / SizeOf(maxEntries); while ((not Found) and (Entry < maxEntries)) do begin hProcess := OpenProcess($400 or $10, False, Processes[Entry]); if (hProcess <> 0) then begin isModuleShot := False; begin isModuleShot := EnumProcessModules(hProcess, hMod, SizeOf(hMod), NA); end; if (isModuleShot) then if (GetModuleFileNameExW(hProcess, hMod[0], lpFilename, Length(lpFilename)) > 0) then begin FilenameEnd := Pos(#0, lpFilename); Filename := Copy(Lowercase(lpFilename), 1, FilenameEnd - 1); if (not Fullpath) then Filename := ExtractFileName(Filename); if (AnsiLowercase(Filename) = AnsiLowercase(procName)) then Found := True; end; CloseHandle(hProcess); end; Entry := Entry + 1; end; end; Result := Found; end; function NextButtonClick(CurPage: Integer): Boolean; begin Result := True; if CurPage = 1 then begin case IsAppRunning('WorldOfTanks.exe', False) of True: begin MsgBox(ExpandConstant('{cm:IsAppRunningLabel}'), mbError, MB_OK); Result := False; end; False: Result := True; end; end; end; Тогда может это не твоё?
  11. function IsAppRunning(const FileName : AnsiString): Boolean; var FSWbemLocator: Variant; FWMIService : Variant; FWbemObjectSet: Variant; begin Result := False; FSWbemLocator := CreateOleObject('WBEMScripting.SWBEMLocator'); FWMIService := FSWbemLocator.ConnectServer('', 'root\CIMV2', '', ''); FWbemObjectSet := FWMIService.ExecQuery(Format('SELECT Name FROM Win32_Process Where Name="%s"', [FileName])); Result := (FWbemObjectSet.Count > 0); FWbemObjectSet := Unassigned; FWMIService := Unassigned; FSWbemLocator := Unassigned; end; function InitializeSetup(): Boolean; begin case IsAppRunning('WorldOfTanks.exe') of True: begin MsgBox(ExpandConstant('{cm:IsAppRunningLabel}'), mbError, MB_OK); Result := False; end; False: begin Result := True; end; end; end; Работает с Windows 7. Что бы не вылетал с ошибкой инсталлятор на XP и Vista нужно обвернуть это в проверку версии, а лучше запретить инсталлятор запускать на системах ниже Windows 7 (сколько можно уже?). Так же можно закинуть в NextButtonClick с проверкой на любой странице (первой). Не причастные к друг другу вещи. Ищите ошибку у себя.
  12. Скачивать XFW.ExtensionLib_2021.05.01.zip, брать в архиве файл xvmextensions.x86_32.dll, файл примера там же.
×
×
  • Create New...