Переключение на Главную Страницу Страницы: 1 ОтправитьПечать
Обычная тема Вылет в контекстном меню окна выбора файлов (число прочтений - 2345 )
alyuev
God Member
*****
Отсутствует


Гражданин Вселенной

Сообщений: 854
Местоположение: Одесса
Зарегистрирован: 07. Декабря 2007
Пол: Мужской
Вылет в контекстном меню окна выбора файлов
24. Июня 2020 :: 10:11
Печать  
На девственно чистой базе в глобальнике код:

Код
Выбрать все
ЗагрузитьВнешнююКомпоненту("FormEx.dll");
Окна=СоздатьОбъект("Окна");
Окна.ВидимостьМеню("Журналы расчетов...",0); // вылетает при наличии этой строки. 



Если нажать кнопку открытия файла и там в окне нажать правую кнопку для вызова контекстного меню - 1С вылетает.
Проверил на версии 94 и 147.

Винда Win10 Pro. И на Win Server 2019 так же.

Но на Win Server 2008 R2 - вылета нет.

С вызовом Окна.ДоступностьМеню("Tests",0); - такой проблемы нет.
  

1C 7.7.025; 1C++ 3.2.4.3; Formex 2.0.5.94; 1sqlite
Наверх
IP записан
 
Djelf
God Member
*****
Отсутствует


Ubuntu + wine@etersoft
+ 1C 7.7

Сообщений: 634
Местоположение: Питер
Зарегистрирован: 02. Ноября 2007
Пол: Мужской
Re: Вылет в контекстном меню окна выбора файлов
Ответ #1 - 26. Июня 2020 :: 14:57
Печать  
Во-первых: не Окна.ВидимостьМеню("Журналы расчетов...",0); а Окна.ВидимостьМеню("Журналы &расчетов...",0);

Во-вторых: Окна.ВидимостьМеню и Окна.ДоступностьМеню это две различные процедуры, с разными обработчиками.

На Окна.ДоступностьМеню("Журналы расчетов...",0);  тоже не вылетает.
А вылетает при Окна.ВидимостьМеню("Любое значение",0);

И в-третьих, вылетает везде, даже на WinXP, а на R2 тебе просто повезло. Со 2-3 раза тоже бы вылетело. А может и нет, под Wine тоже не вылетело.

Путаешь же (так искать значительно дольше)...  Тщательнее проверяй и описывай!


Код (C++)
Выбрать все
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/3VXrC3JxH

P.S. На самом деле, пкм там надо вообще запретить, это адская дыра в безопасности 1С. Сколько раз так базы копировал, чтобы админского разрешения не ждать, уже и не упомню  Круглые глаза
  
Наверх
www  
IP записан
 
Arbuz
Junior Member
**
Отсутствует


1C++ rocks!

Сообщений: 65
Зарегистрирован: 06. Февраля 2019
Re: Вылет в контекстном меню окна выбора файлов
Ответ #2 - 29. Июня 2020 :: 08:38
Печать  
Подтверждаю. 148 сборка: меню скрывает, пкм в стандартном диалоге открытия/сохранения файла - падает. тестовая: меню скрывает, не падает.
  
Наверх
 
IP записан
 
Djelf
God Member
*****
Отсутствует


Ubuntu + wine@etersoft
+ 1C 7.7

Сообщений: 634
Местоположение: Питер
Зарегистрирован: 02. Ноября 2007
Пол: Мужской
Re: Вылет в контекстном меню окна выбора файлов
Ответ #3 - 29. Июня 2020 :: 15:45
Печать  
Я бы еще заблокировал ВидимостьМеню (тем же кодом), сегодня не вылетает, а завтра вылетит, или где-то память испортит (это возможно).
В файловых диалогах, эти методы вызываться не должны.
« Последняя редакция: 29. Июня 2020 :: 17:08 - Djelf »  
Наверх
www  
IP записан
 
alyuev
God Member
*****
Отсутствует


Гражданин Вселенной

Сообщений: 854
Местоположение: Одесса
Зарегистрирован: 07. Декабря 2007
Пол: Мужской
Re: Вылет в контекстном меню окна выбора файлов
Ответ #4 - 30. Июня 2020 :: 19:17
Печать  
Ох, же ж ты дотошный, Djelf! Улыбка Единственное, как я считаю, мог бы более точно сказать, как ты написал: Окна.ВидимостьМеню("Любой текст",0); - а в остальном - на мой взгляд - достаточно описал.

В любом случае - спасибо! Тестовая сборка работает корректно!
  

1C 7.7.025; 1C++ 3.2.4.3; Formex 2.0.5.94; 1sqlite
Наверх
IP записан
 
Djelf
God Member
*****
Отсутствует


Ubuntu + wine@etersoft
+ 1C 7.7

Сообщений: 634
Местоположение: Питер
Зарегистрирован: 02. Ноября 2007
Пол: Мужской
Re: Вылет в контекстном меню окна выбора файлов
Ответ #5 - 01. Июля 2020 :: 07:17
Печать  
Не был бы дотошным, нихрена бы не нашел  Смех
Тем более что вылет происходил не в самом formex, а значительно позже, уже в ms`овской библиотеке.
А про все остальное я написал потому что это все мне пришлось проверять, что ж я так все исследования сразу и забуду?  Круглые глаза
  
Наверх
www  
IP записан
 
alyuev
God Member
*****
Отсутствует


Гражданин Вселенной

Сообщений: 854
Местоположение: Одесса
Зарегистрирован: 07. Декабря 2007
Пол: Мужской
Re: Вылет в контекстном меню окна выбора файлов
Ответ #6 - 02. Июля 2020 :: 08:53
Печать  
А когда приблизительно можно будет ждать рабочую версию?
  

1C 7.7.025; 1C++ 3.2.4.3; Formex 2.0.5.94; 1sqlite
Наверх
IP записан
 
alyuev
God Member
*****
Отсутствует


Гражданин Вселенной

Сообщений: 854
Местоположение: Одесса
Зарегистрирован: 07. Декабря 2007
Пол: Мужской
Re: Вылет в контекстном меню окна выбора файлов
Ответ #7 - 13. Декабря 2022 :: 13:49
Печать  
Djelf, привет. Ты не делал правку в основной версии Formex для решения этой проблемы? А то опять нарвался на неё на одном из клиентов. Пришлось вспоминать, что и как решали.
  

1C 7.7.025; 1C++ 3.2.4.3; Formex 2.0.5.94; 1sqlite
Наверх
IP записан
 
Djelf
God Member
*****
Отсутствует


Ubuntu + wine@etersoft
+ 1C 7.7

Сообщений: 634
Местоположение: Питер
Зарегистрирован: 02. Ноября 2007
Пол: Мужской
Re: Вылет в контекстном меню окна выбора файлов
Ответ #8 - 14. Декабря 2022 :: 04:58
Печать  
alyuev писал(а) 13. Декабря 2022 :: 13:49:
Djelf, привет. Ты не делал правку в основной версии Formex для решения этой проблемы? А то опять нарвался на неё на одном из клиентов. Пришлось вспоминать, что и как решали.

У меня только старые исходники есть, АЛьФ только один раз их выкладывал. И это правильно, незачем фрагментацию сборок устраивать.
  
Наверх
www  
IP записан
 
Переключение на Главную Страницу Страницы: 1
ОтправитьПечать