Как запретить GetSaveFileName автоматически выделять поле редактирования имени файла - PullRequest
0 голосов
/ 11 января 2020

В Windows 7, диалоговое окно GetSaveFileName автоматически выделяет поле редактирования имени файла. Это происходит, когда диалог начинается, когда фокус теряется и возвращается к диалоговому окну и когда щелкается окно редактирования имени файла. Это действительно раздражает. Как это отключить?

1 Ответ

0 голосов
/ 11 января 2020

Если вы посмотрите на comdlg32.dll (только Windows 7), используя W32dasm

:6F0683D3        push    FFFFFFFF
:6F0683D5        push    00000000
:6F0683D7        push    000000B1
:6F0683DC        add     ecx, FFFFFFA4
:6F0683DF        call    6F0569B8
:6F0683E4        push    eax
  • Ссылка на: USER32.SendMessageW, Ord: 027Ch

    : 6F0683E5 call dword ptr [6F051230]

Вы сразу узнаете, что строка 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 раза, прежде чем оно исчезнет, ​​и вы сможете начать его использовать.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...