Пример №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.