Сегодня сел снова поковырять прогу и кое-как решил траблу.
Проблема была в том, что запрос выполняется n-ое время, несколько долей секунд. Но приложение ведёт себя так, как если бы всё это время выполнялся большой цикл без DoEvents. То есть попросту на эту долю секунду приложение вырубается. А так как такие "вырубы" в программе шли регулярно, то они проявлялись в качестве задержки реакции программы при наборе текста или клике мыши.
Вообще, я так понимаю, такие вещи решаются выделением отдельного потока, но как-то у меня не заладилось ни с потоками, ни с фиберами, в итоге, я пошёл другим путём.
Я запускаю невидимое приложение, которое затем открывает видимое. Невидимое выполняет все запросы WMI, а видимое просто соединяется с невидимым через DDE и считывает данные.
Получается, что все "тормоза" происходят в невидимом приложении, а пользователь наслаждается быстрым откликом программы.
Перед закрытием видимой проги, она, разумеется, убивает невидимое приложение, и вся эта галиматья почти не жрёт оперативу и процессорное время, так что, несмотря на корявость реализации, способ вполне приемлимый