Top.Mail.Ru
Мастера DELPHI, Delphi programming community Титульная страница Поиск, карта сайта Написать письмо 
| Новости | Поиск | FAQ | Статьи | Книги | Новости VCL |
| Форумы ЧАТ | Орешник | KOL и MCK |
Форумы -» Основная («Начинающим»)/ Базы / WinAPI / Компоненты / Сети / Media / Игры / Corba и COM / KOL / FreePascal / .Net / Прочее / RSDN.ORG

« предыдущая ветвь | форум | следующая ветвь »

Помогите с HCBT_CREATEWND [D7]


Страницы:   1 2

Trible ©   (2008-10-23 17:11:00) 

Hello,
Такая ситуация: нужно блокировать окна, заголовок которых начинается с определенной подстроки. Ставлю хук на WH_CBT, в обработчике хука пишу:

function HookWndProc( Code: Integer; WParam: WPARAM; LParam: LPARAM ): LRESULT; stdcall;
var strCaption: PChar;

begin
Result:= 0; // default action

if ( Code < 0 ) then
  Result := CallNextHookEx( HookHandle, Code, WParam, LParam )
else
 if ( Code = HCBT_CREATEWND ) then
 begin
   strCaption:= CBT_CREATEWND( Pointer( lParam )^ ).lpcs.lpszName;
   if ( strCaption <> nil ) then
   begin
     // caption defined
    // ..... strCaption checks .......
   end;
 end;

end;


Проблема происходит при проверке полученного заголовка окна. Не могу составить условие проверки, начинается ли заголовок словом "Открытие документа". Как это сделать?


Сергей М.   (2008-10-28 09:13:00) [1]

А вообще, если диалоги открытия/сохранения стандартные, то копать следует совсем другой огород - перехват вызовов Get[Open|Save]FileName модуля commdlg32


Сергей М.   (2008-10-28 08:54:00) [2]

Ну вот прямо так и делай - с пом. HCBT_CREATEWND


Danger   (2008-10-28 05:33:00) [3]


> Сергей М. ©   (27.10.08 13:53) [26]
> Ну приспичило тебя "блокировать" именно окно - блокируй,
>  я ж не против..

Ну так вот, как это сделать ;) Как блокировать хотя бы диалоги открытия/сохранения?


Сергей М.   (2008-10-27 13:53:00) [4]


> Trible   (27.10.08 12:35) [25]


Ну приспичило тебя "блокировать" именно окно - блокируй, я ж не против..
Я просто предупредил тебя, что не всяккое подобного рода "хирургическое вмешательство" обходится без последствий


Trible   (2008-10-27 12:35:00) [5]


> Ну и зачем для этого "блокировать" окно ?
> Достаточно принять меры по деактивации соотв.элементов меню
> и кнопок быстрого доступа в панели инструментов.

Блокировать окно - универсальный путь, иначе придется блокировать все по отдельности (пункты меню, кнопки на панели инструментов, горячие клавиши). Причем, стандартными средствами 1С не удается блокировать доступ к этим элементам - для роли просто нет такого правила.


DVM   (2008-10-26 13:34:00) [6]


> А программа ждала не хрен, а хэндл, и в ее алгоритме не
> предусмотрена адекватная реакция на такой неожиданный поворот
> событий.
> Как, по-твоему, при этом должна повести себя программа ?
>

вообще то такие программы удалять надо не задумываясь


Сергей М.   (2008-10-24 16:26:00) [7]

Ясно.

Ну и зачем для этого "блокировать" окно ?

Достаточно принять меры по деактивации соотв.элементов меню и кнопок быстрого доступа в панели инструментов.


Trible   (2008-10-24 16:16:00) [8]

> Открыть/сохранить что конкретно ?
открытый пользователем документ. Через пункт "Файл" -> "Сохранить.."

> И чем собссно чреват доступ к этим диалогам ?
Тем, что для пользователя это стандартное окно открытия/сохранения все равно что проводник - можно ходить по файлам и папкам, доступно контекстное меню для файлов, можно запускать файлы на исполнение или открывать документы. Можно даже вручную указывать путь к папке, которую хотят просмотреть; а лучше ведь скрыть все структуру ФС от пользователя, которому ничего не полагается делать на терминале, а только работать в 1С с заранее установленным списком документов.


Сергей М.   (2008-10-24 15:48:00) [9]

Открыть/сохранить чтоконкретно ?
И чем собссно чреват доступ к этим диалогам ?


Trible   (2008-10-24 14:21:00) [10]


> режим создания/модификации конкретной конфигурации, в этом
> режиме можно сконфигурировать ролевые интерфейсы для пользователей
> и групп

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


Сергей М.   (2008-10-24 14:14:00) [11]

Какой такой "функции" ?

Я тебе не про ран-тайм говорю, а про дизайн-тайм, т.е. про режим создания/модификации конкретной конфигурации, в этом режиме можно сконфигурировать ролевые интерфейсы для пользователей и групп


Trible   (2008-10-24 14:03:00) [12]


> Что, вот прямо так она тебе и сказала - "не позволяю это
> сделать" ?

Нет функции отключения функции вызова диалогов для определенных пользователей. То есть теоретически для пользователя эти диалоги доступны всегда.

Даже если соответствующие меню/кнопки недоступны, пользователь всегда может включить их отображение, и вызвать их. Или использовать горячие клавиши.


Сергей М.   (2008-10-24 13:50:00) [13]


> Раз сам 1С не позволяет это сделать


Что, вот прямо так она тебе и сказала - "не позволяю это сделать" ?


Trible   (2008-10-24 13:49:00) [14]


> Сергей М. ©   (24.10.08 12:57) [15]
> Да ты что ?!
>
> А мужики-то и не знали)

Ну факт есть факт, надо запретить эти диалоги. Раз сам 1С не позволяет это сделать, то внешними средствами как-то пытаюсь.


Сергей М.   (2008-10-24 12:57:00) [15]


> Trible   (24.10.08 12:32) [13]


Да ты что ?!

А мужики-то и не знали)


{RASkov}   (2008-10-24 12:34:00) [16]

-Почему у меня болит ж**а?
-А это Плохиш тебе гланды удалил.
© Шматрица :)


Trible   (2008-10-24 12:32:00) [17]

Штатно нельзя запретить пользователям диалоги открытия/закрытия в 1С.


Сергей М.   (2008-10-24 12:19:00) [18]

Так речь-то, оказывается, идет всего лишь навсего о ролевом конфигурировании польз.интерфейса 1С-клиента ?

Ну и за каким лешим ты полез в хук-дебри, если речь идет о штатныхвозможностях 1С-системы ?


Trible   (2008-10-24 11:59:00) [19]


> Чем вызвана такая блажь ?


Список приложений пользователя ограничен искусственно, поэтому врядли попадется строптивая программа.

В сервере терминалов вызывается одна-единственная программа, 1С 8.1, и в зависимости от залогинившегося пользователя надо запретить диалоги открытия/сохранения. Стандартными способами (через 1С) это нельзя сделать.

И блокировать надо не программу целиком, а только окно диалога прибивать, который программа создает.


Сергей М.   (2008-10-24 11:12:00) [20]


> Trible   (24.10.08 11:10) [8]


Чем вызвана такая блажь ?


Страницы:   1 2

Наверх

Титульная страница Поиск, карта сайта Написать письмо