2014-11-05 3 views
0

Я нашел ошибку .Net, работающую под управлением Windows XP. Строковое значение Screen.PrimaryScreen.DeviceName или Screen.AllScreens[] содержит дополнительные символы в конце (нули и мусор из буфера памяти). Проблема не существует в Windows 7. Вопрос в том, есть ли Windows Update (KB), который исправляет это?Недопустимые символы в Screen.PrimaryScreen.DeviceName

Попробуйте это (на XP):

Text = string.Format("{0}: {1}", 
     Screen.PrimaryScreen.DeviceName.Length, 
     Screen.PrimaryScreen.DeviceName); 

Обычно результат: 31: \\.\DISPLAY1. Правильная длина равна 12, а не 31. Существует \0 после Display1, и по этой причине строка выглядит нормально, но для сравнения строк это неправильно.

ответ

0

Кажется, это ошибка в .Net/XP, которая не исправлена ​​с обновлением Windows. Мое решение таково:

string dev = Screen.PrimaryScreen.DeviceName; 
int eos = dev.IndexOf('\0'); 
if (eos != -1) 
    dev = dev.Substring(0, eos); 
Смежные вопросы