Форум программистов, компьютерный форум, киберфорум
C++ Builder
Войти
Регистрация
Восстановить пароль
Карта форума Темы раздела Блоги Сообщество Поиск Заказать работу  
 
Рейтинг 4.63/8: Рейтинг темы: голосов - 8, средняя оценка - 4.63
Почемучка)
1244 / 304 / 30
Регистрация: 23.12.2010
Сообщений: 2,001
Записей в блоге: 1
1

Повтор сообщения

24.08.2012, 16:07. Показов 1531. Ответов 18
Метки нет (Все метки)

Author24 — интернет-сервис помощи студентам
Доброго дня )
у меня в *.Dll программа вызывает функцию и появляется к примеру ShowMessage;
а как с dll каждые 10 секунд вызвать ShowMessage?
как бы таймер в dll
функция с Show Message вызывается 1 раз, за время работы программы
0
Programming
Эксперт
94731 / 64177 / 26122
Регистрация: 12.04.2006
Сообщений: 116,782
24.08.2012, 16:07
Ответы с готовыми решениями:

Повтор шифровки
Добрый день форум! Немогу разобраться как сделать чтоб функция повторилась без проблем на втором...

Tchart повтор значений
Добрый день! Прошу помощи. Нужно, что бы при прорисовки графика в TChart значение оси не...

повтор ввода символов в KeyDown
Хочу узнать можно ли как нибудь привести к нулю тоетсь отключить повтор ввода символов в C++, какой...

Графический редактор, функции отмена/повтор действия
Всем добрый вечер, при создании графического редактора возникли некоторые вопросы, прошу помочь с...

18
4043 / 2332 / 292
Регистрация: 03.02.2011
Сообщений: 5,066
Записей в блоге: 10
25.08.2012, 17:36 2
Можно и таймер сделать динамически, но придется заботиться о его корректном разрушении. Лучше стартануть поток TThread и поставить ему FreeOnTerminate = true. В цикле потока интервал можно задать с помощью Sleep().
1
Почемучка)
1244 / 304 / 30
Регистрация: 23.12.2010
Сообщений: 2,001
Записей в блоге: 1
25.08.2012, 18:36  [ТС] 3
У меня в dll функция по освобождению памяти, dll активируется при запуске программы.и вызывается эта функция.Хотелось бы сделать что бы память оптимизировалось бы каждых 30 секунд к примеру.
Слышал о функции SetTimer и вот о такой
C++
1
2
3
4
5
6
 VOID CALLBACK t(HWND,UINT,UINT_PTR idEvent,DWORD dwTime)
{
ReduceMemory();
 //+ в теле программы 
DWORD dwTimer=SetTimer(NULL,1,1000,t);
}
но тогда получаем массу ошибок.
0
Супер-модератор
Эксперт Pascal/DelphiАвтор FAQ
32830 / 21168 / 8147
Регистрация: 22.10.2011
Сообщений: 36,429
Записей в блоге: 8
25.08.2012, 19:02 4
Цитата Сообщение от Ddv122 Посмотреть сообщение
но тогда получаем массу ошибок
Например, каких?
0
Почемучка)
1244 / 304 / 30
Регистрация: 23.12.2010
Сообщений: 2,001
Записей в блоге: 1
25.08.2012, 19:24  [ТС] 5
UI, вот эти
Код
E2034 Cannot convert 'void (__stdcall *)(void *,unsigned int,unsigned int,unsigned long)' to 'int (__stdcall *)()'
E2342 Type mismatch in parameter 'lpTimerFunc' (wanted 'int (__stdcall *)()', got 'void (__stdcall *)(void *,unsigned int,unsigned int,unsigned long)')
0
Супер-модератор
Эксперт Pascal/DelphiАвтор FAQ
32830 / 21168 / 8147
Регистрация: 22.10.2011
Сообщений: 36,429
Записей в блоге: 8
25.08.2012, 20:12 6
Нет у меня этих ошибок. Правильный прототип у lpTimerFunc, ровно такой, как указано в MSDN. Ты чем компилируешь код?
2
Почемучка)
1244 / 304 / 30
Регистрация: 23.12.2010
Сообщений: 2,001
Записей в блоге: 1
25.08.2012, 20:16  [ТС] 7
UI, С++ Builder 2006
0
Супер-модератор
Эксперт Pascal/DelphiАвтор FAQ
32830 / 21168 / 8147
Регистрация: 22.10.2011
Сообщений: 36,429
Записей в блоге: 8
25.08.2012, 20:48 8
В настройках проекта есть такая строка: Conditional defines, там определен NO_STRICT, если заменить на STRICT, то ошибки исчезают (до XE, если не ошибаюсь, был по умолчанию NO_STRICT, в более новых изменили). Вот скрин с RAD 2009:
Миниатюры
Повтор сообщения  
2
Эксперт С++
8385 / 6147 / 615
Регистрация: 10.12.2010
Сообщений: 28,683
Записей в блоге: 30
25.08.2012, 21:27 9
UI, С++ Builder 2006
где ты его нарыл? 2006,2007 - глючные версии так как переходные...
0
Почемучка)
1244 / 304 / 30
Регистрация: 23.12.2010
Сообщений: 2,001
Записей в блоге: 1
25.08.2012, 21:41  [ТС] 10
UI, там у меня было вообще пусто, написал STRICT, ошибки пропали)
Avazart, на учёбе проходили Pascal /Delphi/C++ Builder 6.Так как по программе другими пользоваться нельзя.Вот и остался на нём
А что обозначает STRICT?Что то вроде пропуск ошибок?
Миниатюры
Повтор сообщения  
0
Эксперт С++
8385 / 6147 / 615
Регистрация: 10.12.2010
Сообщений: 28,683
Записей в блоге: 30
25.08.2012, 21:42 11
Ну так Builder6 или Builder2006 ?
0
Почемучка)
1244 / 304 / 30
Регистрация: 23.12.2010
Сообщений: 2,001
Записей в блоге: 1
25.08.2012, 21:48  [ТС] 12
Вот он )6)Сам не пойму чего я 2006 написал)
Миниатюры
Повтор сообщения  
0
Почемучка)
1244 / 304 / 30
Регистрация: 23.12.2010
Сообщений: 2,001
Записей в блоге: 1
25.08.2012, 22:18  [ТС] 13
Только вот не работает...мне нужно что бы моя функция повторялось каждых 10 секунд...а она что то не хочет)
0
Супер-модератор
Эксперт Pascal/DelphiАвтор FAQ
32830 / 21168 / 8147
Регистрация: 22.10.2011
Сообщений: 36,429
Записей в блоге: 8
25.08.2012, 22:58 14
Ты бы больше кода приводил, быстрее бы разобрались что не так.

