Однозодачность и скрытие стандартных кнопок окна

Clarion, Clarion 7

Модератор: Дед Пахом

Правила форума
При написании вопроса или обсуждении проблемы, не забывайте указывать версию Clarion который Вы используете.
А так же пользуйтесь спец. тегами при вставке исходников!!!
Ответить
Гость

Сообщение Гость »

Привет Всем !

Подскажите пож-ста пример вызова ф-и API по блокировке стандартных кнопок окна "развернуть" и "свернуть в окно"

Причина, нужно обеспечить однозадачное выполнение программы, чтобы фокус окна не уходил на другую задачу. кнопку сворачивания в иконку я уже заблокировал, панель задач скрыл, а с этим вожусь....

Было бы интересно узнать мнение уважаемого сообщества кто как решает такую проблему...

Спасибо

Сергей
Сочи

(Добавление)

Убери атрибут system у окна и не будет кнопок, и даже крестиика "закрыть" не будет!

--
Best regards,
Чаплыгин mailto:chapligin@fromru.com

Спасибо за оперативный отклик, но я имею ввиду главное(Frame) окно програмы, там такая штука не проходит. Более того, я наконец-то скрыл и кнопки "развернуть"(maximize) и "свернуть в окно", однако, если щелкнуть мышью по заголовку окна, то оно все равно сворачивается, а развернуть-то уже нечем (кнопки нет), осталось заблокировать мышь

Причина всего этого: в магазине пользователь работает со сканером штрих-кодов, подключенных в разрыв клавиатуры, и умудряется потерять фокус окна вначале свернув окно, а потом щелкнув мышью куда попало.
В связи с тем, что работают женщины далеко за ..... лет, то объяснение, что вы щелкаете сканером при неактивном окне не помогает.
Если подменить Shell и вместо explorer.exe поставить свою программу, то все хорошо, до момента завершения программы, а дальше надо делать Shutdown Windows (может у кого есть пример вызова оной API-функции)

А может кто еще как этло реализует ?

Заранее благодарен за подсказку,
Сергей

Перехватывай и отменяй Event:Suspend, Event:CloseWindow, Event:CloseDown. Но этот способ я сам не пробовал, могут быть проблемы.

Есть и очень надёжный способ, но требует знания C++ и API: пишешь аппликуху (из 100 строк), которая сидит в трее и каждую 1/1000 секунды проверяет фокус. Если фокус не там - сама возвращает куда надо. Это проверено и работает, но поделиться исходником не могу. Ищи в MSDN.

Александр Агеев (aageev@satren.ru)
Написал: ClaList(2)
Гость

Сообщение Гость »

А cycle в обработке событий event:restore,event:maximize,event:iconize не то? Правда, если ты ШВС, то для фрейма для соответствующих событий код не предусмотрен, поэтому нужно вставить в точке обработки прочих событий окна:

Код: Выделить всё

if event()=event:iconize
   cycle
end
С уважением,
Вячеслав Черников support@finsoft.ryazan.ru

(Добавление)

А можно более детально задачу обрисовать?
Мы как-то пробовали делать однозадачные станции под w98. Ставили 98 с помощью утилиты 98Lite или как-то похоже и подменяли Explorer своей программой. В результате вообще ничего другого запустить на той машине при этом варианте загрузки было нельзя.

С уважением,
Владимир Смелик vovs@bigfoot.com
Написал: ClaList(2)
Гость

Сообщение Гость »

rundll user.exe,exitwindows - выключение компьютеpа
rundll user.exe,exitwindowsexec - выход из Виндов к коммандную стpоку
rundll user.exe,restart - пеpезагpузка компьютеpа
rundll user.exe,restartwindows - пеpезагpузка только виндов

Команды управления Windows, использующие RUNDLL32. Hадо вводить сначала
rundll32, а затем через пробел её параметры. При вводе 32-битной
управляющей (shell32) необходимо обращать внимание на заглавные буквы.

