Подавить MessageBox из ссылочной сборки - PullRequest
1 голос
/ 16 февраля 2009

Как подавить вывод MessageBox из ссылки на сборку, которой я не владею (и не имею кода)?

Например, мое приложение (MyApplication.exe) ссылается на сборку, написанную кем-то другим (SomeoneElsesAssembly.dll). Внутри этой сборки я вызываю статический метод, который делает то, что предполагает, но также запускает MessageBox, который я хочу подавить.

Я думал, что есть способ ссылаться на сборку в неинтерактивном режиме или что-то в этом роде.

Спасибо за вашу помощь.

-Джесси Хоул

Ответы [ 4 ]

2 голосов
/ 16 февраля 2009

Эта статья может помочь

2 голосов
/ 16 февраля 2009

По сути, вы спрашиваете: «Как я могу изменить поведение кода в сторонней сборке».

Если не считать разборки / повторной сборки, ответ будет "Вы не можете".

Есть несколько опций;

С управляемым кодом у вас всегда есть источник в той или иной форме. Если функция несколько автономна, вы можете использовать Reflector, чтобы скопировать ее в свой собственный код

У вас может быть вторая ветка, которая ожидает появления окна сообщения и затем автоматически закрывает его.

1 голос
/ 16 февраля 2009

Я думал, что есть способ ссылки на сборку в неинтерактивном режиме или что-то в этом роде.

Я полагаю, что можно запустить процесс в неинтерактивном режиме (например, в Windows Services), но сборки загружаются в процесс и подчиняются тем же уровням взаимодействия, что и другие сборки в процессе. .

Итак, либо разберите-соберите, либо отправьте сообщения Windows прямо в ящик, чтобы автоматически закрыть его.

0 голосов
/ 16 февраля 2009

По сути, вы спрашиваете, можете ли вы сослаться на сборку, которая вызывает MessageBox () и код не отображает окно сообщения. Ответ, к сожалению, нет.

Лучше всего использовать скребок экрана, чтобы закрыть окно сообщения, как только оно появится. В этом посте приведен пример кода о том, как закрыть окно сообщения InProc. http://www.codeproject.com/KB/dialog/AutoCloseMessageBox.aspx

...