SendKeys CaretSign не может быть отправлен

у кого-нибудь есть опыт работы с SendKey Methode?

Моя проблема в том, что когда я хочу отправить знак ^, я прочитал, что мне пришлось отправить его с такими скобками. {^}

Но когда я это делаю, я получаю & Sign?

Кто-нибудь знает, почему? Если я делаю что-то вроде {^ 2}, я получаю &&, но я просто не получаю ^ :)

РЕДАКТИРОВАТЬ: Извините за недоразумение! ДЛЯ ВСЕХ, МОЙ ПЕРВЫЙ КОММЕНТАРИЙ, ТАК Я ДЕЛАЮ ЭТО СЕЙЧАС, И ЭТО НЕ БУДЕТ РАБОТАТЬ ТАК.


введите здесь описание изображения


person Bador    schedule 28.08.2013    source источник
comment
Команда SendKeys.Send({^});   -  person Bador    schedule 28.08.2013
comment
Вы должны либо удалить свой вопрос, либо опубликовать свой собственный ответ и принять его через два дня.   -  person Scott Chamberlain    schedule 28.08.2013
comment
Нет, это не ответ, это то, как я пробовал, и это не работает! Я просто хочу добавить команду, которую я сейчас использую. (Но, как я уже говорил, это не сработает)   -  person Bador    schedule 28.08.2013
comment
в этом случае вам следует отредактировать свой вопрос вместо публикации комментария.   -  person Scott Chamberlain    schedule 28.08.2013
comment
@user2139258 user2139258 Проверьте региональные настройки клавиатуры   -  person    schedule 28.08.2013
comment
Да, теперь я знаю, и я не буду делать это снова. (Еще раз извините за недоразумение)   -  person Bador    schedule 28.08.2013
comment
Настройки клавиатуры в работающей программе - немецкие.   -  person Bador    schedule 28.08.2013
comment
Это очень странно, код идентичен (достаточно близко), но результат отличается. Я только что изменил раскладку клавиатуры с Великобритании на США, и она все еще работала. У вас есть другой компьютер, чтобы попробовать это? Может быть, это что-то странное в настройках вашего компьютера.   -  person Erresen    schedule 28.08.2013
comment
Я могу настроить виртуальную машину для проверки поведения. (около 20 минут)   -  person Bador    schedule 28.08.2013
comment
На английской раскладке вы получаете ^, нажимая Shift+6. Это действительно производит & на немецкой раскладке клавиатуры. Так что по какой-то причине SendKeys не знает, что он должен говорить по-немецки. Ничто в вопросе не дает подсказки, почему это так.   -  person Hans Passant    schedule 28.08.2013
comment
Такое же поведение на виртуальной машине... Но я просмотрел статью MSDN и нашел абзац, где написано: Если ваше приложение предназначено для международного использования с различными клавиатурами, использование Send может привести к непредсказуемым результатам, и этого следует избегать. Так что я думаю, что проблема именно в этом...   -  person Bador    schedule 28.08.2013


Ответы (1)


Из MSDN:

Знак плюс (+), вставка (^), знак процента (%), тильда (~) и круглые скобки () имеют особое значение для SendKeys. Чтобы указать один из этих символов, заключите его в фигурные скобки ({}). Например, чтобы указать знак «плюс», используйте «{+}». Чтобы указать символы скобок, используйте «{{}» и «{}}». Скобки ([ ]) не имеют особого значения для SendKeys, но вы должны заключать их в фигурные скобки.

Таким образом, правильный синтаксис для знака вставки:

SendKeys.Send("{^}");

Доказательства того, что это работает: введите здесь описание изображения

person Erresen    schedule 28.08.2013
comment
Как я упоминал выше, это не сработает! Результатом этой команды является знак &. Я уже прочитал статью MSDN... - person Bador; 28.08.2013
comment
Я попробовал это до того, как опубликовал свой ответ, и это сработало для меня! Я не уверен, что это актуально, но у вас правильные региональные настройки клавиатуры? - person Erresen; 28.08.2013