rundll32 user,wnetdisconnectdialog - Окно "Откл сетевого диска" Вызвать
rundll32 user,disableoemlayer - Сбой пpовоциpовать
rundll32 user,repaintscreen - Обновить (как <F5>)
rundll32 user,setcursorpos - Maus-Cursor слева ввеpх посадить
rundll32 diskcopy,DiskCopyRunDll - Окно "Copy Disk" вызвать
rundll32 rnaui.dll,RnaWizard /1 - Диалог "Уст Связи" вызвать (/1 = без
окна)
rundll32 shell,shellexecute - Explorer-Окно откpыть в коpневом каталоге
rundll32 shell32,OpenAs_RunDLL - Окно "Откpыть с помощью..." вызвать
rundll32 shell32,SHFormatDrive - Окно "Фоpматиpование: Диск3,5(А)"
вызвать
rundll32 shell32,ShellAboutA - Info-Box (о Windows) вызвать
rundll32 shell32,SHExitWindowsEx 0 - Win98 сновa стаpтанyть (без
autoexec)
rundll32 shell32,SHExitWindowsEx 1 - Работy с Windows 98 закончить
rundll32 shell32,SHExitWindowsEx 2 - Windows-98-PC boot
rundll32 shell32,SHExitWindowsEx -1 - Win98-Explorer стаpтанyть заново
rundll32 shell32,Control_RunDLL - Откpыть окно "Панель yпpавления"
rundll32 shell32,Control_RunDLL desk.cpl - Откpыть "Свойства Экpана"
rundll32 shell32,Control_RunDLL main.cpl - Откpыть Панели yпpавления
rundll32 krnl386.exe,exitkernel - выход из Win без любых
сообщений/вопpосов
rundll32 user,swapmousebutton - "Пеpеставить" клавиши мыши
rundll32 keyboard,disable - "Отключить" клавиатypy
rundll32 mouse,disable - "Отключить" мышь
rundll rnaui.dll,RnaDial "пpовайдеp" - Вызвать окно "Устaнoвкa связи"
rundll32 user,tilechildwindows -выстpоить все не свёpнyтые окна свеpхy
вниз
rundll32 user,cascadechildwindows -выстpоить все не свёpнyтые окна
каскадом
rundll32 sysdm.cpl,InstallDevice_Rundll - yстановить non-Plug&Play
обоpyд.
rundll32 msprint2.dll,RUNDLL_PrintTestPage - выбpать в меню пpинтеp и
послать а него тест
rundll32 user,setcaretblinktime <n> - yстановить новyю частотy мигания
<n> кypсоpа
rundll32 user, setdoubleclicktime <n> - yстановить новyю скоpость <n>
двойного нажатия *
rundll32 setupx.dll,InstallHinfSection DefaultInstall 130; C:\file.inf
окно "Пеpезапyск системы. Пpоизвести её сейчас ? ћ Да/нет ћ"

Vlad V. Shmel vovs@lemoi.phys.dvgu.ru

Hello Serg,
Посмотри на http://www.par2.com (в downloads) пример аппликухи, не теряющей фокус (CoverMe)

--
Best regards,
morkovin mailto:morkovin@interdacom.ru
Волгоград
Написал: ClaList(2)
Гость

Сообщение Гость »

А может кто еще как этло реализует ?
Построй приложение по другому.
Избавься от Frame(как раньше в досе CPD 2 была такая процедура Menu называлась, кажется).
У нас аналогичная программа сделана именно так ,еще никто на это дело не жаловался.

--
Благодарень за терпение и понимание,
Ravenous mailto:gottmituns@mail.ru
Написал: ClaList(2)
Гость

Сообщение Гость »

В Кларе 6.1 есть темплайт CDI меню Замени Frame на него
Думаю это поможет

С уважением
Виктор
vlenkov@mail.ru

Написал: Виктор(10)
Ответить