KerLaede, создание DLL зависит от используемого средства сборки. У тебя, я подозреваю, продукты Borland -- для них я не знаю.
Загрузка DLL в Win32 (стандартный интерфейс MS Windows) осуществляется двумя способами. В первом к файлам проекта добавляется загрузочная библиотека (import library). Эта библиотека "знает" как подгружать DLL и вызывать функции из DLL. Второй способ -- грузить DLL самостоятельно при работе программы. Это делается функцией LoadLibrary. После того, как библиотека загружена в адресное пространство процесса, нужно получить указатель на функции из DLL стандартной функцией GetProcAddress.
Таймер в Win32 можно создать при помощи функции CreateTimerQueueTimer. Работает только на Win2000 и старше. Этот таймер по истечении вызывает некоторую функцию. Таймерное событие можно сделать, если в функцию передавать событие, а функция будет это событие взводить.
Вот пример:
#define _WIN32_WINNT 0x0500
#include <windows.h>
#include <stdio.h>
VOID CALLBACK TimerRoutine(PVOID lpParam, BOOL TimerOrWaitFired)
{
HANDLE ext_DoneEvent = *(HANDLE *)lpParam;
printf("TimerRoutine: timer expired\n");
SetEvent(ext_DoneEvent);
}
int main()
{
HANDLE hTimerEvent;
HANDLE hTimer = NULL;
HANDLE hTimerQueue = NULL;
hTimerEvent = CreateEvent(NULL, TRUE, FALSE, NULL);
if (!hTimerEvent)
{
printf("CreateEvent failed (%d)\n", GetLastError());
return 1;
}
// Create the timer queue.
hTimerQueue = CreateTimerQueue();
if (!hTimerQueue)
{
printf("CreateTimerQueue failed (%d)\n", GetLastError());
return 2;
}
// Set a timer to call the timer routine in 5 seconds.
if (!CreateTimerQueueTimer(
&hTimer, hTimerQueue, TimerRoutine, &hTimerEvent , 5000, 0, 0))
{
printf("CreateTimerQueueTimer failed (%d)\n", GetLastError());
return 3;
}
// Do other useful work here
printf("Call timer routine in 5 seconds...\n");
// Wait for the timer-queue thread to complete using an event
// object. The thread will signal the event at that time.
if (WaitForSingleObject(hTimerEvent, INFINITE) != WAIT_OBJECT_0)
printf("WaitForSingleObject failed (%d)\n", GetLastError());
// Delete all timers in the timer queue.
if (!DeleteTimerQueue(hTimerQueue))
printf("DeleteTimerQueue failed (%d)\n", GetLastError());
return 0;
}