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

Pax Beach

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

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

  • Посещение

  • Победитель дней

    12

Весь контент Pax Beach

  1. давай уже ссылку, может там люди что-нить еще рассказывают )
  2. В этом видимо есть какой-то потенциал, если научиться получить DX контекст в качестве устройства для метода ICreateDevEnum
  3. Привожу пример готового FMX приложения, которое рисует на форме с помощью интерфейса IDirect3DDevice9. В примере реализован вызов анонимного метода Present() интерфейса IDirect3DDevice9, имея ссылку на интерфейс и порядковый номер метода. Данная реализация пригодится при установке ловушек (Hooks). Вкратце, суть реализации такая: Объявляю процедурный тип нужного метода type TPresent9 = function(pSourceRect, pDestRect: PRect; hDestWindowOverride: HWND; pDirtyRegion: PRgnData): HResult of object; stdcall; Объявляю переменную этого типа var PPresent: TPresent9; begin ... IntRefToMethPtr(d3d9Dev, PPresent, 17); PPresent(nil, nil, DParametrs.D3DPP.hDeviceWindow, nil); Реализую процедуру получения метода интерфейса по номеру procedure IntRefToMethPtr(const IntRef; var MethPtr; MethNo: Integer); type TVtable = array [0 .. 999] of Pointer; PVtable = ^TVtable; PPVtable = ^PVtable; begin // QI=0, AddRef=1, Release=2, etc TMethod(MethPtr).Code := PPVtable(IntRef)^^[MethNo]; TMethod(MethPtr).Data := Pointer(IntRef); end; А теперь получаем метод интерфейса по его порядковому номеру и вызываем его IntRefToMethPtr(d3d9Dev, PPresent, 17); PPresent(nil, nil, DParametrs.D3DPP.hDeviceWindow, nil); Благодарю за оценку этого решения на StackOverflow. Скачать пример: D3DDemo.zip
  4. Товарищи, как полет с такими настройками, кто пробовал еще?
  5. Еще вопрос — какая версия NDK 32 или 64 bit?
  6. Спасибо, будем тестить на мажорных версиях, как будет время.
  7. Можно плиз последнее поле NDK развернуть? Чем обусловлен выбор платформы android-17 в NDK, при этом в SDK android-25?
  8. Скрины настроек каталогов SDK и NDK пожалуйста
  9. Приведенный класс не корректно работает в полноэкранном режиме. К тому же в режиме DirectX не верно определяется видеоадаптер. Разбираюсь с этим пока.
  10. Поиск — это искусство. Спасибо тебе огромное! Не понимаю, как я мог его не найти.
  11. Мне нужно сделать снимок экрана из своего приложения в приложении DirectX (в игре). По-быстрому накидал приложение, исходники здесь: MakeScreenshot-Forum.zip 1. по нажатию единственной кнопки будет выполнена серия из 16 снимков экрана. Если запущен Скайп, то фотографироваться будет содержимое его окна. 2. По нажатии CTRL+ALT+F9 будет сделан единичный снимок 3. Label внизу показывает сколько миллисекунд затрачено на вывод снимка 4. В комментах так же вы найдете, как работать со снимками через буфер обмена. Работа выполняется через GetDC(NULL); Windows 10 x64. Снимки делаются. И DirectX тоже нормально фотографируется. НО! только в оконных приложениях. Если приложение DirectX полноэкранное, то на всех снимках одна и та же картинка с первого снимка. То есть изменение буфера экрана в приложении ни как не отражается на снимках. Что нужно? Необходимо делать снимки конкретного приложения через интерфейс DirectX, а точнее, я так понимаю, через DirectShow. Тогда не будет разницы в окне оно или на полный экран. Помогите плиз, знающие люди, с решением этой задачи. Гарантирую вам от сообщества большой почет, от меня огромный респект, если это принесет доход, то еще и очень приятный бонус. Ссылки теме: 1. DIRECTX FOR DELPHI 2. unofficial version of DelphiX 3. DirectX для начинающих 4. MinHook - The Minimalistic x86/x64 API Hooking Library 5. Various methods for capturing the screen 6. Вывод графики на рабочий стол Windows с использованием оверлеев DirectX 7. Project JEDI 8. Реализация перехвата вызовов API — исчерпывающе про внедрение DLL, если разобраться, + это на Delphi UPD: 9. Серия видео уроков Пишем D3D-хук — все понятно, только в Delphi перенести нужно. UPD 2: Научился рисовать в Direct3D и ловить интерфейс IDirect3DDevice9. Теперь делаю DLL ловушку для реализации снимков.
  12. Посмотрите класс, реализующий альтернативный Sleep (под катом). соль в следующем: создаем потомка TThread, запускаем, ждем завершения: class function TDelays.Delay(aDuration: integer): TDelay; begin if not Assigned(FList) then FList := TList<TDelay>.Create; Result := TDelay.Create(aDuration); FList.Add(Result); Result.FreeOnTerminate := false; Result.OnTerminate := OnTerminateItem; Result.Start; Result.WaitFor; end; Работаем с ним нежно procedure TDelay.Execute; begin inherited; while (not Terminated) and (MilliSecondsBetween(now, FStart) < FDelay) do begin sleep(100); end; end; По завершении работы убиваем: class procedure TDelays.OnTerminateItem(Sender: TObject); begin TTask.Run( procedure begin try if Assigned((Sender as TDelay)) then begin (Sender as TDelay).Free; FList.Remove((Sender as TDelay)); end; except end; end); end; А можем убить и досрочно: (TObject as TDelay).Free; потому что в деструкторе стоит такой код: destructor TDelay.Destroy; begin Terminate; if (not Suspended) then WaitFor; inherited; end; uDelays.zip
  13. За ответ — зачет, плюсанул на стэке. А права прописаны в Permissions проекта, но для Android 6.0 и выше запрашиваю еще и дополнительно.
  14. В MIUI вообще сервисы Delphi не запускаются. Всем обладателям Xiaomi привет! Отключил энергосбережение, предоставил приложению все привилегии. Смартфон ведет себя как iPhone. Может кто-то знает как это лечится? Redmi 4, Andorid 6.0.1, MIUI Global 8.0.
  15. В итоге, я пересел обратно на съемку фото через TAction. В Берлине 10.1.2 для Android 6+ делаю запрос прав на камеру и доступ к внешнему хранилищу (камера не обязательно, потому что съемка ведется нативным приложением) — все нормально заработало.
  16. Читая примеры гугла, я так понял, что придется лезть в папку library и удалять последнюю фотку, если это сильно нужно.
  17. А показывать сплэш поверх всех элементов до момента полной отрисовки не вариант?
  18. Технически такое возможно, если драйвер Jet позволяет работать с файлами Excel, как с источниками данных без установленного пакета MS Office. Фактически ADODB дергает нужную DLL, которая определяет логику работы с источником.
  19. Положу здесь видео, как сертификаты устанавливать
  20. Сделал пример приложения для работы с Microsoft Word из приложения Delphi. Такое приложение может использоваться для обмена данными между объектами семейства Microsoft Office. Исходные коды приложения помогут вам понять, как работать с объектной моделью Microsoft Word. Чтобы лучше разобраться с нюансами Word, предлагаю ознакомиться со справочником Word VBA reference на MSDN. Проект создан в среде FireMonkey Delphi Berlin 10.1 Протестирован в MS Word 2010, 2016, Windows 7x64 и 10x64. Чтобы посмотреть пример, просто распакуйте zip-файл проекта и щелкайте по порядку кнопки на форме. Скачать Delphi Word Test WordTest.zip
×
×
  • Создать...