Результат приложения зависит от другого запущенного приложения - PullRequest
0 голосов
/ 17 апреля 2010

Это продолжение моего предыдущего вопроса , хотя речь идет о чем-то другом.

У меня возникла проблема, когда по какой-то причине в моем сообщении, которое я передаю от одного процесса к другому, отображается только первая буква, в данном случае «M».

Мое приложение основано на образце MSDN , поэтому, чтобы убедиться, что я что-то не пропустил, я создаю отдельное решение, добавил образец MSDN (без каких-либо изменений для моих нужд) и, что неудивительно, работает нормально.

Теперь для странного момента, когда я запускаю пример MSDN (как при отладке) и запускаю собственное приложение, текст печатается нормально без каких-либо проблем. В тот момент, когда я запускаю свой сам, без открытия исходного образца MSDN, он не работает и показывает только «M».

Я заглянул в отладчик и, похоже, не заметил ничего подозрительного (это немного устаревшая картинка, я исправил несоответствие типов данных).

Debugger Information

Может кто-нибудь предложить решение по этому поводу? Я никогда не сталкивался с чем-либо подобным. Чтобы взглянуть на мой исходный код, проще взглянуть на ссылку, которую я разместил в верхней части вопроса, нет смысла публиковать его дважды.

Спасибо за любую помощь.

Edit:

После дальнейших исследований почти кажется, что мое собственное приложение каким-то образом случайно читает память других приложений. Если я «опрошу» сообщение, даже не отправив его через окно производителя, оно все равно получит сообщение, которое должно означать, что оно читает его из другого процесса (MSDN), это также объясняет, почему оно работает правильно только при запуске MSDN Образец первый.

Я до сих пор не понимаю, почему это происходит, как это остановить и как это исправить, возможно, это самая странная вещь, с которой я столкнулся.

**** Решение: ****

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

Это всегда мелочи.

1 Ответ

1 голос
/ 17 апреля 2010

Взгляните на pBuf в окне «Просмотр памяти». Средство просмотра строк завершится первым нулевым терминатором, но то, что находится за его пределами, может быть интересным / полезным или дать подсказку.

...