ms-доступ к пользовательским меню и реестру - PullRequest
3 голосов
/ 04 февраля 2012

Я выполнял одну из этих утренних задач в субботу, пытаясь понять, почему поиск в реестре моего компьютера какой-либо части информации либо займет уйму времени, либо даже заставит меня остановить процесс. Используя одно из этих средств очистки реестра, я обнаружил, что код тратит десятки минут на циклическое прохождение строк, похожих на:

HKEY_CURRENT_USER\Software\Microsoft\Office\11.0\Access\Settings\CommandBars\ACBCustom Popup...

Поскольку я не смог получить доступ к этим строкам через мой стандартный regedit (он зависал ...), я обнаружил фрагмент кода здесь , который я немного обновил, чтобы иметь возможность подсчитать все эти строки чтобы наконец обнаружить, что в моем реестре было 70 797 строк ACBCustom Popup!

Я полагаю (но я не уверен ...), что это связано с тем, что мы широко используем настраиваемые строки меню в наших приложениях доступа, где у каждой формы есть свои конкретные меню, созданные во время выполнения, но я думал, что эти командные панели были автоматически удалены в конце процесса. Если да, то для чего нужны эти строки в реестре? Как мы можем избежать их создания при запуске приложения ms-access?

1 Ответ

1 голос
/ 09 февраля 2012

Хорошо,

Поскольку никто, кажется, не знает (или не заботится), я сделал свою домашнюю работу. Это просто для подтверждения того, что строка добавляется в реестр каждый раз, когда используется метод Application.CommandBars.Add.

Если вы явно не удалите все временные панели команд перед закрытием приложения доступа, эти строки будут постоянно храниться в реестре.

Полагаю, удаление этих панелей команд перед закрытием приложения можно рассматривать как «наилучшую практику». Решением было бы явное удаление временных панелей команд, когда они больше не нужны. Другой вариант - просмотреть все команды, удаляя временные, при выходе из приложения:

For i = Application.CommandBars.Count To 1 Step -1
    If not Application.CommandBars(i).BuiltIn Then
        Application.CommandBars(i).Delete
    End If
Next i
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...