Каталог решений - Эксперименты с функциями Win 32 API в 1C часть 2

Эксперименты с функциями Win 32 API в 1C часть 2

Эксперименты с функциями Win 32 API в 1C часть 2

В наличии

Эксперименты с функциями Win 32 API в 1C

Категория:

Описание

Пример №3 Разрушаем окна (на примере PopUp меню)

Регистрируем функции:

Wrap = CreateObject(«DynamicWrapperX»);
Wrap.Register(«USER32.DLL», «FindWindow», «i=ss», «r=l»);
Wrap.Register(«USER32.DLL», «DestroyWindow», «i=h», «r=l»);

получаем дискриптор окна поиском по классу #32768
HWND = Wrap.FindWindow(«#32768″,»»);
  Если HWND<>0 Тогда
  Wrap.DestroyWindow(HWND);
КонецЕсли;

Все менюшка исчезла
Внимание DestroyWindow() не работает в потоке!

Пример №4 Запрет запуска обработки или конфигурации более 1 раза (классический, мьютексы-взаимоисключения)

Регистрируем функции:
Wrap = CreateObject(«DynamicWrapperX»);
// создать мьютекс
Wrap.Register(«KERNEL32.DLL», «CreateMutex», «i=lls», «r=l»);
// открыть мьютекс
Wrap.Register(«KERNEL32.DLL», «OpenMutex», «i=lls», «r=l»);
// ожидание объекта
Wrap.Register(«KERNEL32.DLL», «WaitForSingleObject», «i=hl», «r=l»);
// высвобождение
Wrap.Register(«KERNEL32.DLL», «ReleaseMutex», «i=h», «r=l»);
// закрываем
Wrap.Register(«KERNEL32.DLL», «CloseHandle», «i=h», «r=l»);

Объявляем переменные:
MutexName = «MainErt»;
MUTEX_ALL_ACCESS = 2031617;
Проверяем на существование мьютекса в системе:
HMutex = Wrap.OpenMutex(MUTEX_ALL_ACCESS,0,MutexName);
Если HMutex=0 Тогда
  // создаем если не существует и высвобождаем  на потом
  HMutex = Wrap.CreateMutex(0,1,MutexName);
  Wrap.ReleaseMutex(HMutex);
Иначе
  Предупреждение(«Обработка уже запущена работа невозможна!»);
КонецЕсли;

Пример №5 Широковещательные сообщения

Wrap = CreateObject(«DynamicWrapperX»);
Wrap.Register(«netapi32.dll», «NetMessageBufferSend», «i=wwwwl», «r=l»);
servername = «\\compname»;
messagename = «compname»;
fromname = «compname»;
messagetext = «hello»+РазделительСтрок+»!!!»;
messagelength = СтрДлина(messagetext)*2;
res = Wrap.NetMessageBufferSend(servername,messagename,fromname,messagetext,messagelength);

Внимание! Важны права доступа, имена пользователей и тп. Подробнее в MSDN.

has been added to your cart:
Оформление заказа