AXForum  
Вернуться   AXForum > Microsoft Dynamics AX > DAX: Программирование
All
Забыли пароль?
Зарегистрироваться Правила Справка Пользователи Сообщения за день Поиск

 
 
Опции темы Поиск в этой теме Опции просмотра
Старый 25.10.2007, 16:20   #1  
korolf76 is offline
korolf76
Участник
Ex AND Project
 
36 / 12 (1) ++
Регистрация: 26.10.2004
Адрес: Петербург
Копия экрана
Задача: нужно сохранить в графический файл изображение заданной формы.

Есть простой джобик:

X++:
static void tutorial_Capture(Args _args)
{
    FormName name = FormStr(Address);
    Image   image   = new Image();
    Args    args    = new Args(name);
    FormRun formRun = new FormRun(args);
    ;

    formRun.init();
    formRun.run();
    formRun.detach();

    image.captureWindow(formRun.hWnd());
    image.saveImage("C:\\" + name + ".jpg", ImageSaveType::JPG);
    formRun.close();
}
В 3.0 работает нормально (проверялось в 2х звенке и в случае тонкого клиента). В 4.0 отрабатывает с багом : некорректно сохраняется содержимое формы.
Старый 25.10.2007, 16:32   #2  
blokva is offline
blokva
Пенсионер
Аватар для blokva
SAP
NavAx Club
 
743 / 167 (7) ++++++
Регистрация: 04.06.2003
Адрес: Беларусь
По моему это связано с моим вопросом по иконке. Я тут уперся, что здесь окна рисуются с использованием "Windows Forms" для которых WinAPI не работает....
__________________
Законы природы еще никто не отменял!
А еще у меня растет 2 внучки!!! Кому интересно подробности тут:
http://www.baby-shine.com/
Старый 25.10.2007, 16:38   #3  
korolf76 is offline
korolf76
Участник
Ex AND Project
 
36 / 12 (1) ++
Регистрация: 26.10.2004
Адрес: Петербург
Если вживить код, по снятию скриншота например перед методом close формы, и самому открыть и закрыть форму, то все нормально. В файле появляется копия экрана.
Старый 25.10.2007, 16:44   #4  
mazzy is offline
mazzy
Участник
Аватар для mazzy
Лучший по профессии 2015
Лучший по профессии 2014
Лучший по профессии AXAWARD 2013
Лучший по профессии 2011
Лучший по профессии 2009
 
29,472 / 4494 (208) ++++++++++
Регистрация: 29.11.2001
Адрес: Москва
Записей в блоге: 10
Цитата:
Сообщение от korolf76 Посмотреть сообщение
Задача: нужно сохранить в графический файл изображение заданной формы.
Решение: см. форму tutorial_Form_Capture
__________________
полезное на axForum, github, vk, coub.
Старый 25.10.2007, 16:57   #5  
EVGL is offline
EVGL
Banned
Соотечественники
Лучший по профессии 2017
Лучший по профессии 2015
Лучший по профессии 2014
 
4,445 / 3001 (0) ++++++++++
Регистрация: 09.07.2002
Адрес: Parndorf, AT
Цитата:
Сообщение от mazzy Посмотреть сообщение
Решение: см. форму tutorial_Form_Capture
В 4.0 такой нет, человек пишет же. Может, неспроста ее больше нет?
Старый 25.10.2007, 16:59   #6  
korolf76 is offline
korolf76
Участник
Ex AND Project
 
36 / 12 (1) ++
Регистрация: 26.10.2004
Адрес: Петербург
Правильно, ее больше нет! Пришлось ее перенести и подкрутить. Но все равно нормально не зажило. В результате на основе этой формы и был сделан этот джоб (выбор произвольной формы и прочий интерфейс отброшены)
Старый 25.10.2007, 17:02   #7  
mazzy is offline
mazzy
Участник
Аватар для mazzy
Лучший по профессии 2015
Лучший по профессии 2014
Лучший по профессии AXAWARD 2013
Лучший по профессии 2011
Лучший по профессии 2009
 
