1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67
| // say_lettre.cpp*: définit le point d'entrée pour l'application DLL.
//
#include "stdafx.h"
#include "say_lettre.h"
#include <windows.h>
#include <SWI-Prolog.h>
#include <stdlib.h>
#include <mmsystem.h>
#ifdef _MANAGED
#pragma managed(push, off)
#endif
BOOL APIENTRY DllMain( HMODULE hModule,
DWORD ul_reason_for_call,
LPVOID lpReserved
)
{
switch (ul_reason_for_call)
{
case DLL_PROCESS_ATTACH:
case DLL_THREAD_ATTACH:
case DLL_THREAD_DETACH:
case DLL_PROCESS_DETACH:
break;
}
return TRUE;
}
#ifdef _MANAGED
#pragma managed(pop)
#endif
// Il s'agit d'un exemple de variable exportée
static foreign_t
pl_say_hello(term_t to)
{ char *a;
if ( PL_get_atom_chars(to, &a) )
{
LPCWSTR soundfile = TEXT("c:\\Windows\\Media\\carillon.wav");
switch(*a)
{
case 'a' : soundfile = TEXT("c:\\Windows\\Media\\a.wav"); break;
case 'o' : soundfile = TEXT("c:\\Windows\\Media\\o.wav"); break;
}
MessageBox(NULL, soundfile, TEXT("DLL test"), MB_OK|MB_TASKMODAL);
PlaySound(soundfile,NULL,SND_FILENAME|SND_ASYNC);
PL_succeed;
}
PL_fail;
}
extern "C" install_t install()
{
// MessageBox(NULL, TEXT("Done"), TEXT("DLL test"), MB_OK|MB_TASKMODAL);
PL_register_foreign("say_hello", 1, pl_say_hello, 0);
} |
Partager