Вопрос № 56159: Здравствуйте эксперты.
Снова я к вам с вопросом.
Есть программа она работает с сетью но так уже заипал
брандмауэр windows что я решил написать DLL чтобы убрать невыносимое окно.
Всё бы хорошо но вот когда из своей программы я подгружа...Вопрос № 56223: Добрый день уважаемые экспетры!
Вопрос следующий:
Пытаюсь из программы установить системное время следующим кодом:
void __fastcall TForm1::SetTime(Word hour, Word minutes, Word seconds)
{
SYSTEMTIME st;
GetSystemTime(&s...Вопрос № 56231: Здравствуйте, господа Эксперты!
Кто-нибудь знает русскоязычную литературу по Crystal Reports применительно к C#? (Подойдёт как бумажная, так и электронная - если только её реально достать.)...
Вопрос № 56.159
Здравствуйте эксперты.
Снова я к вам с вопросом.
Есть программа она работает с сетью но так уже заипал
брандмауэр windows что я решил написать DLL чтобы убрать невыносимое окно.
Всё бы хорошо но вот когда из своей программы я подгружаю DLL нагрузка процессора равна 100% и не снижается ! И самое обидное даже не появляется окно брандмауэра.
Я уже много чего попробовал но не получается у меня.
Вопрос можно ли сделать чтоб DLL не нагружала процессор и выполняла задуманное?
Может как то ловушку поставить но я с ними не работал и ничего в них не понимаю. =(
А времени на изучение нету совсем.
Помогите пожалуйста.
С уважением,
Zmeu.
while(1)
{
if ((hWnd=FindWindow(0,z)) != 0)
{
// никогда не занимался подобной ерундой поэтому
// незнаю насколько тут всё правильно и оставляю без изменений
// Советую воспользоваться стандартной тулсой Spy++ для
// выяснения точных параметров
hboot=FindWindowEx(hWnd,0,"Button","&Разблокировать");
SendMessage(hboot, WM_LBUTTONDOWN, 0,NULL);
SendMessage(hboot, WM_LBUTTONDBLCLK, 0,NULL);
SendMessage(hboot, WM_LBUTTONUP, 0,NULL);
break;
}
Sleep(1); // теперь загрузки небедет
}
return TRUE;
}
Приложение:
--------- "Software is like sex, it's better then it's free" (c) Linus Torvalds
Ответ отправил: dentist (статус: 4-ый класс)
Ответ отправлен: 21.09.2006, 09:52 Оценка за ответ: 4
Отвечает: Sergey A. Wedensky
Здравствуйте, Tamashev Denis M!
Ну, правильно. У Вас грузится DLL, сразу после подгрузки выполняется функция DllMain с параметром ul_reason_for_call = DLL_PROCESS_ATTACH. Притом, выполняется, видимо, в основном потоке Вашего приложения. А Вы там организуете бесконечный цикл (ну, если условный переход можно назвать циклом :). Наверно, Ваша прога к этому моменту еще не полезла в сеть, firewall не выкинул свое окно, ну Вы и ждете его до бесконечности. И процессор грузите, и выполнение дальше не идет.
Предлагаю в DllMain по DLL_PROCESS_ATTACH запускать поток (см. CreateThread() в MSDN), а в функции потока ждать появления окна firewall'а (аналогичным Вашему способом, например, только я бы Sleep() еще поставил, ну зачем с таким упорством :).
А зачем DLL вообще, кстати? Если это Ваша программа, можно прямо в ней этот поток и создать... Или, зная момент, когда должно появиться окно брандмауэра (ну там после попытки открытия сокета, например) ждать его появления, закрывать и идти дальше.
А вообще проще firewall нормальный поставить (Outpost к примеру) и настроить его грамотно, чтобы Ваше приложение пускал куда надо.
Ответ отправил: Sergey A. Wedensky (статус: 2-ой класс)
Ответ отправлен: 21.09.2006, 10:18 Оценка за ответ: 5
Вопрос № 56.223
Добрый день уважаемые экспетры!
Вопрос следующий:
Пытаюсь из программы установить системное время следующим кодом:
void __fastcall TForm1::SetTime(Word hour, Word minutes, Word seconds)
{
SYSTEMTIME st;
GetSystemTime(&st);
st.wHour = hour; // устанавливаем часы
st.wMinute = minutes; // и минуты
st.wSecond = seconds; // секунды
SetSystemTime(&st); // устанавливаем системное время
}
Но приэтом время изменяеться не на то, которое я задаю в hour,minutes,seconds , а на 3 часа больше.
Не пойму в чем дело. Может в Билдере есть какая то другаю функция для установки системного времени? Подскажите кто знает.
Заранее благодарен.
Отвечает: Sergey A. Wedensky
Здравствуйте, Goretsky Anton!
Дело в том, что GetSystemTime()/SetSystemTime() работают с системным временем по гринвичу (UTC). Вы, видимо, находитесь в часовом поясе GMT+3 (Москва - СПб - Волгоград - ...).
Воспользуйтесь функциями API GetLocalTime()/SetLocalTime() - они предназначены для оперирования системным временем с учетом региональных настроек Windows.
Ответ отправил: Sergey A. Wedensky (статус: 2-ой класс)
Ответ отправлен: 21.09.2006, 14:55
Вопрос № 56.231
Здравствуйте, господа Эксперты!
Кто-нибудь знает русскоязычную литературу по Crystal Reports применительно к C#? (Подойдёт как бумажная, так и электронная - если только её реально достать.)
Отправлен: 21.09.2006, 15:51
Вопрос задал: Delph (статус: 1-ый класс)
Всего ответов: 1 Мини-форум вопроса >>> (сообщений: 1)
Отвечает: Vaga
Здравствуйте, Delph!
Здравствуйте, Denisov Pavel!
http://www.c-sharpcorner.com/CrystalReports.asp
http://experts.about.com/q/C-3307/Making-Reports-C.htm
http://www.devarticles.com/c/a/C-Sharp/Creating-Graphical-Reports-With-Crystal-Reports-in-.NET/
http://search.msdn.microsoft.com/search/default.aspx?__VIEWSTATE=&query=C%23+Crystal+Reports&siteid=0&tab=0
--------- Ошибка становится ошибкой, когда рождается как истина. Станислав Ежи Лец
Ответ отправил: Vaga (статус: 4-ый класс)
Ответ отправлен: 21.09.2006, 17:53