Привет Всем !
Подскажите пож-ста пример вызова ф-и 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)
Однозодачность и скрытие стандартных кнопок окна
Модератор: Дед Пахом
Правила форума
При написании вопроса или обсуждении проблемы, не забывайте указывать версию Clarion который Вы используете.
А так же пользуйтесь спец. тегами при вставке исходников!!!
При написании вопроса или обсуждении проблемы, не забывайте указывать версию Clarion который Вы используете.
А так же пользуйтесь спец. тегами при вставке исходников!!!
А cycle в обработке событий event:restore,event:maximize,event:iconize не то? Правда, если ты ШВС, то для фрейма для соответствующих событий код не предусмотрен, поэтому нужно вставить в точке обработки прочих событий окна:
С уважением,
Вячеслав Черников support@finsoft.ryazan.ru
(Добавление)
А можно более детально задачу обрисовать?
Мы как-то пробовали делать однозадачные станции под w98. Ставили 98 с помощью утилиты 98Lite или как-то похоже и подменяли Explorer своей программой. В результате вообще ничего другого запустить на той машине при этом варианте загрузки было нельзя.
С уважением,
Владимир Смелик vovs@bigfoot.com
Написал: ClaList(2)
Код: Выделить всё
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)
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)
Думаю это поможет
С уважением
Виктор
vlenkov@mail.ru
Написал: Виктор(10)