[Freeswitch-svn] [commit] r10942 - freeswitch/branches/gmaruzz/src/mod/endpoints/mod_skypiax
FreeSWITCH SVN
gmaruzz at freeswitch.org
Fri Dec 26 04:36:18 PST 2008
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);
}
}
More information about the Freeswitch-svn
mailing list