Jump to content
Korean Random

AtotIK

User
  • Content Count

    1,528
  • Joined

  • Last visited

  • Days Won

    10

Posts posted by AtotIK


  1. По умолчанию при установке на "диск C" система может задать права записи в папку только для администратора. Сталкивался с таким сам.

    Нажмите правой клавишей мыши на папку Games, далее "Свойства -- Безопасность", нажимайте кнопку "Изменить", далее "Добавить", вводите в текстовом поле "Все", нажимаете "Проверить имена". Если всё корректно, то "Все" подчеркивается. Потом "Ок", ставите галочку в "Полный доступ" и "Ок" во всех окошках и проверяйте ещё раз.

    Таким образом в эту папку смогут записывать и менять её содержимое все пользователи.

    • Upvote 1

  2. Зачем изобретать велосипед, если уже всё сделали и обкатали здесь?

    И объединить моды для WG/Lesta в один инсталлятор вообще нет проблем. В том же OpenWG.Utils есть функция CHECK_IsLesta для использования в секции [Files] или [Components].

    • Upvote 2

  3. 08.08.2022 в 11:47, StranikS_Scan сказал:

    Проверил результаты работы мода на Прохоровке - всё работает как обычно. Так что обновлять программу мне не нужно.

    Хм, а у меня на арте гусеницы на живом танке не перекрашиваются в другой цвет.

    Upd. Да, в простом бою тоже не красятся. Реплей с Батчатом. Файлы собраны свежие с 1.18.

     


    shot_003.jpg
     

     

     

    20220808_1051_ussr-R52_Object_261_60_asia_miao.wotreplay



    shot_004.jpg

    20220810_0904_france-F18_Bat_Chatillon25t_31_airfield.wotreplay


  4. @StranikS_Scan привет. Будут изменения в программе в связи с переходом на новую реализацию гусениц?

     

    Upd.

    Добавился "res\packages\vehicles_level_08-part3.pkg", учитывайте это в конфиге.

    • Upvote 1

  5. А вот универсальный метод, но он сложнее. Работает везде.

     

    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;

     

    2 минуты назад, P.S.Enot сказал:

    интересно сказано. но я не понял не чего )))

    Тогда может это не твоё?


  6. 02.10.2021 в 01:19, P.S.Enot сказал:

    Ребята кому не сложно  поделитесь кодом который определяет что игра запущена.

     

    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 с проверкой на любой странице (первой).

     

    07.10.2021 в 15:20, P.S.Enot сказал:

    ошибку выдает

    Не причастные к друг другу вещи. Ищите ошибку у себя.


  7. 4 минуты назад, P.S.Enot сказал:

    А кроме как обосрать нельзя было что то хорошее написать. Девушка так и написала что это сборка с ее предпочтением . тобишь моды что она использует и хвм с настройками которые ей по душе. Один негатив так и брызжет.

     

    К сборке претензий нет. Претензии к картинке в шапке.


  8. А как она может не появляться при каждом запуске? Вы проверяете какие-то данные и только потом отображаете что на скриншотах? Инсталлятор показывает то, что ему сказали отобразить. А вот если идут дополнительные проверки, то смотрите в них. Какой вопрос, такой ответ.

×
×
  • Create New...