Обойти OutputDebugString в Delphi 7? - PullRequest
4 голосов
/ 25 июня 2010

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

привет

Ответы [ 5 ]

3 голосов
/ 25 июня 2010

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

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

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

1 голос
/ 25 июня 2010

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

1 голос
/ 25 июня 2010

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

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

0 голосов
/ 25 июня 2010

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

0 голосов
/ 25 июня 2010

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

...