На самом деле начнем с того, что у тебя таймер создается с интервалом 1000 миллисекунд, т.е., 1 секунду.
0
Почемучка)
1244 / 304 / 30
Регистрация: 23.12.2010
Сообщений: 2,001
Записей в блоге: 1
25.08.2012, 23:08  [ТС] 15
UI, спасибо извиняюсь, нашел ошибку.Не плохо было бы про STRICT добавить в FAQ.
И ещё созрел вопрос может вы знаете как в dll получить имя программы к которой подключен dll?
0
Супер-модератор
Эксперт Pascal/DelphiАвтор FAQ
32830 / 21168 / 8147
Регистрация: 22.10.2011
Сообщений: 36,429
Записей в блоге: 8
26.08.2012, 00:01 16
Цитата Сообщение от Ddv122 Посмотреть сообщение
как в dll получить имя программы к которой подключен dll?
В DLL_PROCESS_ATTACH вызвать GetModuleFileName с первым параметром = NULL:
If this parameter is NULL, GetModuleFileName retrieves the path of the executable file of the current process
1
Почемучка)
1244 / 304 / 30
Регистрация: 23.12.2010
Сообщений: 2,001
Записей в блоге: 1
26.08.2012, 00:18  [ТС] 17
UI, где то я на косячил, ошибок нет, но и ShowMessage тоже
C++
1
2
3
4
5
6
7
8
9
10
11
12
BOOL WINAPI DllMain(HINSTANCE hinstDLL, DWORD fdwReason, LPVOID lpvReserved)
{
    switch (fdwReason)
    {
        case DLL_PROCESS_ATTACH:
        char buffer[MAX_PATH];//always use MAX_PATH for filepaths
           GetModuleFileName(NULL,buffer,sizeof(buffer));
           ShowMessage(buffer);
            break;
    }
    return TRUE;
}
0
Супер-модератор
Эксперт Pascal/DelphiАвтор FAQ
32830 / 21168 / 8147
Регистрация: 22.10.2011
Сообщений: 36,429
Записей в блоге: 8
26.08.2012, 01:31 18
Я бы все-таки сделал так:

C++
1
2
    GetModuleFileName(NULL, buffer, MAX_PATH);
    MessageBox(NULL, buffer, "Application name", MB_OK);
Кстати, оно работает:
Миниатюры
Повтор сообщения  
1
Почемучка)
1244 / 304 / 30
Регистрация: 23.12.2010
Сообщений: 2,001
Записей в блоге: 1
26.08.2012, 01:39  [ТС] 19
UI, у меня почему то нет, код тот же.сама dll работает как плагин.и ещё мне нужно имя к примеру test.exe без пути
0
26.08.2012, 01:39
IT_Exp
Эксперт
87844 / 49110 / 22898
Регистрация: 17.06.2006
Сообщений: 92,604
26.08.2012, 01:39
Помогаю со студенческими работами здесь

Нестабильное нажатие клавиш. Повтор символов в обработчике onkeydown.
при зажатии клавиши есть задержка перед началом повтора символов в обработчике onkeydown можно ли...

Повтор ключа осуществляется до тех пор пока не завершиться исходный текст
Ребятки как осуществить это действие с символьными массивами ? Повтор ключа осуществляется до тех...

Повтор значений полей DBGrid'a
Ребят, такая проблема. Есть DBGrid в котором какой либо список, кнопка "Добавить" при нажатии...

Повтор действий или части программы
Есть часть программы Form1->ADOQuery4->Close(); Form1->ComboBox1->Clear();...


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
19
Ответ Создать тему
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2024, CyberForum.ru