From 3cc2e824092b0b542b3d1857bb742514560b0f32 Mon Sep 17 00:00:00 2001 From: Kirill Volinsky Date: Sat, 17 Nov 2012 11:59:24 +0000 Subject: Skype: better way of finding running process git-svn-id: http://svn.miranda-ng.org/main/trunk@2335 1316c22d-e87f-b044-9b9b-93d7a3e3ba9c --- protocols/Skype/src/skype.cpp | 25 ++++++++++++++++++------- protocols/Skype/src/skype.h | 1 + 2 files changed, 19 insertions(+), 7 deletions(-) (limited to 'protocols') diff --git a/protocols/Skype/src/skype.cpp b/protocols/Skype/src/skype.cpp index ec2ab96e92..77fbac14b5 100644 --- a/protocols/Skype/src/skype.cpp +++ b/protocols/Skype/src/skype.cpp @@ -250,7 +250,7 @@ int StartSkypeRuntime() PROCESS_INFORMATION pi; TCHAR param[128]; - ZeroMemory(&cif,sizeof(STARTUPINFO)); + ZeroMemory(&cif, sizeof(STARTUPINFO)); cif.cb = sizeof(STARTUPINFO); cif.dwFlags = STARTF_USESHOWWINDOW; cif.wShowWindow = SW_HIDE; @@ -317,14 +317,25 @@ int StartSkypeRuntime() } } - if (FindWindow(NULL, szFilename)) - port += rand() % 100; - + PROCESSENTRY32 entry; + entry.dwSize = sizeof(PROCESSENTRY32); + + HANDLE snapshot = CreateToolhelp32Snapshot(TH32CS_SNAPPROCESS, NULL); + if (Process32First(snapshot, &entry) == TRUE) { + while (Process32Next(snapshot, &entry) == TRUE) { + if (_tcsicmp(entry.szExeFile, _T("SkypeKit.exe")) == 0) { + HANDLE hProcess = OpenProcess(PROCESS_ALL_ACCESS, FALSE, entry.th32ProcessID); + port += rand() % 100; + CloseHandle(hProcess); + break; + } + } + } + CloseHandle(snapshot); + mir_sntprintf(param, SIZEOF(param), L"-p -p %d", port); + int startingrt = CreateProcess(szFilename, param, NULL, NULL, FALSE, CREATE_NEW_CONSOLE, NULL, NULL, &cif, &pi); - int startingrt = CreateProcess(szFilename, param, NULL, - NULL, FALSE, CREATE_NEW_CONSOLE, - NULL, NULL, &cif, &pi); return startingrt; } diff --git a/protocols/Skype/src/skype.h b/protocols/Skype/src/skype.h index 398a3ad2b8..e8ffe2b3b6 100644 --- a/protocols/Skype/src/skype.h +++ b/protocols/Skype/src/skype.h @@ -5,6 +5,7 @@ #include #include #include +#include //#pragma warning(push) //# pragma warning(disable:4312) -- cgit v1.2.3