![]() |
#1 |
Участник
|
![]()
Приветствую ALL!
В верхнем меню если открыто больше 9 окон появляется пункт "More Windows...", который вызывает окно Select Window. Как можно вызвать это окно из кода? С уважением, wb |
|
![]() |
#2 |
экс-модератор
|
помню, интересовался я эти окном, но ничего не нашел
![]() т.е. пришел к мнению, что если его и можно к-л открыть, то только обратившись к MDI интефейсу через winapi, а я к сожалению, не большой специалист в этой области. (хотел сделать панель задач, навроде как в браузере опера. вы, случайно, не что-либо подобное задумали?) |
|
![]() |
#3 |
Участник
|
Цитата:
Изначально опубликовано maxsmirnov
помню, интересовался я эти окном, но ничего не нашел ![]() т.е. пришел к мнению, что если его и можно к-л открыть, то только обратившись к MDI интефейсу через winapi, а я к сожалению, не большой специалист в этой области. (хотел сделать панель задач, навроде как в браузере опера. вы, случайно, не что-либо подобное задумали?) ![]() |
|
![]() |
#4 |
экс-модератор
|
случайно наткнулся на что-то похожее
в xInfo есть метод activateWindow() судя по контексту (поищите в АОТе "activateWindow") он берет на вход hWnd если получить к-л образом список hWnd всех окон (наверняка же можно, через winapi..???), то можно организовать панель с которой можно будет активировать окна. вот так можно получить хВнд родительского окна клиента аксапты WinAPI::findWindow('AxaptaClientClassName', ''); есть метод static client public HWND findWindowEx(HWND _parent, HWND _after, str _class, str _title) с помощью которого можно получать дочерние окна как его юзать - я не понял... вернее, понял, но не смог применить :) поискав в инете доку на винапишную функцию FindWindowExA которую он юзает, я написал следующий код: PHP код:
хуже того hwnd - это, как правило, довольно большие, 6-значные инты. я попробовал перебором найти то, что примет на вход activateWindow(), и обнаружил, что перебирая числа от 0 до 1000 я преребрал все октрытые у меня на тот момент окна!!! PHP код:
с одной стороны (судя по классу sysCompilerOutput, к примеру) activateWindow берет на вход хвнд, и это работает, с другой стороны опытным путем было найдено окно которой активировалось по activateWindow(906)... если будут к-л результаты - пишите PS. я изменил тему треда в надежде что такая привлечет больше людей :) Уважаемые разработчики! Предлагаю совместно исследовать возможность соорудить в аксапте панель задач! |
|
![]() |
#5 |
Участник
|
|
|
![]() |
#6 |
Участник
|
я создал тестовую форму с одной кнопкой
в init методе PHP код:
запуcкая PHP код:
значит не понятно, что выдает Ваш job на основе Цитата:
Изначально опубликовано maxsmirnov
вот так можно получить хВнд родительского окна клиента аксапты WinAPI::findWindow('AxaptaClientClassName', ''); |
|
![]() |
#7 |
экс-модератор
|
о!
я поставил сканнер окон с http://kickme.to/inqsoft и прозрел ![]() hwnd окон аксапты (окна с пользовательской точки зрения) просто лежат на уровень ниже. остальное - дело техники к сожалению, прямо сейчас у меня нет времени этим заняться, но когда напишу - от общественности скрывать не буду. |
|
|
За это сообщение автора поблагодарили: Logger (3). |
![]() |
#8 |
Administrator
|
Вот, попробовал суммировать все предыдущие знания, не используя WinAPI. Получился такой вот проектик.
Выглядит следующим образом: Основной минус: Отслеживаются только формы. То есть те окна, которые сделаны с использованием FormRun. То есть ни Главное меню, ни проекты отобразить не удалось. Когда-нибудь попробую сделать через WinAPI.
__________________
Not registered yet? Register here! Have comments, questions, suggestions or anything else regarding our web site? Don't hesitate, send them to me |
|
![]() |
#9 |
Administrator
|
Цитата:
WinAPI::findWindow('AxaptaClientClassName', '');
различие между findWindow() и findWindowEx() состоит в том, что первая функция ищет только главные окна, а вторая - только подчиненные главному (для MDI-интерфейса). Таким образом рождается след код: PHP код:
|
|
|
За это сообщение автора поблагодарили: IvanS (1). |
![]() |
#10 |
экс-модератор
|
вот, наваял что-то через winapi...
возникают такие проблемы: 1. как отслеживать открытие/закрытие новых окон? не придумал ничего лучше чем зарядить сканирование в infolog.setTimeOut() с переодичностью раз в секунду... (не реализовал еще ![]() 2. свернутым окнам фокус передается, но они не разворачиваются ![]() в винапи есть метод maximize... он разворачивает на весь экран... ничего похожего на restore не нашел 3. как ни старался, не получилось сделать красиво, как в винде ![]() 4. отображаются скрытые окна. попутно выяснилось что окна infologа, хелпа, итп, никогда не закрываются, а только хайдятся ![]() про FormRun: идеальное решение мне видится как гибрид этих двух подходов. имея FormRun, можно корректно закрывать формы. |
|
![]() |
#11 |
Дмитрий Ерин
|
1. ИМХО, лучше ничего уже и не придумаешь...
2. Есть там RESTORE, просто его не обернули ![]() WinAPI::sendMessageEx(hWnd, #WM_SYSCOMMAND, #SC_RESTORE, 0); 3. Не рановато красоту наводить? ![]() 4. Тут надо покопаться, но навскидку "скрытность" окон, вроде, можно отследить через АПИ-шную ф-цию GetWindowLong(HWND hWnd, int nIndex) P.S. Кстати, о красоте - кнопки схожего назначения (окна проектов, окна редакторов кода, формы, меню) было бы не плохо объединять в менюшки (а-ля XP). |
|
![]() |
#12 |
Участник
|
не стоит ли сделать это win32 приложением, т.к. все равно упремся в ограничения Axapta?
предлагаю накидать кратко пожелания и мысли по реализации сюда: http://erpkb.com/Axapta/Panel'Zadach чтобы иметь компактное представление итогов обсуждения |
|
|
За это сообщение автора поблагодарили: alex55 (1). |
![]() |
#13 |
Участник
|
Цитата:
Изначально опубликовано maxsmirnov
вот, наваял что-то через winapi... возникают такие проблемы: 2. свернутым окнам фокус передается, но они не разворачиваются ![]() в винапи есть метод maximize... он разворачивает на весь экран... ничего похожего на restore не нашел |
|
![]() |
#14 |
Участник
|
Восстановление окна.
WinAPI::showWindow(hWnd,9); Другой вопрос. Почему кнопка после нажатия не работает, пока не нажать другую, а потом обратно эту? Последний раз редактировалось shura_k; 18.04.2006 в 15:48. |
|
![]() |
#15 |
Участник
|
А я пользуюсь вот этой Тулзой. Мне нравится.
|
|
Теги |
winapi, панель задач, инструменты, интерфейс |
|
|