Подтвердить что ты не робот

Можете ли вы получить доступ к стандартным строкам Windows, например "Отмена"?

Я создаю диалоговое окно Windows, в котором есть стандартные кнопки "ОК" и "Отмена". Учитывая, что Windows использует один и тот же текст кнопки в своих собственных диалогах, есть ли способ захватить правильные строки для использования на кнопках?

Таким образом, мое приложение будет иметь правильные строки независимо от того, какой язык используется, без необходимости локализовать его для большого количества разных языков. Я использую С#, но могу с радостью использовать платформу invoke для доступа к методу ОС, если это необходимо.

ПРИМЕЧАНИЕ. Да, я могу легко локализовать ресурсы, но я не хочу находить и вводить строки zillion разных языков, если они уже присутствуют в окнах. Пожалуйста, не отвечайте, указав локализовать приложение!

4b9b3361

Ответ 1

В Visual Studio: Файл + Открыть + Файл введите c:\windows\system32\user32.dll. Откройте таблицу строк node и дважды щелкните строку String Table. Прокрутите вниз до 800.

Microsoft берет довольно безнравственную позицию против использования этих идентификаторов ресурсов. Учитывая количество программистов, которые сделали то, что вы созерцаете, вряд ли они когда-либо смогут изменить эти цифры. Вам нужно будет P/Invoke LoadLibrary() и LoadString().

Однако ваше окончательное падение по этому плану - Vista/Win7 Ultimate с языковыми пакетами MUI. Это позволяет пользователю переключаться между языками без обновления строк ресурсов в библиотеках DLL. В таком издании всегда будут английские строки.

Ответ 2

Хорошо, если вы используете стандартную MessageBox.Show() и передаете ей approriate параметры, она автоматически локализует yes/no/okay/cancel для вас.

Что более интересно, так это то, как вы локализуете текст сообщения.

Ответ 3

Нет, нет стандартного, поддерживаемого способа сделать это. Да, Windows сохраняет эти строки и может (с некоторыми усилиями) их получить, но нет гарантии, что они останутся в том же месте и под тем же идентификатором от версии к версии.

Хотя вы, возможно, не хотите, чтобы это было ответом, ответ на самом деле заключается в локализации вашего приложения. Если вы локализуете все остальное (как вам нужно, если вы просто не хотите, чтобы OK и Cancel были локализованы), я не уверен, почему было бы большим усилием включить локализованные значения для OK и Cancel.