Panel użytkownika
Nazwa użytkownika:
Hasło:
Nie masz jeszcze konta?

[winapi] makro DLL_API

Ostatnio zmodyfikowano 2011-11-10 19:03
Autor Wiadomość
Drraven
» 2011-11-06 18:07:19
Mam Linuxa, nie kompiluje nic pod windowsa. Taki mój kaprys.
P-43459
kill
Temat założony przez niniejszego użytkownika
» 2011-11-06 18:12:49
no nic to jeszcze pokombinuje może uda się coś wymyślić ^.^
P-43462
pekfos
» 2011-11-06 18:46:09
Mnie się "zdaje" że DLL_API trzeba SAMEMU zdefiniować w kodzie jako alias do
__declspec( dllexport )
..
P-43468
kill
Temat założony przez niniejszego użytkownika
» 2011-11-06 19:03:40
pefkos wklepałem zamiast DLL_API: __declspec (dllexport) i nie działa
P-43472
pekfos
» 2011-11-06 19:06:50
Daj więc kompletny kod przed zmianami i poczytaj to: http://darkcult.nazwa.pl/wiki/index.php/DLL co właściwie powinieneś zrobić przed zabieraniem się za haki..
P-43473
kill
Temat założony przez niniejszego użytkownika
» 2011-11-06 19:12:14
Dllmain
C/C++
/* Replace "dll.h" with the name of your header */
#include "dll.h"
#include <windows.h>
#include <vector>
using namespace std;

vector < EVENTMSG >
g_Events;
int g_CurrentEvent;
bool g_PlaybackStopped;
HHOOK g_RecordHook = NULL;
HHOOK g_PlaybackHook = NULL;
DWORD g_StartTime = 0;
HINSTANCE g_hInst = NULL;


BOOL APIENTRY DllMain( HMODULE hModule, DWORD ul_reason_for_call, LPVOID lpReserved )
{
    g_hInst = hModule;
   
    switch( ul_reason_for_call )
    {
    case DLL_PROCESS_ATTACH:
    case DLL_THREAD_ATTACH:
    case DLL_THREAD_DETACH:
    case DLL_PROCESS_DETACH:
        break;
    }
   
    return TRUE;
}

DLL_API LRESULT CALLBACK RecordProc( int code, WPARAM wParam, LPARAM lParam )
{
    if( code < 0 ) return CallNextHookEx( 0, code, wParam, lParam );
   
    if( code == HC_ACTION )
    {
        EVENTMSG * msg =( EVENTMSG * ) lParam;
        msg->time -= g_StartTime;
        g_Events.push_back( * msg );
        return 0;
    }
   
    return CallNextHookEx( 0, code, wParam, lParam );
}

DLL_API LRESULT CALLBACK PlaybackProc( int code, WPARAM wParam, LPARAM lParam )
{
    if( code < 0 ) return CallNextHookEx( 0, code, wParam, lParam );
   
    if( code == HC_GETNEXT )
    {
       
        EVENTMSG * msg =( EVENTMSG * ) lParam;
        msg->hwnd = g_Events[ g_CurrentEvent ].hwnd;
        msg->message = g_Events[ g_CurrentEvent ].message;
        msg->paramH = g_Events[ g_CurrentEvent ].paramH;
        msg->paramL = g_Events[ g_CurrentEvent ].paramL;
        msg->time = g_StartTime + g_Events[ g_CurrentEvent ].time;
       
        DWORD delta = msg->time - GetTickCount();
       
        if( delta > 0 )
             return delta;
        else
             return 0;
       
    }
    else if( code == HC_SKIP )
    {
        if( !g_PlaybackStopped )
             g_CurrentEvent++;
       
        if( g_CurrentEvent >= g_Events.size() )
        {
            g_CurrentEvent = 0;
            g_StartTime = GetTickCount();
            g_PlaybackStopped = false;
            return 0;
        }
    }
   
    return 0;
}


DLL_API void StartRecording( void )
{
    g_StartTime = GetTickCount();
    g_RecordHook = SetWindowsHookEx( WH_JOURNALRECORD, RecordProc, g_hInst, 0 );
}


DLL_API void StartPlayback( void )
{
    g_CurrentEvent = 0;
    g_StartTime = GetTickCount();
    g_PlaybackStopped = false;
    UnhookWindowsHookEx( g_RecordHook );
    g_PlaybackHook = SetWindowsHookEx( WH_JOURNALPLAYBACK, PlaybackProc, g_hInst, 0 );
}

dll.h
C/C++
extern "C"
{
    DLL_API void StartPlayback( void );
    DLL_API void StartRecording( void );
}

W glównym pliku progamu jest tylko ladowanie bibliotek i funkcji oraz wywolanie funkcji po nacisnieciu odpowiednich klawiszy - mysle ze to jest nie istotne
P-43475
pekfos
» 2011-11-06 19:14:34
jak masz taki plik .h to się nie dziwię. czytaj kurs bo nie masz pojęcia o DLL.
P-43476
kill
Temat założony przez niniejszego użytkownika
» 2011-11-06 19:15:38
cały plik .h mam taki:

C/C++
#ifndef _DLL_H_
#define _DLL_H_

#if BUILDING_DLL
# define DLLIMPORT __declspec (dllexport)
#else /* Not BUILDING_DLL */
# define DLLIMPORT __declspec (dllimport)
#endif /* Not BUILDING_DLL */
#define DLL_API __declspec( dllexport )

extern "C"
{
    DLL_API void StartPlayback( void );
    DLL_API void StartRecording( void );
}

#endif /* _DLL_H_ */
P-43477
1 2 « 3 » 4 5 6 7
Poprzednia strona Strona 3 z 7 Następna strona