#define WF_WINNT 0x4000 #define TAPI_APP_DATA_KEY 0x44415441 #define GWL_APPDATA 0 #define WM_ASYNCEVENT (WM_USER+111) #define NUM_TAPI32_PROCS ( THIS_MUST_BE_THE_LAST_ENTRY ) typedef void (FAR PASCAL *MYPROC)(); //typedef MYPROC NEAR * PMYPROC; typedef LONG (FAR PASCAL *PFNCALLPROC1)(DWORD, LPVOID, DWORD, DWORD); typedef LONG (FAR PASCAL *PFNCALLPROC2)(DWORD, DWORD, LPVOID, DWORD, DWORD); typedef LONG (FAR PASCAL *PFNCALLPROC3)(DWORD, DWORD, DWORD, LPVOID, DWORD, DWORD); typedef LONG (FAR PASCAL *PFNCALLPROC4)(DWORD, DWORD, DWORD, DWORD, LPVOID, DWORD, DWORD); typedef LONG (FAR PASCAL *PFNCALLPROC5)(DWORD, DWORD, DWORD, DWORD, DWORD, LPVOID, DWORD, DWORD); typedef LONG (FAR PASCAL *PFNCALLPROC6)(DWORD, DWORD, DWORD, DWORD, DWORD, DWORD, LPVOID, DWORD, DWORD); typedef LONG (FAR PASCAL *PFNCALLPROC7)(DWORD, DWORD, DWORD, DWORD, DWORD, DWORD, DWORD, LPVOID, DWORD, DWORD); typedef LONG (FAR PASCAL *PFNCALLPROC8)(DWORD, DWORD, DWORD, DWORD, DWORD, DWORD, DWORD, DWORD, LPVOID, DWORD, DWORD); typedef LONG (FAR PASCAL *PFNCALLPROC9)(DWORD, DWORD, DWORD, DWORD, DWORD, DWORD, DWORD, DWORD, DWORD, LPVOID, DWORD, DWORD); typedef LONG (FAR PASCAL *PFNCALLPROC10)(DWORD, DWORD, DWORD, DWORD, DWORD, DWORD, DWORD, DWORD, DWORD, DWORD, LPVOID, DWORD, DWORD); typedef LONG (FAR PASCAL *PFNCALLPROC11)(DWORD, DWORD, DWORD, DWORD, DWORD, DWORD, DWORD, DWORD, DWORD, DWORD, DWORD, LPVOID, DWORD, DWORD); typedef LONG (FAR PASCAL *PFNCALLPROC12)(DWORD, DWORD, DWORD, DWORD, DWORD, DWORD, DWORD, DWORD, DWORD, DWORD, DWORD, DWORD, LPVOID, DWORD, DWORD); typedef struct _TAPI16_CALLBACKMSG { DWORD hDevice; DWORD dwMsg; DWORD dwCallbackInstance; DWORD dwParam1; DWORD dwParam2; DWORD dwParam3; } TAPI16_CALLBACKMSG, FAR *LPTAPI16_CALLBACKMSG; typedef struct _TAPI_APP_DATA { DWORD dwKey; HWND hwnd; LINECALLBACK lpfnCallback; BOOL bPendingAsyncEventMsg; DWORD hXxxApp; } TAPI_APP_DATA, FAR *LPTAPI_APP_DATA; typedef enum { lAccept, lAddProvider, lAddToConference, lAnswer, lBlindTransfer, lClose, lCompleteCall, lCompleteTransfer, lConfigDialog, lConfigDialogEdit, lConfigProvider, lDeallocateCall, lDevSpecific, lDevSpecificFeature, lDial, lDrop, lForward, lGatherDigits, lGenerateDigits, lGenerateTone, lGetAddressCaps, lGetAddressID, lGetAddressStatus, lGetAppPriority, lGetCallInfo, lGetCallStatus, lGetConfRelatedCalls, lGetCountry, lGetDevCaps, lGetDevConfig, lGetIcon, lGetID, lGetLineDevStatus, lGetNewCalls, lGetNumRings, lGetProviderList, lGetRequest, lGetStatusMessages, lGetTranslateCaps, lHandoff, lHold, lInitialize, lMakeCall, lMonitorDigits, lMonitorMedia, lMonitorTones, lNegotiateAPIVersion, lNegotiateExtVersion, lOpen, lPark, lPickup, lPrepareAddToConference, lRedirect, lRegisterRequestRecipient, lReleaseUserUserInfo, lRemoveFromConference, lRemoveProvider, lSecureCall, lSendUserUserInfo, lSetAppPriority, lSetAppSpecific, lSetCallParams, lSetCallPrivilege, lSetCurrentLocation, lSetDevConfig, lSetMediaControl, lSetMediaMode, lSetNumRings, lSetStatusMessages, lSetTerminal, lSetTollList, lSetupConference, lSetupTransfer, lShutdown, lSwapHold, lTranslateAddress, lTranslateDialog, lUncompleteCall, lUnhold, lUnpark, pClose, pConfigDialog, pDevSpecific, pGetButtonInfo, pGetData, pGetDevCaps, pGetDisplay, pGetGain, pGetHookSwitch, pGetID, pGetIcon, pGetLamp, pGetRing, pGetStatus, pGetStatusMessages, pGetVolume, pInitialize, pOpen, pNegotiateAPIVersion, pNegotiateExtVersion, pSetButtonInfo, pSetData, pSetDisplay, pSetGain, pSetHookSwitch, pSetLamp, pSetRing, pSetStatusMessages, pSetVolume, pShutdown, tGetLocationInfo, tRequestDrop, tRequestMakeCall, tRequestMediaCall, GetTapi16CallbkMsg, LOpenDialAsstVAL, LAddrParamsInitedVAL, lOpenInt, lShutdownInt, LocWizardDlgProc32, THIS_MUST_BE_THE_LAST_ENTRY } PROC_INDICES; char far *gaFuncNames[] = { "lineAccept", "lineAddProvider", "lineAddToConference", "lineAnswer", "lineBlindTransfer", "lineClose", "lineCompleteCall", "lineCompleteTransfer", "lineConfigDialog", "lineConfigDialogEdit", "lineConfigProvider", "lineDeallocateCall", "lineDevSpecific", "lineDevSpecificFeature", "lineDial", "lineDrop", "lineForward", "lineGatherDigits", "lineGenerateDigits", "lineGenerateTone", "lineGetAddressCaps", "lineGetAddressID", "lineGetAddressStatus", "lineGetAppPriority", "lineGetCallInfo", "lineGetCallStatus", "lineGetConfRelatedCalls", "lineGetCountry", "lineGetDevCaps", "lineGetDevConfig", "lineGetIcon", "lineGetID", "lineGetLineDevStatus", "lineGetNewCalls", "lineGetNumRings", "lineGetProviderList", "lineGetRequest", "lineGetStatusMessages", "lineGetTranslateCaps", "lineHandoff", "lineHold", "lineInitialize", "lineMakeCall", "lineMonitorDigits", "lineMonitorMedia", "lineMonitorTones", "lineNegotiateAPIVersion", "lineNegotiateExtVersion", "lineOpen", "linePark", "linePickup", "linePrepareAddToConference", "lineRedirect", "lineRegisterRequestRecipient", "lineReleaseUserUserInfo", "lineRemoveFromConference", "lineRemoveProvider", "lineSecureCall", "lineSendUserUserInfo", "lineSetAppPriority", "lineSetAppSpecific", "lineSetCallParams", "lineSetCallPrivilege", "lineSetCurrentLocation", "lineSetDevConfig", "lineSetMediaControl", "lineSetMediaMode", "lineSetNumRings", "lineSetStatusMessages", "lineSetTerminal", "lineSetTollList", "lineSetupConference", "lineSetupTransfer", "lineShutdown", "lineSwapHold", "lineTranslateAddress", "lineTranslateDialog", "lineUncompleteCall", "lineUnhold", "lineUnpark", "phoneClose", "phoneConfigDialog", "phoneDevSpecific", "phoneGetButtonInfo", "phoneGetData", "phoneGetDevCaps", "phoneGetDisplay", "phoneGetGain", "phoneGetHookSwitch", "phoneGetID", "phoneGetIcon", "phoneGetLamp", "phoneGetRing", "phoneGetStatus", "phoneGetStatusMessages", "phoneGetVolume", "phoneInitialize", "phoneOpen", "phoneNegotiateAPIVersion", "phoneNegotiateExtVersion", "phoneSetButtonInfo", "phoneSetData", "phoneSetDisplay", "phoneSetGain", "phoneSetHookSwitch", "phoneSetLamp", "phoneSetRing", "phoneSetStatusMessages", "phoneSetVolume", "phoneShutdown", "tapiGetLocationInfo", "tapiRequestDrop", "tapiRequestMakeCall", "tapiRequestMediaCall", "GetTapi16CallbackMsg", "LOpenDialAsst", "LAddrParamsInited", "lineOpenInt", "lineShutdownInt", "LocWizardDlgProc" }; DWORD ghLib = 0; HINSTANCE ghInst; MYPROC gaProcs[NUM_TAPI32_PROCS]; LRESULT CALLBACK Tapi16HiddenWndProc( HWND hwnd, UINT msg, WPARAM wParam, LPARAM lParam ); #if CHICOBUILD DWORD FAR PASCAL LoadLibraryEx32W( LPCSTR, DWORD, DWORD ); BOOL FAR PASCAL FreeLibrary32W( DWORD ); DWORD FAR PASCAL GetProcAddress32W( DWORD, LPCSTR ); DWORD FAR PASCAL CallProc32W( DWORD, LPVOID, DWORD, DWORD ); #endif PFNCALLPROC1 pfnCallProc1 = (PFNCALLPROC1) CallProc32W; PFNCALLPROC2 pfnCallProc2 = (PFNCALLPROC2) CallProc32W; PFNCALLPROC3 pfnCallProc3 = (PFNCALLPROC3) CallProc32W; PFNCALLPROC4 pfnCallProc4 = (PFNCALLPROC4) CallProc32W; PFNCALLPROC5 pfnCallProc5 = (PFNCALLPROC5) CallProc32W; PFNCALLPROC6 pfnCallProc6 = (PFNCALLPROC6) CallProc32W; PFNCALLPROC7 pfnCallProc7 = (PFNCALLPROC7) CallProc32W; PFNCALLPROC8 pfnCallProc8 = (PFNCALLPROC8) CallProc32W; PFNCALLPROC9 pfnCallProc9 = (PFNCALLPROC9) CallProc32W; PFNCALLPROC10 pfnCallProc10 = (PFNCALLPROC10) CallProc32W; PFNCALLPROC11 pfnCallProc11 = (PFNCALLPROC11) CallProc32W; PFNCALLPROC12 pfnCallProc12 = (PFNCALLPROC12) CallProc32W;