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 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 105 106 107 108
| // startDll.cpp*: définit les fonctions exportées pour l'application DLL.
//
#include <windows.h>
#include <tchar.h>
#include <stdio.h>
#include <tchar.h>
#include <Shlobj.h>
#include "SimConnect.h"
static enum GROUP_ID {
GROUP_MENU
};
static enum EVENT_ID {
EVENT_MENU_START,
// EVENT_MENU_TWO,
};
HANDLE hSimConnect = NULL;
static int quit = 0 ;
void CALLBACK MyDispatchProcMI(SIMCONNECT_RECV* pData, DWORD cbData, void *pContext)
{
HRESULT hr;
switch(pData->dwID)
{
case SIMCONNECT_RECV_ID_EVENT:
{
SIMCONNECT_RECV_EVENT *evt = (SIMCONNECT_RECV_EVENT*)pData;
switch(evt->uEventID)
{
case EVENT_MENU_START:
{
STARTUPINFO si = { 0 };
si.cb = sizeof(si);
si.dwFlags = STARTF_USESHOWWINDOW;
si.wShowWindow = SW_SHOWNORMAL ;
PROCESS_INFORMATION pi = { 0 };
TCHAR szFolderPath[MAX_PATH];
hr = SHGetFolderPath(NULL, CSIDL_PROGRAM_FILES, NULL, SHGFP_TYPE_CURRENT,
szFolderPath);
//****** Insert here the path to the prog you want to exec **************
TCHAR pg[] = L"\\Harperick\\Harperick v1\\client.exe\0" ;
// Concat path + program name
wcscat(szFolderPath, pg) ;
::CreateProcess(NULL, szFolderPath, NULL, NULL, FALSE,
NORMAL_PRIORITY_CLASS, NULL, NULL, &si, &pi) ;
break;
}
default:
break;
}
break;
}
case SIMCONNECT_RECV_ID_QUIT:
{
quit = 1;
break;
}
default:
printf("Received ID: %d", pData->dwID);
break;
}
}
int __stdcall DLLStart(void)
{
HRESULT hr;
// Place all initialization code for the client in this function
if (SUCCEEDED(SimConnect_Open(&hSimConnect, "StartHarperick", NULL, 0, 0, 0)))
{
// Create some private events
hr = SimConnect_MapClientEventToSimEvent(hSimConnect, EVENT_MENU_START);
// hr = SimConnect_MapClientEventToSimEvent(hSimConnect, EVENT_MENU_TWO);
hr = SimConnect_MenuAddItem(hSimConnect, "Start Harperick", EVENT_MENU_START, 12345);
// Sign up for the notifications
hr = SimConnect_AddClientEventToNotificationGroup(hSimConnect, GROUP_MENU, EVENT_MENU_START);
hr = SimConnect_SetNotificationGroupPriority(hSimConnect, GROUP_MENU, SIMCONNECT_GROUP_PRIORITY_HIGHEST);
SimConnect_CallDispatch(hSimConnect, MyDispatchProcMI, NULL);
}
return 0;
}
//
// The DLLStop function must be present.
//
void __stdcall DLLStop(void)
{
// Close the client
if (hSimConnect != NULL)
HRESULT hr = SimConnect_Close(hSimConnect);
} |
Partager