Отправляет email-рассылки с помощью сервиса Sendsay
  Все выпуски  

RusFAQ.ru: Программирование на C / C++


РАССЫЛКИ ПОРТАЛА RUSFAQ.RU

/ КОМПЬЮТЕРЫ И ПО / Языки программирования / C/C++

Выпуск № 535
от 26.09.2006, 20:05

Администратор:Калашников О.А.
В рассылке:Подписчиков: 385, Экспертов: 50
В номере:Вопросов: 3, Ответов: 4


Вопрос № 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.

Приложение:

Отправлен: 21.09.2006, 04:21
Вопрос задал: Tamashev Denis M (статус: 2-ой класс)
Всего ответов: 2
Мини-форум вопроса >>> (сообщений: 0)

Отвечает: dentist
Здравствуйте, Tamashev Denis M!

#include "stdafx.h"
#include <windows.h>
BOOL APIENTRY DllMain( HANDLE hModule,
DWORD ul_reason_for_call,
LPVOID lpReserved
)
{
HWND hWnd,hboot;
char z[60]="Оповещение системы безопасности Windows";

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 часа больше.
Не пойму в чем дело. Может в Билдере есть какая то другаю функция для установки системного времени? Подскажите кто знает.
Заранее благодарен.
Отправлен: 21.09.2006, 14:29
Вопрос задал: Goretsky Anton (статус: Посетитель)
Всего ответов: 1
Мини-форум вопроса >>> (сообщений: 1)

Отвечает: 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


Отправить вопрос экспертам этой рассылки

Приложение (если необходимо):

* Код программы, выдержки из закона и т.п. дополнение к вопросу.
Эта информация будет отображена в аналогичном окне как есть.

Обратите внимание!
Вопрос будет отправлен всем экспертам данной рассылки!

Для того, чтобы отправить вопрос выбранным экспертам этой рассылки или
экспертам другой рассылки портала RusFAQ.ru, зайдите непосредственно на RusFAQ.ru.


Форма НЕ работает в почтовых программах The BAT! и MS Outlook (кроме версии 2003+)!
Чтобы отправить вопрос, откройте это письмо в браузере или зайдите на сайт RusFAQ.ru.


© 2001-2006, Портал RusFAQ.ru, Россия, Москва.
Идея, дизайн, программирование: Калашников О.А.
Email: adm@rusfaq.ru, Тел.: +7 (926) 535-23-31
Авторские права | Реклама на портале
Версия системы: 4.36 от 06.09.2006
Яндекс Rambler's Top100

В избранное