Во-первых: не Окна.ВидимостьМеню("Журналы расчетов...",0); а Окна.ВидимостьМеню("Журналы &расчетов...",0);
Во-вторых: Окна.ВидимостьМеню и Окна.ДоступностьМеню это две различные процедуры, с разными обработчиками.
На Окна.ДоступностьМеню("Журналы расчетов...",0); тоже не вылетает.
А вылетает при Окна.ВидимостьМеню("Любое значение",0);
И в-третьих, вылетает везде, даже на WinXP, а на R2 тебе просто повезло. Со 2-3 раза тоже бы вылетело. А может и нет, под Wine тоже не вылетело.
Путаешь же (так искать значительно дольше)... Тщательнее проверяй и описывай!
v7Windows.cpp
void CMenuManager::MakeSystemMessages( HWND hwnd, UINT message, LPARAM lParam, WPARAM wParam ) {
switch (message) {
case WM_INITMENUPOPUP: {
CWnd* pWnd = CWnd::FromHandle(hwnd);
if(pWnd) {
CMenu *pMenuSys = pWnd->GetSystemMenu(FALSE);
+ if(!pMenuSys){
+ return;
+ }
if(pMenuSys->GetSafeHmenu() != (HMENU)wParam) {
Сборка для теста:
https://cloud.mail.ru/public/3ErM/3VXrC3JxHP.S. На самом деле, пкм там надо вообще запретить, это адская дыра в безопасности 1С. Сколько раз так базы копировал, чтобы админского разрешения не ждать, уже и не упомню