29,472 / 4494 (208) ++++++++++
Регистрация: 29.11.2001
Адрес: Москва
Записей в блоге: 10
о... я тормоз.
извините.
__________________
полезное на axForum, github, vk, coub.
Старый 25.10.2007, 18:00   #8  
belugin is offline
belugin
Участник
Аватар для belugin
Сотрудники Microsoft Dynamics
Лучший по профессии 2017
Лучший по профессии 2015
Лучший по профессии 2014
Лучший по профессии 2011
Лучший по профессии 2009
 
4,622 / 2925 (107) +++++++++
Регистрация: 16.01.2004
Записей в блоге: 5
Мне кажется, просто форма не успевает отрисоваться
Старый 25.10.2007, 18:07   #9  
belugin is offline
belugin
Участник
Аватар для belugin
Сотрудники Microsoft Dynamics
Лучший по профессии 2017
Лучший по профессии 2015
Лучший по профессии 2014
Лучший по профессии 2011
Лучший по профессии 2009
 
4,622 / 2925 (107) +++++++++
Регистрация: 16.01.2004
Записей в блоге: 5
Ожидание спёрто из табакса, оригинальный автор кода - самый одобряемый пользователь этого форума

X++:
void captureForm(FormName name)
{
    Image   image   = new Image();
    Args    args    = new Args(name);
    FormRun formRun = new FormRun(args);
    int i;
    DLLFunction peekMessage;
    DLLFunction TranslateMessage;
    DLLFunction dispatchMessage;
     Binary msg = new Binary(30);
    DLL user32;
   ;
    user32             = new DLL('USER32');
   peekMessage     = new DLLFunction(user32, 'PeekMessageA');
   TranslateMessage= new DLLFunction(user32, 'TranslateMessage');
   dispatchMessage = new DLLFunction(user32, 'DispatchMessageA');
    peekMessage.arg(ExtTypes::POINTER, ExtTypes::DWORD, ExtTypes::DWORD, ExtTypes::DWORD, ExtTypes::DWORD);
    peekMessage.returns(ExtTypes::DWord);

    TranslateMessage.arg(ExtTypes::Pointer);
    TranslateMessage.returns(ExtTypes::DWORD);

    dispatchMessage.arg(ExtTypes::Pointer);
    dispatchMessage.returns(ExtTypes::DWord);

    // Open and show the form
    formRun.init();
    formRun.run();

     for (i=1;i<=20;i++)
           if (peekMessage.call(msg, 0, 0, 0, 1))
           {
               TranslateMessage.call(msg);
               dispatchMessage.call(msg);
           }
    // Take a screenshoot of the form
    image.captureWindow(formRun.hWnd());
    image.saveType(ImageSaveType::JPG);
    // reduce the colors (bits/pixel)
    //image.reduceColorOctree(FALSE,256);
    //image.reduceColorOctree(256);

    // Save it as bitmap
    image.saveImage(element.getSaveName(name));
}
Старый 25.10.2007, 18:17   #10  
korolf76 is offline
korolf76
Участник
Ex AND Project
 
36 / 12 (1) ++
Регистрация: 26.10.2004
Адрес: Петербург
Спасибо! Решение принимается!
Теги
ax3.0, ax4.0, dll, dllfunction, winapi, законченный пример, скриншот

 

Похожие темы
Тема Автор Раздел Ответов Посл. сообщение
Получить снимок части экрана rader DAX: Программирование 11 14.01.2008 14:17
Ширина формы больше чем ширина экрана belugin DAX: Программирование 5 07.12.2005 15:56
Оригинал и копия документа treeny DAX: Функционал 3 15.08.2005 17:46
Как убрать окно с экрана ? Swetik DAX: Функционал 7 26.08.2004 17:49
Обновление экрана Аксапты во время выполнения приложения ddadream DAX: Программирование 15 29.05.2003 12:53

Ваши права в разделе
Вы не можете создавать новые темы
Вы не можете отвечать в темах
Вы не можете прикреплять вложения
Вы не можете редактировать свои сообщения

BB коды Вкл.
Смайлы Вкл.
[IMG] код Вкл.
HTML код Выкл.
Быстрый переход

Рейтинг@Mail.ru
Часовой пояс GMT +3, время: 14:46.