170 похожих чатов

Есть тестовое консольное приложение, вот весь его код: using var p

= Process.Start("notepad");
p.WaitForInputIdle();
while (true)
{
SendKeys.SendWait("x");
Thread.Sleep(1000);
}

Я компилирую его в exe и перезагружаю компьютер. Если я запускаю после этого exe файл, то при вводе символов не будут учитываться нажатия Shift, Ctrl, Caps Lock и т.д. Это поведение не будет меняться, пока я хотя бы один раз не вызову dotnet run на проект. После этого Shift, Ctrl и Caps Lock начнут учитываться при открытии того же exe вплоть до перезагрузки компьютера.

С чем это вообще может быть связано?

9 ответов

14 просмотров

Что ты сделать то хочешь? Почему ждешь пока нотпад не войдет в idle?

nastya- Автор вопроса
Liza 丽莎
Что ты сделать то хочешь? Почему ждешь пока нотпад...

Что сделать хочу – объяснить сложно, меня интересует, почему именно такое поведение. Это поведение не связано с конкретно блокнотом (в любых других текстовых полях тоже воспроизводится), это просто тестовый код, чтобы кто-то тоже мог попробовать воспроизвести. Жду idle, потому что (как я понимаю этот метод) она отпустит выполнение кода, когда окно нотпада полностью загрузится

С тем что .Net писали ебланы. Когда ты запускаешь dotnet run у тебя поднимается vhost, который, скорее всего, не опускается с выходом из приложения, так как .Net это в любом случае (особенно .Net core) dll и ей похуй в куда грузиться ебланы из микрософт решили что похуй куда оно будет грузиться, а это не так, так как наведенка.

nastya
Спасибо

Сразу предупреждаю, что так будет практически с любыми WinAPI зависимыми вещами. Чем более экзотичное оно (а SendKeys - экзотично), тем более проблемно. И если окошки с WinProc они вроде вылизали то вот такое может и будет содержать внезапные грабли.

nastya- Автор вопроса
nastya
Буду подпирать грабли костылями)

Я точно не помню что конкретно не так с SendKeys(Ex) Но там точно была наведенка от сборки и от факта запуска VS (причем не всех)

просто клади рядом проект и сначала делай process start dotnet run, а потом блокнот открывай

nastya- Автор вопроса
βλαδιμιρ
просто клади рядом проект и сначала делай process ...

примерно так и буду делать, видимо, просто перед каждым запуском звать run

Похожие вопросы

Обсуждают сегодня

Господа, а что сейчас вообще с рынком труда на делфи происходит? Какова ситуация?
Rꙮman Yankꙮvsky
29
А вообще, что может смущать в самой Julia - бы сказал, что нет единого стандартного подхода по многим моментам, поэтому многое выглядит как "хаки" и произвол. Короче говоря, с...
Viktor G.
2
30500 за редактор? )
Владимир
47
а через ESC-код ?
Alexey Kulakov
29
Чёт не понял, я ж правильной функцией воспользовался чтобы вывести отладочную информацию? но что-то она не ловится
notme
18
У меня есть функция где происходит это: write_bit(buffer, 1); write_bit(buffer, 0); write_bit(buffer, 1); write_bit(buffer, 1); write_bit(buffer, 1); w...
~
14
Добрый день! Скажите пожалуйста, а какие программы вы бы рекомендовали написать для того, чтобы научиться управлять памятью? Можно написать динамический массив, можно связный ...
Филипп
7
Недавно Google Project Zero нашёл багу в SQLite с помощью LLM, о чём достаточно было шумно в определённых интернетах, которые сопровождались рассказами, что скоро всех "ибешни...
Alex Sherbakov
5
Ребят в СИ можно реализовать ООП?
Николай
33
https://github.com/erlang/otp/blob/OTP-27.1/lib/kernel/src/logger_h_common.erl#L174 https://github.com/erlang/otp/blob/OTP-27.1/lib/kernel/src/logger_olp.erl#L76 15 лет назад...
Maksim Lapshin
20
Карта сайта