![]() |
#10 |
NavAx
|
тогда проще сделать вызываемую форму модальной.
в run() формы добавьте X++: void run() { WinApi::setFormModal(this.hWnd(), true); } X++: static HWND setFormModal(hWND _thisHWND, boolean _bModal, HWND _parentHWND = 0) { DLL _winApiDLL; DLLFunction _EnabledWindow; DLLFunction _getTop; DLLFunction _getNext; DLLFunction _getParent; void local_enableWHND(HWND _lHWND, HWND _pHWND = 0) { int lnextWnd; if (!_pHWND) _pHWND = _getParent.call(_lHWND); lnextWnd = _getTop.call(_getParent.call(_lHWND)); while (lnextWnd) { if (lnextWnd != _lHWND && WinApi::getWindowText(lnextWnd) != "@SYS25246") _enabledWindow.call(lnextWnd, (!_bModal)); lnextWnd = _getNext.call(lnextWnd, 2); } } ; _winApiDLL = new DLL('user32'); _getNext = new DLLFunction(_winApiDLL, "GetWindow"); _EnabledWindow = new DLLFunction(_winApiDLL, "EnableWindow"); _getTop = new DLLFunction(_winApiDLL, "GetTopWindow"); _getParent = new DLLFunction(_winApiDLL, "GetParent"); _getParent.returns(ExtTypes::DWORD); _getParent.arg(ExtTypes::DWORD); _EnabledWindow.returns(ExtTypes::DWORD); _EnabledWindow.arg(ExtTypes::DWORD, ExtTypes::DWORD); _getTop.returns(ExtTypes::DWORD); _getTop.arg(ExtTypes::DWORD); _getNext.returns(ExtTypes::DWORD); _getNext.arg(ExtTypes::DWORD, ExtTypes::DWORD); local_enableWHND(_thisHWND); if (!_parentHWND) _parentHWND = _getParent.call(_thisHWND); local_enableWHND(_getParent.call(_thisHWND)); return _parentHWND; } |
|