Задать вопрос
  • Как отрисовывать в буфер с прозрачным фоном GDI+?

    HemulGM
    @HemulGM Куратор тега Delphi
    Delphi Developer, сис. админ
    Ты можешь использовать 32 битный bitmap как буфер и рисовать на нём любые фрагменты без фона.
    32-х битный bitmap это как png без сжатия.
    Вот пример. Я рисую на GlassFrame иконки и текст.
    5d819ab98dcea452184807.png
    Ответ написан
    1 комментарий
  • Как сделать запрос в гугл через бота вк?

    HemulGM
    @HemulGM
    Delphi Developer, сис. админ
    ВК бот тебе здесь зачем?
    Вот ты получил команду от пользователя в боте. Забираешь чистый запрос пользователя из команды. Делаешь запрос в гугл поиске, парсишь ответ как ты этого хочешь и отправляешь через бота.
    Ответ написан
    1 комментарий
  • Как вы чините (чинили) неработающие программы у пользователей?

    HemulGM
    @HemulGM Куратор тега Windows
    Delphi Developer, сис. админ
    У тебя такой же правильный подход как и у всех. Только нужно чуть больше опыта. Твой случай, нужно было решать так:
    1. Какие действия сопровождают проблему? - Печать.
    1.1 Можно проверить, есть ли проблема с печатью (отдельно), но не всегда воспроизводится. PDF может печататься не только как "картинка". - Не обязательный пункт.
    2. Что может повесить процесс? - Более важный процесс или поток от которого зависит исполнение.
    3. Это какой процесс? Раз связано с печатью, значит скорее всего процесс (в данном случае и точнее - служба).
    4. Сам по себе процесс печати (если перезапуск компа/процесса не помог) не может повесить процесс просто так. Процесс печати зависит от сторонних драйверов на принтер. Исправляем проблемы с драйвером на принтер. Профит.

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

    Жаль, что такое нельзя автоматизировать. Я писал себе инструмент, позволяющий быстрее решать проблемы связанные с чисткой и очисткой от дерьма винды.
    Ответ написан
    Комментировать
  • Как скрыть факт RDP сеанса?

    HemulGM
    @HemulGM
    Delphi Developer, сис. админ
    Он именно и работает как сеанс, в отличии от TeamViewer, AmmyAdmin или RAdmin.
    Проблема в том, что используется иной графический драйвер и вся графика обрабатывается программно. И только это видят программы. И работают часто криво.

    А выше упомянутые софтины уд. доступа лишь транслируют картинку.
    Ответ написан
    Комментировать
  • Delphi Async Callable?

    HemulGM
    @HemulGM Куратор тега Delphi
    Delphi Developer, сис. админ
    Если хочешь синхронизировать потоки из метода, то используй
    TThread.Synchronize(<method>);
    Ответ написан
    Комментировать
  • Как создается нестандартный интерфейс для программ?

    HemulGM
    @HemulGM Куратор тега Windows
    Delphi Developer, сис. админ
    Достаточно иметь прямые руки и немного знаний основ WinAPI.
    Например, как кто-то выше говорил, что мол есть сторонние компоненты и прочее, которые позволяют...и так далее, в отличие от таких "специалистов", я категорически отношусь к сторонним решениям, т.к. эти решения зачастую ограничены и/или в добавок ко всем проблемам могут добавить багов и зависимости, например как Qt.
    Я всегда делаю интерфейс самостоятельно, используя только стандартные методы. А обрезка окна - это тоже стандартная функция WinAPI.
    Вот несколько примеров того, как я делаю
    spoiler
    5d617239111ff438884411.png
    5d6172933e884055572121.png
    5d6172a4aefa9279769834.png
    5d6172b360d71811082641.png
    5d6172c156ea6526964624.png
    5d6172cb6f99a252682371.png
    5d6173e60bcb8336468424.png

    Ни в одной из этих программ, я не использую никакие сторонние компоненты (за исключением своих собственных).
    Ах, да. Ну и сделано это всё на старом добром Delphi.

    Помимо этого в Delphi есть кроссплатформенный фреймворк, позволяющий создавать чрезвычайно красивый софт, т.к. в нём доступна отрисовка на GPU, анимация и гибкая визуальная стилизация.
    Ответ написан
    Комментировать
  • Возможно ли сделать полный RDP?

    HemulGM
    @HemulGM Куратор тега Windows
    Delphi Developer, сис. админ
    RDP это не просто удаленный доступ, как например это делают TeamViewer, AmmyAdmin, Radmin и прочие. RDP работает по другому принципу и перебросить видеокарту у вас никак не получится. Звук и микрофон должны работать, видимо у вас просто проблемы.
    Рекомендую использовать TW, и видимо либо крякнутый, либо купить лицензию.
    А по поводу RDP.
    Прямой доступ хоть откуда тебе должен обеспечивать провайдер, дав тебе белый ip адрес. Настроив роутер, на проброс портов ты подключишься к компу хоть откуда. И никакого сервера поднимать не нужно.
    Также, если создать два пользователя на компе, то ты сможешь работать на этом компе одновременно с кем-то другим пользователем. Чего кстати невозможно сделать не с RDP. Т.к. для него создаётся полноценная сессия и т.д.
    VPN поднимается в том случае, если тебе нужна сеть, а не отдельный комп. Для VPN сервера тебе также нужен будет белый ip адрес. Или какие-то замароченные VPN с клиентом на компе.
    Ответ написан
    Комментировать
  • Можно ли оптимизировать этот запрос?

    HemulGM
    @HemulGM
    Delphi Developer, сис. админ
    Можно, наверное. Попробуй получить план выполнения запроса и посмотреть, где полные выборки и можно ли их избежать, если они выполняются несколько раз. Также, использовать индексацию.
    Ответ написан
    1 комментарий
  • Как создать бота ВКонтакте для страницы?

    HemulGM
    @HemulGM
    Delphi Developer, сис. админ
    Создаешь на странице вк standalone-приложение. С его помощью получаешь токен. Пишешь запросы используя VK API. Всё просто. Только в последнее время ВК API не особо любит работу с сообщениями пользователей.
    Тебе не нужны библиотеки, достаточно отправлять запросы на сервер и получать ответ. Ответы в формате JSON (вот для них только нужна библиотека).

    Если чуть глубже, то тебе нужен стандартный GET/POST запрос через HTTP, в теле запроса - параметры: ид юзера и т.д. Ах, да ну и желательно использовать OAuth2 аутентификацию. Т.е. Открывать страницу встроенного браузера для авторизации в ВК и получения токена.
    Ответ написан
    Комментировать
  • Какой использовать движок и может есть курсы, книги по данному движку для создания элементарной спрайтовой игры?

    HemulGM
    @HemulGM Куратор тега Delphi
    Delphi Developer, сис. админ
    Я тут занимался немного. Осталось добавить загрузку изображений в ID2D1Bitmap

    GitHub
    procedure TFormMain.FormCreate(Sender: TObject);
    begin
      Engine := TD2EngineCore.Create(800, 600);
      Engine.LoopedWorld := True;
      Engine.CreateTest;
      Engine.Run;
    end;
    
    procedure TFormMain.FormDestroy(Sender: TObject);
    begin
      Engine.Free;
    end;
    
    procedure TFormMain.FormPaint(Sender: TObject);
    begin
      Canvas.StretchDraw(ClientRect, Engine.Buffer);
    end;
    
    procedure TFormMain.FormResize(Sender: TObject);
    begin
      Canvas.StretchDraw(ClientRect, Engine.Buffer);
    end;
    
    procedure TFormMain.TimerRepaintTimer(Sender: TObject);
    begin
      Invalidate;
    end;
    Ответ написан
    Комментировать
  • Как сделать, чтобы не всплывало предупреждение безопасности Windows?

    HemulGM
    @HemulGM Куратор тега Delphi
    Delphi Developer, сис. админ
    SilentMode у компонента установи в True.
    Ответ написан
    5 комментариев
  • Как скачать файл с инета не используя Indy?

    HemulGM
    @HemulGM Куратор тега Delphi
    Delphi Developer, сис. админ
    THTTPClient в System.Net.HttpClient.
    function DownloadURL(URL: string): TMemoryStream;
    var
      HTTP: THTTPClient;
    begin
      Result := TMemoryStream.Create;
      HTTP := THTTPClient.Create;
      try
        try
          HTTP.HandleRedirects := True;
          HTTP.Get(URL, Result);
        except
          //Ну, ошибка... Поток всё равно создан и ошибки не должно возникнуть,
          //если проверить размер потока перед его использованием
        end;
      finally
        HTTP.Free;
      end;
    end;
    Ответ написан
    Комментировать