007wan |
Отправлено: 16 Декабря, 2019 - 15:23:07
|
Эксперт
Покинул форум
Сообщений всего: 1837
Дата рег-ции: Март 2017
Репутация: -2
|
Zireael пишет: Создал диалоговое окно (createdialog) и в этом же процессе можно вывести миниатюру любого окна на созданный диалог. КАК?
CODE:DwmRegisterThumbnail(formatwi(Main_Window), formatwi(Game), address(#ThumbnailId)); Так не работает |
|
|
Zireael |
Отправлено: 16 Декабря, 2019 - 15:52:32
|
Эксперт
Покинул форум
Сообщений всего: 4461
Дата рег-ции: Нояб. 2017
Репутация: 585
|
Цитата: КАК?
В этой теме полно примеров.
Цитата: DwmRegisterThumbnail(formatwi(Main_Window), formatwi(Game), address(#ThumbnailId));
Так не работает
И не должно.
createdialog(0) и DwmRegisterThumbnail(gethwnd(0)...) должны вызываться в одном кибор или одном exe.
Нельзя в одном кибор создать окно, а в другом указать это окно для вывода миниатюры. |
|
|
Zireael |
Отправлено: 16 Декабря, 2019 - 16:15:38
|
Эксперт
Покинул форум
Сообщений всего: 4461
Дата рег-ции: Нояб. 2017
Репутация: 585
|
Цитата: А visualwindow так сможет?
Визуал в любые окна выводит, но он жрёт много ресурсов. Попробуй вывести несколько визуалов одновременно и посмотри на загрузку проца.
Цитата: и так программа лагает, а еще пихать миниатюры
Вывод миниатюры никак не повлияет. Запусти скрипт из первого поста и посмотри на сколько % кибор грузит проц. |
|
|
007wan |
Отправлено: 16 Декабря, 2019 - 16:52:31
|
Эксперт
Покинул форум
Сообщений всего: 1837
Дата рег-ции: Март 2017
Репутация: -2
|
Поверю на слово,не повлияет,но я имел ввиду не только повлияет на загруженеость процца,но и на обработку кода Кибором-это главное.
Визуал работает как надо со слов,давтра проверю на щагруженность.
Миниатюра не годиться потому что она не выводит с другой exe на другой диалог, если ты что-нибудь придумаешь, то поссотрим что выйдет,а так главное визуал работает как надо и все, миниатюра не нужна получается,а жаль, красивый код и качество вывода, и не лагает надеюсь. У меня комп за 70к, я наверное не замечу разницу в цп.
*пишу с теле, ошибки не берите во внимание |
|
|
neba2101 |
Отправлено: 31 Октября, 2022 - 13:58:36
|
Мастер
Покинул форум
Сообщений всего: 154
Дата рег-ции: Февр. 2017
Репутация: 4
|
Zireael пишет: Вывод миниатюры окна на диалог (Отобразить)CODE:#define DWM_TNP_RECTDESTINATION 1
#define DWM_TNP_RECTSOURCE 2
#define DWM_TNP_OPACITY 4
#define DWM_TNP_VISIBLE 8
#define DWM_TNP_SOURCECLIENTAREAONLY 16
external(INT, "DwmRegisterThumbnail", "DwmRegisterThumbnail", "Dwmapi.dll");
external(INT, "DwmUpdateThumbnailProperties", "DwmUpdateThumbnailProperties", "Dwmapi.dll");
win w=window ("Program Manager", "Progman", -1); // окно, с которого нужно получить изображение (главное окно, не контрол)
if(w)
{
createdialog(0);
loop()sleep(10);
}
else messagebox("Окно не найдено");
function getmessage(0, WM_CREATE)
{
showdialog(0, "Диалог", 0, 0, w.width/3, w.height/3+30, 1, 1);
int rect[4] = {0, 0, w.width/3, w.height/3} // какого размера вывести изображение на диалог
//int rect_source[4] = {100, 200, 700, 537} // координаты откуда получить изображение (если нужно)
char transparency_ = 255; // прозрачность от 0 до 255
int ThumbnailId;
char DWM_THUMBNAIL_PROPERTIES[40];
writeaddress(// флаги
DWM_TNP_SOURCECLIENTAREAONLY // выводить клиентскую область, иначе всё окно
| DWM_TNP_VISIBLE // миниатюра видима
| DWM_TNP_OPACITY // прозрачность
| DWM_TNP_RECTDESTINATION // какого размера выводить изображение
//| DWM_TNP_RECTSOURCE // какого размера получать изображение
, address(#DWM_THUMBNAIL_PROPERTIES[0]));
writeaddress(rect[0], address(#DWM_THUMBNAIL_PROPERTIES[4]));
writeaddress(rect[1], address(#DWM_THUMBNAIL_PROPERTIES[8]));
writeaddress(rect[2], address(#DWM_THUMBNAIL_PROPERTIES[12]));
writeaddress(rect[3], address(#DWM_THUMBNAIL_PROPERTIES[16]));
//writeaddress(rect_source[0], address(#DWM_THUMBNAIL_PROPERTIES[20])); // если нужно получить изображение части окна
//writeaddress(rect_source[1], address(#DWM_THUMBNAIL_PROPERTIES[24]));
//writeaddress(rect_source[2], address(#DWM_THUMBNAIL_PROPERTIES[28]));
//writeaddress(rect_source[3], address(#DWM_THUMBNAIL_PROPERTIES[32]));
DWM_THUMBNAIL_PROPERTIES[36]=transparency_;
DWM_THUMBNAIL_PROPERTIES[37]=1;
DWM_THUMBNAIL_PROPERTIES[38]=1;
int x=DwmRegisterThumbnail(gethwnd(0), formatwi(w), address(#ThumbnailId));
//messagebox(x);
if(x==0)
{
int y=DwmUpdateThumbnailProperties(ThumbnailId, address(#DWM_THUMBNAIL_PROPERTIES[0]));
//messagebox(y);
}
}
В отличии от visualwindow меньше теряется качество при сжатии.
Здравствуйте, как сделать чтобы после закрытия окна, на которое идет вывод изображения, не останавливалось выполнение основного скрипта? |
|
|
Zireael |
Отправлено: 31 Октября, 2022 - 14:01:26
|
Эксперт
Покинул форум
Сообщений всего: 4461
Дата рег-ции: Нояб. 2017
Репутация: 585
|
Цитата: как сделать чтобы после закрытия окна, на которое идет вывод изображения, не останавливалось выполнение основного скрипта?
showdialog 7й параметр.
Цитата: седьмой: 0 - при нажатие крестика (закрыть) скрывает окно. вызвать его можно опять только программно. 1 -при нажатие крестика (закрыть) останавливает скрипт. 2 - при нажатие крестика (закрыть) сворачивает окно, 3 - при нажатие крестика закрывает программу, 4 - при нажатие на крестик данное действие игнорируется и можно обработать сообщение WM_CLOSE. |
|
|
|