"Каким образом я могу включить или выключить конкретный элемент управления в диалоговом окне?"
Используйте функцию API EnableWindow(Wnd: Hwnd, Enable: Bool). Ей необходимо передать два параметра - дескриптор окна (помните, что элемент управления является окном), которое необходимо включить/выключить (enabled/disabled) и логическую величину - True для включения и False для выключения.
"Как мне получить дескриптор или ID элемента управления?"
Если вы имеете указатель на объект, OWL позволит автоматически получить дескриптор окна посредством поля HWindow; PointerToMyControl^.HWindow - дескриптор окна.
Если вы знаете дескриптор элемента управления, ID можно получить, вызвав функцию API GetDlgCtrlID():
ControlID := GetDlgCtrlID(ControlHandle); |
Если у вас нет указателя на элемент управления, зато есть ID, вы можете получить его дескриптор с помощью API функции GetDlgItem():
ControlHandle := GetDlgItem(DialogHandle, ControlID); |
"Как мне выгрузить DLL-ки ненормально прерванных программ?"
C помощью GetModuleHandle вы можете получить дескрипторы dll-к, вызывайте freelibrary до тех пор, пока GetModuleHandle не возвратит 0. Если dll загружало при этом другую dll, выгрузите "ребенка" в первую очередь.
"Как мне спрятать минимизированную иконку без изъятия программы из списка задач?"
Переместите иконку за пределы экрана с помощью SetWindowPos или MoveWindow, задав иконке отрицательные координаты.
"Как мне изменить сегмент данных dll с фиксированного на перемещаемый?"
Вызовите GlobalPageUnloch(DSEG) во внешнем блоке вашей dll. Это будет работать, заставляя dll не содержать код, требуемый для блокирования страницы сегмента данных. [000586]