Перейти к содержанию
Fire Monkey от А до Я

SerhioUser

Пользователи
  • Постов

    55
  • Зарегистрирован

  • Посещение

Информация о SerhioUser

  • День рождения 12.02.1975

Информация

  • Пол
    Мужчина
  • Город
    Запорожье
  • Интересы
    Бог, C++, музыка

Посетители профиля

1 286 просмотров профиля
  1. А пустое приложение типа "Hello world" ведет себя так-же? Я это к чему - выяснить: проблема с Вашей программой, или с фреймворком в целом...
  2. Добрый день. Как в FMX при перерисовке объекта включить/отключить привязку к вертикальной синхронизации (v-sync) развертки экрана? Есть ли такая возможность в FMX? (В OpenGL и DirectX - есть) Например если делаем видео-плеер, то чтобы не было артефактов синхронизация нужна, а если хотим узнать реальный fps - синхронизацию выключаем.
  3. Благодарю, Евгений Корепов! Вот функция GetApkVersion() на C++ для получения версии APK-файла, и слегка подкорректированная вышеописанная функция запуска: String __fastcall ShellExecutePipe(String CommandLine, String AWorkDir = "C:\\", UINT Flag = SW_HIDE) { TSecurityAttributes SA; TStartupInfo SI; TProcessInformation PI; HANDLE StdOutPipeRead, StdOutPipeWrite; bool WasOK; char Buffer[256]; unsigned long BytesRead; String WorkDir; bool Handle; String AOutputLine; String Result; SA.nLength = sizeof(SA); SA.bInheritHandle = true; SA.lpSecurityDescriptor = NULL; CreatePipe(&StdOutPipeRead, &StdOutPipeWrite, &SA, 0); try { setmem(&SI, sizeof(SI), 0); SI.cb = sizeof(SI); SI.dwFlags = STARTF_USESHOWWINDOW | STARTF_USESTDHANDLES; SI.wShowWindow = Flag; SI.hStdInput = (unsigned)GetStdHandle(STD_INPUT_HANDLE); // don't redirect stdin SI.hStdOutput = (unsigned int)StdOutPipeWrite; SI.hStdError = (unsigned int)StdOutPipeWrite; WorkDir = AWorkDir; Handle = CreateProcess(NULL, CommandLine.c_str(), NULL, NULL, true, 0, NULL, WorkDir.c_str(), (STARTUPINFO*)&SI, &PI); } catch(Exception &e) { } CloseHandle(StdOutPipeWrite); if (Handle) { try { do { WasOK = ReadFile(StdOutPipeRead, Buffer, 50, &BytesRead, NULL); if(BytesRead > 0) { Buffer[BytesRead] = 0; AOutputLine = Buffer; Result = Result + AOutputLine; } }while(WasOK && (BytesRead != 0)); WaitForSingleObject(PI.hProcess, INFINITE); } __finally { CloseHandle(PI.hThread); CloseHandle(PI.hProcess); } } CloseHandle(StdOutPipeRead); return Result; } //--------------------------------------------------------------------------- String __fastcall GetShortName(String sLongName) { String ret; String sShortName; int nShortNameLen; sShortName.SetLength(MAX_PATH); nShortNameLen = GetShortPathName( sLongName.c_str(), sShortName.c_str(), MAX_PATH - 1); if (nShortNameLen != 0) { sShortName.SetLength(nShortNameLen); ret = sShortName; } return ret; } //--------------------------------------------------------------------------- String __fastcall GetApkVersion(String FileName) { String ret; String AppPath = GetShortName(ExtractFileDir(Application->ExeName)); FileName = GetShortName(FileName); if(FileName != "") { String cmd = (String)"cmd /c \""+ AppPath + "\\aapt.exe\"" + " dump badging " + FileName; String res = ShellExecutePipe(cmd, AppPath); TStringList *sl = new TStringList; sl->Delimiter = ' '; sl->DelimitedText = res; ret = AnsiDequotedStr(sl->Values["versionName"], '\''); if(ret != "") ret += "."; ret += AnsiDequotedStr(sl->Values["versionCode"], '\''); delete sl; } return ret; } //--------------------------------------------------------------------------- Всем спасибо за участие.
  4. В общем работает так: WinExec("cmd /c aapt.exe dump badging path\\file.apk > text.txt", SW_HIDE); Запускается по тихому и создает text.txt, из которого можно выудить информацию о версии. Жаль, что нельзя этот файл получать напрямую в память, а не на диск - лишние операции, создающие тормоза.
  5. В нашем случае cmd /с dir ведь нам нужно выполнить и завершится.
  6. Попытался извлечь из APK-файла файл AndroidManifest.xml с помощью 7zip и winrar. Как архив apk открывается, а вот содержимое действительно похоже на зашифрованное. У AndroidManifest.xml даже размер не соответствует оригинальному AndroidManifest.xml, который туда помещала студия. Кто-то может у себя это проверить? TZipFile вернул аналогичное шифрованное содержимое. Походу aapt dump badging единственный вариант...
  7. Пуск->Выполнить Дальше пишем "cmd.exe dir" Открывается консоль и фСё! Сам в шоке... (У меня win 8.1) Я, честно говоря, тоже... возможно тот чел. что-то не так делал...
  8. А через bat-файл получилось. Странно конечно... ENRGY, благодарю за участие.
  9. Вот здесь человек не мог открыть apk архиватором. Конечно возможно он что-то делал не так. Мои apk-шки архиваторы открывают нормально, и это обнадеживает. Я ж написал, что я так пробовал с самого начала. Только не написал, что в консоли отрабатывает корректно. А из ShellExecute и из WinExec в файл не сохраняет (это я писал). Одна и та-же команда. Просто выводит на экран, как будто "> mytextfile.txt" не прописано. Сейчас буду разбираться, что умеет TZipFile.
  10. Имелись в виду стандартные средства эмбаркадеро, т.е Delphi/Builder, а не самой windows. Не совсем. Где-то читал, что он может быть шифрован и тогда такой вариант не подойдет. Я так пробовал с самого начала. Ни ShellExecute ни WinExec у меня не смогли сохранить результат в файл. Все выводилось в консоль.
  11. Есть прога(c++) на сервере под Windows. К ней подключаются девайсы под андроид и проверяют обновление некого андроид-приложения. Прога на сервере должна узнать версию лежащего локально apk-файла и сообщить ее девайсу. Теоретически можно с помощью aapt получить AndroidManifest.xml файл и вытащить версию от туда. А если ли какие стандартные средства, чтобы узнать версию APK под Windows?
  12. Сам столкнулся с этой проблемой. Скомпилировалось так: TStyleCollectionItem* ci = StyleBook->CurrentItem; Fmx::Types::TFmxObject *style = ci->Style; StyleObject = style->FindStyleResource(AImageName);
  13. Это библиотека интегрируется в андроид 1 раз. После этого все arm-программы смогут работать на этом устройстве с x86 процессором. Правда в несколько раз медленнее.
×
×
  • Создать...