var word = new Application { Visible = false };
var doc = word.Documents.Add();
doc.Activate();
Range rng = doc.Range(0, 0);
rng.Text = text;
rng.Select();
doc.Content.Select();
var totalWords = word.Selection.Words.Count;
var i = 0;
var prevPercent = 0;
var enumeratorSelection = word.Selection.Words.GetEnumerator();
while (enumeratorSelection.MoveNext())
{
if (_backgroundWorker.WorkerReportsProgress && prevPercent < i * 100 / totalWords)
{
prevPercent = i * 100 / totalWords;
_backgroundWorker.ReportProgress(prevPercent);
}
i++;
dynamic w = enumeratorSelection.Current;
int? languageId = w.LanguageID as int?;
Log.Information(languageId.HasValue ? languageId.Value.ToString() : null);
if (languageId.HasValue && languageId == (int)WdLanguageID.wdRussian)
{
вывод в логе
2023-05-24 02:40:19.000 -07:00 [INF] 1033
2023-05-24 02:40:19.042 -07:00 [INF] 1033
2023-05-24 02:40:19.046 -07:00 [INF] 1033
2023-05-24 02:40:19.051 -07:00 [INF] 1033
2023-05-24 02:40:19.056 -07:00 [INF] 1033
2023-05-24 02:40:19.060 -07:00 [INF] 1033
2023-05-24 02:40:19.064 -07:00 [INF] 1033
2023-05-24 02:40:19.067 -07:00 [INF] 1033
...
реально должно выводить 1049 (wdRussian = 1049)
прикол такой если поставить брекпоинт в начале while то выводит правильно
кстати ошибка для word 2016, для моего 2021 работает
ещё можно сделать так MessageBox.Show(w.LanguageID.ToString()) и тогда первый раз неправильно, но потом OK нажимаю и показывает верно
подскажите как пофиксить