Обойти OutputDebugString в Delphi 7?

Мне интересно, можно ли обойти OutputDebugString? Мне бы хотелось, чтобы вывод OutputDebugString отображался в DebugView, а не во внутреннем окне просмотра событий Delphi. Но я не могу найти способ сказать Delphi не глотать OutputDebugString. Есть идеи?

С уважением

5 ответов

Это невозможно.

OutputDebugString отправляет строку в отладчик (как следует из ее названия). На процесс может быть только 1 активный отладчик. Вы запускаете свое приложение под Delphi - Delphi получает сообщения, так как это отладчик. Вы запускаете свое приложение за пределами Delphi - DebugView может получить к ним доступ, поскольку ни один отладчик не заявил об этом.

Однако: ПОЧЕМУ вам это нужно? Просто отключите другие типы событий в журнале событий Delphi - и вы получите те же функции, что и в DebugView.

Я думаю, что нет никакого способа обойти это. Ситуация в Delphi 2009 остается прежней. Вы должны отправить запрос на добавление: http://qc.embarcadero.com/

Мне интересно, каким должно быть преимущество вместо внутреннего окна журнала событий Delphi?

Вместо DebugView вы можете попробовать использовать Process Monitor и его новую возможность "отладочный вывод". Он не использует OutputDebugString, он использует собственный API, и здесь также есть обертка Delphi. Вы можете использовать функции фильтрации Process Monitor, и Delphi не будет перехватывать эти сообщения, но это не общие функции, как у OutputDebugString.

Я понимаю, что это не то, что было задано в оригинальном вопросе, но стоит взглянуть на CodeSite от Raize Software. Он выводит OutputDebugString на совершенно новый уровень. Сообщения (могут) направляются в средство просмотра CodeSite, что примерно эквивалентно высокопроизводительному DebugView. Стоит каждого копейки ИМХО.

Отключение "вывода сообщений" в свойствах журнала событий не работает?

Другие вопросы по тегам