Если вы посмотрите на comdlg32.dll (только Windows 7), используя W32dasm
:6F0683D3 push FFFFFFFF
:6F0683D5 push 00000000
:6F0683D7 push 000000B1
:6F0683DC add ecx, FFFFFFA4
:6F0683DF call 6F0569B8
:6F0683E4 push eax
Вы сразу узнаете, что строка 3 (pu sh 000000B1) вызывает Sendmessage EM_SETSEL для поля редактирования имени файла.
winuser .h содержит идентификаторы сообщений.
#define EM_GETSEL 0x00B0
#define EM_SETSEL 0x00B1
#define EM_SETMARGINS 0x00D3
Так что если вы используете шестнадцатеричный редактор для изменения B1 на D3, он больше не будет вызывать EM_SETSEL, но вы должны быть осторожны, какое сообщение вы ' переадресация на.
Вам потребуется создать еще одну Windows установку на другом диске для редактирования файла comdlg32.dll в папке system32, пока установка Windows не выполняется.
Это действительно раздражающая проблема, вы должны нажать на поле для редактирования имени файла 3 раза, прежде чем оно исчезнет, и вы сможете начать его использовать.