#include #include #include #include #include "lib.h" #include "slib.h" #include "info.h" using namespace slib; void CmdFunc_1 (PMDATA_INF pRetData, INT nArgCount, PMDATA_INF pArgInf) { ::MessageBox(0, "大家要小心非典,注意个人卫生。","提醒",MB_OK); } void CmdFunc_2 (PMDATA_INF pRetData, INT nArgCount, PMDATA_INF pArgInf) { DOUBLE Val = pArgInf [0].m_double; Val = Val ? -Val : Val; pRetData->m_double = Val; } void CmdFunc_3 (PMDATA_INF pRetData, INT nArgCount, PMDATA_INF pArgInf) { LPTSTR pszPathObj= pArgInf[0].m_pText; LPTSTR pszPathLink = pArgInf[1].m_pText; IShellLink* pLink; IPersistFile* pPersistFile; if(SUCCEEDED(CoInitialize(NULL))) { if(SUCCEEDED(CoCreateInstance(CLSID_ShellLink, NULL, CLSCTX_INPROC_SERVER, IID_IShellLink, (void **) &pLink))) { pLink->SetPath(pszPathObj); pLink->SetShowCmd(SW_SHOW); pLink->SetIconLocation(pszPathObj, 0); if(SUCCEEDED(pLink->QueryInterface(IID_IPersistFile, (void **)&pPersistFile))) { HANDLE hHeap = GetProcessHeap(); void* pwsz=HeapAlloc(hHeap, 0, MAX_PATH * 2); MultiByteToWideChar(CP_ACP, 0, pszPathLink, -1, (LPWSTR)pwsz, MAX_PATH); pPersistFile->Save((LPCOLESTR)pwsz, TRUE); pPersistFile->Release(); HeapFree(hHeap, 0, pwsz); } pLink->Release(); } CoUninitialize(); } } void CmdFunc_4 (PMDATA_INF pRetData, INT nArgCount, PMDATA_INF pArgInf) { DataType_1* pdt1=(DataType_1*)pArgInf->m_pCompoundData; ::MessageBox(0,pdt1->Pathogeny,"",MB_OK); } void AddinFunc_1() { HWND hWnd = (HWND)NotifySys (NES_GET_MAIN_HWND); if (::IsWindow(hWnd)) ::MessageBox (hWnd, "大家要小心非典,注意个人卫生。", "提醒", MB_OK); } INT WINAPI AddinFunc (INT nAddInFnIndex) { switch ( nAddInFnIndex ) { case 0: AddinFunc_1();break; } return 1; } INT WINAPI NotifySys (INT nMsg, DWORD dwParam1, DWORD dwParam2) { assert(g_fnNotifySys != NULL); if (g_fnNotifySys != NULL) return g_fnNotifySys (nMsg, dwParam1, dwParam2); else return 0; } INT WINAPI ProcessNotifyLib (INT nMsg, DWORD dwParam1, DWORD dwParam2) { INT nRet = NR_OK; switch (nMsg) { case NL_SYS_NOTIFY_FUNCTION: g_fnNotifySys = (PFN_NOTIFY_SYS)dwParam1; break; default: nRet = NR_ERR; break; } return nRet; } PLIB_INFO WINAPI GetNewInf() { return &LibInfo; }