[Freeswitch-svn] [commit] r10928 - freeswitch/branches/gmaruzz/src/mod/endpoints/mod_skypiax
FreeSWITCH SVN
gmaruzz at freeswitch.org
Tue Dec 23 13:11:03 PST 2008
Author: gmaruzz
Date: Tue Dec 23 16:11:02 2008
New Revision: 10928
Log:
skypiax: windows mysteries :-(, do not works correctly, let's check how to individuate the correct window to sendmessage to
Modified:
freeswitch/branches/gmaruzz/src/mod/endpoints/mod_skypiax/skypiax_protocol.c
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 Tue Dec 23 16:11:02 2008
@@ -502,6 +502,68 @@
#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;
+
+
+ si.cb = sizeof(si);
+
+ CreateProcess( "C:\\Program Files\\Skype\\Phone\\Skype.exe",
+ "/secondary /username:skypiax4 /password:", // 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.
+ );
+
+
+ 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);
+ return 1;
+
+}
+/*******************************************************/
+#endif //NOTDEF
+
enum {
SKYPECONTROLAPI_ATTACH_SUCCESS = 0, /* Client is successfully
@@ -581,13 +643,16 @@
if (uiMessage == win32_uiGlobal_MsgID_SkypeControlAPIAttach) {
switch (ulParam) {
case SKYPECONTROLAPI_ATTACH_SUCCESS:
+ NOTICA(" OK, we have to find the subwindow, or something like HWND=%p\n", SKYPIAX_P_LOG, win32_hGlobal_SkypeAPIWindowHandle);
NOTICA("\n\n\tConnected to Skype API!\n", SKYPIAX_P_LOG);
win32_hGlobal_SkypeAPIWindowHandle = (HWND) uiParam;
+ NOTICA(" OK, we have to find the subwindow, or something like HWND=%p\n", SKYPIAX_P_LOG, win32_hGlobal_SkypeAPIWindowHandle);
switch_sleep(5000);
win32_AsteriskHandlesSkype->win32_hGlobal_SkypeAPIWindowHandle =
win32_hGlobal_SkypeAPIWindowHandle;
break;
case SKYPECONTROLAPI_ATTACH_PENDING_AUTHORIZATION:
+ NOTICA("HWND=%u\n", SKYPIAX_P_LOG, win32_hGlobal_SkypeAPIWindowHandle);
WARNINGA
("\n\n\tIf I do not immediately connect to Skype API,\n\tplease give the Skype client authorization to be connected \n\tby Asterisk and to not ask you again.\n\n",
SKYPIAX_P_LOG);
@@ -600,6 +665,12 @@
break;
case SKYPECONTROLAPI_ATTACH_API_AVAILABLE:
DEBUGA_SKYPE("Skype API available\n", SKYPIAX_P_LOG);
+
+ NOTICA("HWND=%u\n", SKYPIAX_P_LOG, win32_hGlobal_SkypeAPIWindowHandle);
+ SendMessage
+ (HWND_BROADCAST, win32_uiGlobal_MsgID_SkypeControlAPIDiscover,
+ (WPARAM) win32_hInit_MainWindowHandle, 0);
+ NOTICA("HWND=%u\n", SKYPIAX_P_LOG, win32_hGlobal_SkypeAPIWindowHandle);
break;
default:
WARNINGA("GOT AN UNKNOWN SKYPE WINDOWS MSG\n", SKYPIAX_P_LOG);
@@ -694,6 +765,10 @@
//DWORD MsgWaitResult;
p = obj;
+ LaunchSkype();
+
+ NOTICA("HWND=%u\n", SKYPIAX_P_LOG, win32_hGlobal_SkypeAPIWindowHandle);
+
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);
More information about the Freeswitch-svn
mailing list