[Freeswitch-branches] [commit] r10942 - freeswitch/branches/gmaruzz/src/mod/endpoints/mod_skypiax
Author: gmaruzz Date: Fri Dec 26 07:36:18 2008 New Revision: 10942 Log: skypiax: continuing multiline on windows, no more global HANDLEs Modified: freeswitch/branches/gmaruzz/src/mod/endpoints/mod_skypiax/skypiax.h freeswitch/branches/gmaruzz/src/mod/endpoints/mod_skypiax/skypiax_protocol.c Modified: freeswitch/branches/gmaruzz/src/mod/endpoints/mod_skypiax/skypiax.h ============================================================================== --- freeswitch/branches/gmaruzz/src/mod/endpoints/mod_skypiax/skypiax.h (original) +++ freeswitch/branches/gmaruzz/src/mod/endpoints/mod_skypiax/skypiax.h Fri Dec 26 07:36:18 2008 @@ -137,6 +137,10 @@ struct AsteriskHandles { HWND win32_hInit_MainWindowHandle; HWND win32_hGlobal_SkypeAPIWindowHandle; +HINSTANCE win32_hInit_ProcessHandle; +char win32_acInit_WindowClassName[128]; +UINT win32_uiGlobal_MsgID_SkypeControlAPIAttach; +UINT win32_uiGlobal_MsgID_SkypeControlAPIDiscover; switch_file_t *fdesc[2]; }; Modified: freeswitch/branches/gmaruzz/src/mod/endpoints/mod_skypiax/skypiax_protocol.c ============================================================================== --- freeswitch/branches/gmaruzz/src/mod/endpoints/mod_skypiax/skypiax_protocol.c (original) +++ freeswitch/branches/gmaruzz/src/mod/endpoints/mod_skypiax/skypiax_protocol.c Fri Dec 26 07:36:18 2008 @@ -16,15 +16,14 @@ #ifdef WIN32 -HWND win32_hInit_MainWindowHandle; -struct AsteriskHandles *win32_AsteriskHandlesSkype; -HINSTANCE win32_hInit_ProcessHandle; -char win32_acInit_WindowClassName[128]; -UINT win32_uiGlobal_MsgID_SkypeControlAPIAttach; -UINT win32_uiGlobal_MsgID_SkypeControlAPIDiscover; -HWND win32_hGlobal_SkypeAPIWindowHandle = NULL; -DWORD win32_ulGlobal_PromptConsoleMode = 0; -HANDLE volatile win32_hGlobal_PromptConsoleHandle = NULL; +//HWND win32_hInit_MainWindowHandle; +//HINSTANCE win32_hInit_ProcessHandle; +//char win32_acInit_WindowClassName[128]; +//UINT win32_uiGlobal_MsgID_SkypeControlAPIAttach; +//UINT win32_uiGlobal_MsgID_SkypeControlAPIDiscover; +//HWND win32_hGlobal_SkypeAPIWindowHandle = NULL; +//DWORD win32_ulGlobal_PromptConsoleMode = 0; +//HANDLE volatile win32_hGlobal_PromptConsoleHandle = NULL; #else /* NOT WIN32 */ #define SKYPE_X11_BUF_SIZE 512 //Window skype_win = (Window) - 1; @@ -502,67 +501,14 @@ #ifdef WIN32 -#if 1 -/*******************************************************/ -int CALLBACK EnumWindowsProc(HWND hwnd, LPARAM param) -{ DWORD pID; - DWORD TpID; - struct skypiax_interface *p = NULL; - - TpID = GetWindowThreadProcessId(hwnd, &pID); - - if (TpID == (DWORD)param) - { - NOTICA("HWND=%p\n", SKYPIAX_P_LOG, hwnd); - win32_hGlobal_SkypeAPIWindowHandle = hwnd; - return 0; - }else{ - DEBUGA_SKYPE("HWND=%p\n", SKYPIAX_P_LOG, hwnd); - return 1; - } -} - -int LaunchSkype(void) -{ - PROCESS_INFORMATION pi; - STARTUPINFO si = {0}; - struct skypiax_interface *p = NULL; - int ret=1; - int times=0; +int LaunchSkype(struct skypiax_interface *p) +{ LPTSTR pszMessage; DWORD dwLastError; - ZeroMemory( &si, sizeof(si) ); - si.cb = sizeof(si); - ZeroMemory( &pi, sizeof(pi) ); - - - //ShellExecute(NULL, "open", "C:\\Program Files\\Skype\\Phone\\Skype.exe", "/secondary /username:skypiax1 /password:ciapalo", ".", SW_SHOWNORMAL); - //switch_sleep(1000000); - //ShellExecute(NULL, "open", "C:\\Program Files\\Skype\\Phone\\Skype.exe", "/secondary /username:skypiax2 /password:ciapalo", ".", SW_SHOWNORMAL); - //switch_sleep(1000000); - //ShellExecute(NULL, "open", "C:\\Program Files\\Skype\\Phone\\Skype.exe", "/secondary /username:skypiax3 /password:ciapalo", ".", SW_SHOWNORMAL); - //switch_sleep(1000000); - //ShellExecute(NULL, "open", "C:\\Program Files\\Skype\\Phone\\Skype.exe", "/secondary /username:skypiax4 /password:ciapalo", ".", SW_SHOWNORMAL); - //switch_sleep(1000000); ShellExecute(NULL, "open", "C:\\Program Files\\Skype\\Phone\\Skype.exe", "/secondary /username:skypiax5 /password:ciapalo", ".", SW_SHOWNORMAL); -#if 0 - - CreateProcess( "C:\\Program Files\\Skype\\Phone\\Skype.exe", - "/secondary /username:skypiax4 /password:xxx", // Command line. - NULL, // Process handle not inheritable. - NULL, // Thread handle not inheritable. - FALSE, // Set handle inheritance to FALSE. - NORMAL_PRIORITY_CLASS, // No creation flags. - NULL, // Use parent's environment block. - NULL, // Use parent's starting directory. - &si, // Pointer to STARTUPINFO structure. - &pi // Pointer to PROCESS_INFORMATION structure. - ); -#endif - dwLastError = GetLastError(); FormatMessage( @@ -577,23 +523,9 @@ NOTICA("AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA %s\n", SKYPIAX_P_LOG,pszMessage); LocalFree(pszMessage); -#if 0 - switch_sleep(10000000); - - while(ret){ - ret = EnumWindows(&EnumWindowsProc, pi.dwThreadId); - switch_sleep(10000); - times++; - if (times == 1000) - break; - } - NOTICA("HWND=%p\n", SKYPIAX_P_LOG, win32_hGlobal_SkypeAPIWindowHandle); -#endif return 1; } -/*******************************************************/ -#endif //NOTDEF enum { @@ -657,11 +589,11 @@ break; case WM_DESTROY: NOTICA("got DESTROY\n", SKYPIAX_P_LOG); - win32_hInit_MainWindowHandle = NULL; + p->AsteriskHandlesAst.win32_hInit_MainWindowHandle = NULL; PostQuitMessage(0); break; case WM_COPYDATA: - if (win32_hGlobal_SkypeAPIWindowHandle == (HWND) uiParam) { + if (p->AsteriskHandlesAst.win32_hGlobal_SkypeAPIWindowHandle == (HWND) uiParam) { unsigned int howmany; char msg_from_skype[2048]; @@ -672,20 +604,21 @@ sizeof(msg_from_skype) - 2); howmany = strlen(msg_from_skype) + 1; - switch_file_write(win32_AsteriskHandlesSkype->fdesc[1], msg_from_skype, &howmany); + switch_file_write(p->AsteriskHandlesAst.fdesc[1], msg_from_skype, &howmany); NOTICA("From Skype API: %s\n", SKYPIAX_P_LOG, (const char *) poCopyData->lpData); lReturnCode = 1; } break; default: - if (uiMessage == win32_uiGlobal_MsgID_SkypeControlAPIAttach) { + if(p && p->AsteriskHandlesAst.win32_uiGlobal_MsgID_SkypeControlAPIAttach) { + if (uiMessage == p->AsteriskHandlesAst.win32_uiGlobal_MsgID_SkypeControlAPIAttach) { switch (ulParam) { case SKYPECONTROLAPI_ATTACH_SUCCESS: NOTICA("\n\n\tConnected to Skype API!\n", SKYPIAX_P_LOG); - win32_hGlobal_SkypeAPIWindowHandle = (HWND) uiParam; + p->AsteriskHandlesAst.win32_hGlobal_SkypeAPIWindowHandle = (HWND) uiParam; switch_sleep(5000); - win32_AsteriskHandlesSkype->win32_hGlobal_SkypeAPIWindowHandle = - win32_hGlobal_SkypeAPIWindowHandle; + p->AsteriskHandlesAst.win32_hGlobal_SkypeAPIWindowHandle = + p->AsteriskHandlesAst.win32_hGlobal_SkypeAPIWindowHandle; break; case SKYPECONTROLAPI_ATTACH_PENDING_AUTHORIZATION: WARNINGA @@ -702,8 +635,8 @@ DEBUGA_SKYPE("Skype API available\n", SKYPIAX_P_LOG); SendMessage - (HWND_BROADCAST, win32_uiGlobal_MsgID_SkypeControlAPIDiscover, - (WPARAM) win32_hInit_MainWindowHandle, 0); + (HWND_BROADCAST, p->AsteriskHandlesAst.win32_uiGlobal_MsgID_SkypeControlAPIDiscover, + (WPARAM) p->AsteriskHandlesAst.win32_hInit_MainWindowHandle, 0); break; default: WARNINGA("GOT AN UNKNOWN SKYPE WINDOWS MSG\n", SKYPIAX_P_LOG); @@ -711,6 +644,7 @@ lReturnCode = 1; break; } + } fIssueDefProc = 1; break; } @@ -719,7 +653,7 @@ return (lReturnCode); } -int win32_Initialize_CreateWindowClass(void) +int win32_Initialize_CreateWindowClass(struct skypiax_interface *p) { unsigned char *paucUUIDString; RPC_STATUS lUUIDResult; @@ -728,26 +662,26 @@ fReturnStatus = 0; lUUIDResult = UuidCreate(&oUUID); - win32_hInit_ProcessHandle = + p->AsteriskHandlesAst.win32_hInit_ProcessHandle = (HINSTANCE) OpenProcess(PROCESS_DUP_HANDLE, FALSE, GetCurrentProcessId()); - if (win32_hInit_ProcessHandle != NULL + if (p->AsteriskHandlesAst.win32_hInit_ProcessHandle != NULL && (lUUIDResult == RPC_S_OK || lUUIDResult == RPC_S_UUID_LOCAL_ONLY)) { if (UuidToString(&oUUID, &paucUUIDString) == RPC_S_OK) { WNDCLASS oWindowClass; - strcpy(win32_acInit_WindowClassName, "Skype-API-Skypiax-"); - strcat(win32_acInit_WindowClassName, (char *) paucUUIDString); + strcpy(p->AsteriskHandlesAst.win32_acInit_WindowClassName, "Skype-API-Skypiax-"); + strcat(p->AsteriskHandlesAst.win32_acInit_WindowClassName, (char *) paucUUIDString); oWindowClass.style = CS_HREDRAW | CS_VREDRAW | CS_DBLCLKS; oWindowClass.lpfnWndProc = (WNDPROC) & skypiax_skype_present; oWindowClass.cbClsExtra = 0; oWindowClass.cbWndExtra = 0; - oWindowClass.hInstance = win32_hInit_ProcessHandle; + oWindowClass.hInstance = p->AsteriskHandlesAst.win32_hInit_ProcessHandle; oWindowClass.hIcon = NULL; oWindowClass.hCursor = NULL; oWindowClass.hbrBackground = NULL; oWindowClass.lpszMenuName = NULL; - oWindowClass.lpszClassName = win32_acInit_WindowClassName; + oWindowClass.lpszClassName = p->AsteriskHandlesAst.win32_acInit_WindowClassName; if (RegisterClass(&oWindowClass) != 0) fReturnStatus = 1; @@ -756,29 +690,29 @@ } } if (fReturnStatus == 0) - CloseHandle(win32_hInit_ProcessHandle), win32_hInit_ProcessHandle = NULL; + CloseHandle(p->AsteriskHandlesAst.win32_hInit_ProcessHandle), p->AsteriskHandlesAst.win32_hInit_ProcessHandle = NULL; return (fReturnStatus); } -void win32_DeInitialize_DestroyWindowClass(void) +void win32_DeInitialize_DestroyWindowClass(struct skypiax_interface *p) { - UnregisterClass(win32_acInit_WindowClassName, win32_hInit_ProcessHandle); - CloseHandle(win32_hInit_ProcessHandle), win32_hInit_ProcessHandle = NULL; + UnregisterClass(p->AsteriskHandlesAst.win32_acInit_WindowClassName, p->AsteriskHandlesAst.win32_hInit_ProcessHandle); + CloseHandle(p->AsteriskHandlesAst.win32_hInit_ProcessHandle), p->AsteriskHandlesAst.win32_hInit_ProcessHandle = NULL; } int win32_Initialize_CreateMainWindow(struct skypiax_interface *p) { - win32_hInit_MainWindowHandle = - CreateWindowEx(WS_EX_APPWINDOW | WS_EX_WINDOWEDGE, win32_acInit_WindowClassName, "", + p->AsteriskHandlesAst.win32_hInit_MainWindowHandle = + CreateWindowEx(WS_EX_APPWINDOW | WS_EX_WINDOWEDGE, p->AsteriskHandlesAst.win32_acInit_WindowClassName, "", WS_BORDER | WS_SYSMENU | WS_MINIMIZEBOX, CW_USEDEFAULT, CW_USEDEFAULT, - 128, 128, NULL, 0, win32_hInit_ProcessHandle, p); - return (win32_hInit_MainWindowHandle != NULL ? 1 : 0); + 128, 128, NULL, 0, p->AsteriskHandlesAst.win32_hInit_ProcessHandle, p); + return (p->AsteriskHandlesAst.win32_hInit_MainWindowHandle != NULL ? 1 : 0); } -void win32_DeInitialize_DestroyMainWindow(void) +void win32_DeInitialize_DestroyMainWindow(struct skypiax_interface *p) { - if (win32_hInit_MainWindowHandle != NULL) - DestroyWindow(win32_hInit_MainWindowHandle), win32_hInit_MainWindowHandle = NULL; + if (p->AsteriskHandlesAst.win32_hInit_MainWindowHandle != NULL) + DestroyWindow(p->AsteriskHandlesAst.win32_hInit_MainWindowHandle), p->AsteriskHandlesAst.win32_hInit_MainWindowHandle = NULL; } DWORD win32_dwThreadId; @@ -803,30 +737,29 @@ switch_file_pipe_create(&p->AsteriskHandlesAst.fdesc[0], &p->AsteriskHandlesAst.fdesc[1], skypiax_module_pool); //switch_file_pipe_timeout_set(p->AsteriskHandlesAst.fdesc[0], 100); - win32_AsteriskHandlesSkype = &p->AsteriskHandlesAst; - win32_uiGlobal_MsgID_SkypeControlAPIAttach = + p->AsteriskHandlesAst.win32_uiGlobal_MsgID_SkypeControlAPIAttach = RegisterWindowMessage("SkypeControlAPIAttach"); - win32_uiGlobal_MsgID_SkypeControlAPIDiscover = + p->AsteriskHandlesAst.win32_uiGlobal_MsgID_SkypeControlAPIDiscover = RegisterWindowMessage("SkypeControlAPIDiscover"); - LaunchSkype(); + LaunchSkype(p); switch_sleep(1000000); - if (win32_uiGlobal_MsgID_SkypeControlAPIAttach != 0 - && win32_uiGlobal_MsgID_SkypeControlAPIDiscover != 0) { - if (win32_Initialize_CreateWindowClass()) { + if (p->AsteriskHandlesAst.win32_uiGlobal_MsgID_SkypeControlAPIAttach != 0 + && p->AsteriskHandlesAst.win32_uiGlobal_MsgID_SkypeControlAPIDiscover != 0) { + if (win32_Initialize_CreateWindowClass(p)) { if (win32_Initialize_CreateMainWindow(p)) { #if 1 if (SendMessage - (HWND_BROADCAST, win32_uiGlobal_MsgID_SkypeControlAPIDiscover, - (WPARAM) win32_hInit_MainWindowHandle, 0) != 0) { + (HWND_BROADCAST, p->AsteriskHandlesAst.win32_uiGlobal_MsgID_SkypeControlAPIDiscover, + (WPARAM) p->AsteriskHandlesAst.win32_hInit_MainWindowHandle, 0) != 0) { #else if (1) { #endif - win32_AsteriskHandlesSkype->win32_hInit_MainWindowHandle = - win32_hInit_MainWindowHandle; + p->AsteriskHandlesAst.win32_hInit_MainWindowHandle = + p->AsteriskHandlesAst.win32_hInit_MainWindowHandle; while (1) { MSG oMessage; if (!running) @@ -838,9 +771,9 @@ } } } - win32_DeInitialize_DestroyMainWindow(); + win32_DeInitialize_DestroyMainWindow(p); } - win32_DeInitialize_DestroyWindowClass(); + win32_DeInitialize_DestroyWindowClass(p); } }
participants (1)
-
FreeSWITCH SVN