Страница 1 из 1
как открыть окно втихую?
Добавлено: 06 Май 2009, 8:23
vd-vuf
незнаю, может вопрос банальный
научите как открыть окно "MDI Child" втихую

суть.. например, есть приложение в нем масса процедур "Process"
когда запускается процесс окно процесса становится активным что естественно, но напрягает.
Приложение висит в трее, запустило отработку задач (около сотни процессов)
в это время в винде работать невозможно фокус выпрыгивает с активного окна (например с ворда или с той же клаши),
приходится брать мышу и тыкать, чтоб вернуть фокус обратно.
Re: как открыть окно втихую?
Добавлено: 06 Май 2009, 9:09
Игорь Столяров
vd-vuf писал(а):запустило отработку задач (около сотни процессов)
Может быть я Вас огорчу, но RunTime Clarion поддерживает до 64 процессов.
С другой стороны - а что мешает:
1. В окне процесса установить аттрибут ToolBox - тогда на него фокус не будет переводится.
2. Даже если фокус переводится - можно запомнить номер потока текущего окна и принудительно вернуть его обратно.
Это обсуждалось - поройся в форуме.
Re: как открыть окно втихую?
Добавлено: 06 Май 2009, 10:08
vd-vuf
Игорь Столяров писал(а):vd-vuf писал(а):запустило отработку задач (около сотни процессов)
Может быть я Вас огорчу, но RunTime Clarion поддерживает до 64 процессов.
С другой стороны - а что мешает:
1. В окне процесса установить аттрибут ToolBox - тогда на него фокус не будет переводится.
2. Даже если фокус переводится - можно запомнить номер потока текущего окна и принудительно вернуть его обратно.
Это обсуждалось - поройся в форуме.
устарели ваши цифры

это было до с6, я вас удивлю
Код: Выделить всё
The maximum number of simultaneously available execution threads in a single application is theoretically unlimited. However, the word "unlimited" means that limits are applied not by the Clarion Runtime Library, but by the Operating System’s environment settings, i.e., limited to the amount of virtual memory available for the process, or limited number of threads in the system, or limited number of windows (including controls) that can be opened simultaneously in the process, etc. Therefore, THREAD always returns a value in the range of one (1) to the upper limit of the SIGNED integer (2,147,483,647).
ну и потом я ж неговорию что все процессы одновременно
с ToolBox поэксперементирую
Re: как открыть окно втихую?
Добавлено: 06 Май 2009, 10:22
Игорь Столяров
Спасибо - буду знать ...
С другой стороны у меня есть программа в которой плодятся мелкие процессы и выполняют обработку.
В общем-то все работает где-то до 25-35 процессов одновременно, потом начинаются жуткие тормоза, которые рано или поздно заканчиваются GPF. Причем не зависимо от кол-ва оперативной и виртуальной памяти. Поэтому указанные в описании цифры все-таки следует воспринимать как теоритические лозунги ...

Re: как открыть окно втихую?
Добавлено: 06 Май 2009, 12:38
StillZero
варианты. но не точные, проверять надо
1. перед "показом" окна 0{Prop:Hide} = TRUE, хз поможет или нет
2. перед открытием окна берем через API GetForegroundWindow() (оно вроде), а после возращаем фокус на место.. SetForegroundWindow
3. стиль скорее всего есть какой нибудь у окна, чтобы фокус не получать... в принципе это тот же вариант, что и тулбокс
Re: как открыть окно втихую?
Добавлено: 06 Май 2009, 14:56
vd-vuf
ToolBox - мертвому припарки, при откртытии такого окна, не оно само дак фрейм получает фокус

до открытия окна 0{Prop:Hide} = TRUE просто делает невидимым фрейм
QuickWindow{PROP:Hide} = True - до открытия, бесполезно, после открытия - уже позно
не хотелось связываться с api

Re: как открыть окно втихую?
Добавлено: 07 Май 2009, 8:48
Игорь Столяров
vd-vuf писал(а):не оно само дак фрейм получает фокус
О боже ... Там еще и фрейм ... ?
Может быть тогда есть смысл запускать потоки вообще без открытия окон - зачем они если программа свернута в область уведомления ? Или снять с этих окон признак MDI. У меня потоки запускаются как простые процедуры Source - выгребают данные с FTP раздела, формируют отчеты в OO Calc и рассылают их по e-mail. Программа находится трее (или как служба Windows) и активизируется по таймеру. Никаких переводов фокуса на нее нет, да и быть не может - работает уже года 3-4 .... Даже наоборот, помню юзеры просили сделать смену значка когда программа работает - иначе непонятно работает она вообще или нет ...

Re: как открыть окно втихую?
Добавлено: 07 Май 2009, 9:52
vd-vuf
Игорь Столяров писал(а):vd-vuf писал(а):не оно само дак фрейм получает фокус
О боже ... Там еще и фрейм ... ?
что то непонял, использовать фрейм это дурной тон?
переделать процессы на сурце это конечно был бы выход
переделать шалблон процесса тоже наверное выход
но все это как то через то самое место
ситуация похжа на - есть дырявая лодка, вместо того чтобы заделать дыру, черпаем воду.
а вообще конечно спрашивал с надеждой что у когонибудь есть мягкое решение
принудительное передергивание фокуса с помощью api эт тоже про дырявую лодку

всем спасиба за советы

таки придется что то соображать с шаблоном
Re: как открыть окно втихую?
Добавлено: 07 Май 2009, 10:12
Игорь Столяров
Поройтесь в форуме - точно помню, что вопрос переключения фокуса между приложениями обсуждался.
Только немного в другом контесте - при повторном запуске приложения, блокировать запуск и переключать фокус на уже работающую копию приложения.
Ну а насчет переделки процессов - то по Вашей аналогии: нужно иногда вылазить из лодки, и искать другие способы передвижения. Особенно если вместо воды уже давно приходится из лодки вычерпывать песок ...
