Господа знатоки, у меня глупая проблема . Всю жизнь C# работал как часы, а тут...
Установил MSVS, после чего давно работавший MS Office сказал, что ему необходима активация. Я его активировал с помощью, да простит меня Билл Гейтс, какой-то "крекалки".
показывает MessageBox, в котором
Заголовок хороший ("Under development...")
Иконка хорошая (Information) Текста никакого нет
На кнопке OK надпись отсутствует
При этом мои формы выглядят правильно.
Мне кажется, что года три назад я уже на это нарывался и как-то исправил, но совершенно не помню подробностей.
Господа знатоки, У меня важное дополнение к написанному.
Пока я писал предыдущее послание, переключаясь между окнами, на моём MessageBox'е появился нужный текст. И на кнопке появилась надпись "OK". Я закрыл приложение, открыл его снова, и MessageBox снова показался неверно.
Здравствуйте, sq, Вы писали:
[...]
возможно,
скорее всего, крекалка твоя заменила mso.dll, посмотри typelib того officе-приложения, которое автоматизируешь, найди описание метода MessageBox — возможно, вызов MessageBox из классов .net конфликтует с вызовом аналогичной функции из оффиса...в таком случае придется переписать импорт typelib оффис-приложения ручками...
Здравствуйте, DuШes, Вы писали:
DШ>[... посмотри typelib того officе-приложения, которое автоматизируешь...]
Скорее всего, DШ, Вы правы. "Крекер" действительно ковырял mso.dll. Правда, я не автоматизирую никакое офисное приложение. Просто написал WinApp на C#, в котором форма с одной кнопкой и больше ничего. Попробовал вызвать OpenFileDialog вместо MessageBox'а. Он работает, но картинки (History, Desktop, My Computer, ...) в нём поломаны. Похоже, все common диалоги пострадали.
К сожалению, я не понимаю, что значит «переписать импорт typelib оффис-приложения ручками». Поясните, пожалуйста, если можно.
Здравствуйте, sq, Вы писали:
sq>Здравствуйте, DuШes, Вы писали:
DШ>>[... посмотри typelib того officе-приложения, которое автоматизируешь...]
sq>Скорее всего, DШ, Вы правы. "Крекер" действительно ковырял mso.dll. Правда, я не автоматизирую никакое офисное приложение. Просто написал WinApp на C#, в котором форма с одной кнопкой и больше ничего. Попробовал вызвать OpenFileDialog вместо MessageBox'а. Он работает, но картинки (History, Desktop, My Computer, ...) в нём поломаны. Похоже, все common диалоги пострадали.
sq>К сожалению, я не понимаю, что значит «переписать импорт typelib оффис-приложения ручками». Поясните, пожалуйста, если можно.
попутал...почему-то подумал что у тебя c++ проект...там можно было в директиве #import переименовать при помощи атрибута rename тот или иной вызов, в c# даже и не знаю как во враппер влезть, сорри
Здравствуйте, sq, Вы писали:
sq>Господа знатоки, у меня глупая проблема . Всю жизнь C# работал как часы, а тут...
sq>Установил MSVS, после чего давно работавший MS Office сказал, что ему необходима активация. Я его активировал с помощью, да простит меня Билл Гейтс, какой-то "крекалки".
sq>Иконка хорошая (Information) sq>Текста никакого нет sq>На кнопке OK надпись отсутствует
sq>При этом мои формы выглядят правильно.
sq>Мне кажется, что года три назад я уже на это нарывался и как-то исправил, но совершенно не помню подробностей.
sq>Подскажите, пожалуйста, что-нибудь.
И у меня точно такая же хрень присутствует, тоже пропадает текст, тоже появляется если походить альттабом по окнам. Еще из симтомов -- у меня ХР с включеными темами, то когда MessageBox собирается заглючить, то в таскбаре на иконке языков отображается просто черный квадратик. Точно не помню было ли это до установки офиса, или после, но офис я точно не крекал, активации он у меня и не просил, что не могло не радовать. Я думал это кривые Infragistics компоненты под нет, у них глюков нормально так, думал и этот вот добавили.
Если ктото знает лекарство от такой фигни -- был бы очень благодарен
Re: MessageBox.Show
От:
Аноним
Дата:
14.02.05 11:03
Оценка:
А многопоточность используется? Может в ней дело. Или какой-то объект или процесс жрет память немеряно?
у меня почти такая же херня на java — приложении
не отображаются кэпшины некоторых полей
причем поводишь по ним другим окошком и они прорисовываются
причем такая фигня только на winXP
мне кажется в эту сторону копать надо
Serega2k>А многопоточность используется? Может в ней дело. Или какой-то объект или процесс жрет память немеряно?
Приложение моё содержит форму с одной-единственной кнопкой. При нажатии на кнопку выдаётся MessageBox. Всё, больше там ничего [dot]нэт. Память никто не жрёт.
За последнее время я проделал множество экспериментов на эту тему. Вот основные результаты.
1. На работе глюк присутствует, дома всё OK (и OK уже на протяжении нескольких лет). В обоих местах MSVS установлена с одного и того же дистрибутива. В обоих местах Win2000, но дистрибутивы разные.
2. Office ни при чём. Сносил его, переустанавливал MSVS, результат тот же: работает криво.
3. Common диалоги на работе работают правильно, но неправильно показывают графику. Дома с ними всё отлично.
4. На бейсике MessageBox работает криво.
5. На С++ CWnd::MessageBox из MFC работает отлично.
6. На C++ ::MessageBox из user32.dll работает отлично.
7. На машине с Win XP моего начальника всё работает отлично.
Отсюда делаю вывод, что Framework не может ужиться с чем-то на моей машине на работе. На ней установлена куча всякого... э-э-э... хорошего, поэтому переустановить на ней Windows — целое дело, и я пока для этого недостаточно ещё озверел. Дешевле будет написать на C++ библиотеку для вызова MessageBox'ов и common диалогов и работать через неё.
Оставаться на C++ не хочу. C# мне нравится больше.
PS. ставлю галку в "Получать ответы по e-mail", но ответы приходят не всегда...
Ну, и что делать будем, господа PVitaliy и jamesBSS? Не уж-то и вправду свои библиотеки писать? Дело оно, конечно, нехитрое, да вот похоже на обезьянью работу...
Re[2]: MessageBox.Show
От:
Аноним
Дата:
24.02.05 11:33
Оценка:
Можно попробовать вызвать вот эту АПИ-функцию после старта программы.
Здравствуйте, PVitaliy, Вы писали:
PV>И у меня точно такая же хрень присутствует, тоже пропадает текст, тоже появляется если походить альттабом по окнам. Еще из симтомов -- у меня ХР с включеными темами, то когда MessageBox собирается заглючить, то в таскбаре на иконке языков отображается просто черный квадратик. Точно не помню было ли это до установки офиса, или после, но офис я точно не крекал, активации он у меня и не просил, что не могло не радовать. Я думал это кривые Infragistics компоненты под нет, у них глюков нормально так, думал и этот вот добавили.
PV>Если ктото знает лекарство от такой фигни -- был бы очень благодарен
По симптомам — очень похоже на утечку GDI-ресурсов. Какая-то из программ явно содержит этот трудноуловимый баг. Может быть какая-то из нестандартных тем XP? Или какая-нить программа рисует свои элементы в теме WinXP а потом забывает освободить ThemeData и т.д.
В общем — отключайте там темы XP, для начала, если не помогает... нууу, раз ве что методом тыка можно попытаться выявить глючную программу.