diff options
author | Thorvald Natvig <slicer@users.sourceforge.net> | 2010-02-25 17:18:35 +0300 |
---|---|---|
committer | Thorvald Natvig <slicer@users.sourceforge.net> | 2010-02-25 17:18:35 +0300 |
commit | f2c191daf8f5c7f5fa3b64ff9a6da5aaf108a85e (patch) | |
tree | 99427bb7e07391bd4e166781357d84e37c7c908f /plugins/codmw2 | |
parent | 63adacd5fcee46c3b5294aade232bcd46e50cab4 (diff) |
The grand plugin multiregexp experiment
Diffstat (limited to 'plugins/codmw2')
-rw-r--r-- | plugins/codmw2/codmw2.cpp | 87 |
1 files changed, 23 insertions, 64 deletions
diff --git a/plugins/codmw2/codmw2.cpp b/plugins/codmw2/codmw2.cpp index a56e2ebe9..e7de4f30a 100644 --- a/plugins/codmw2/codmw2.cpp +++ b/plugins/codmw2/codmw2.cpp @@ -30,49 +30,7 @@ SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. */ -#define _USE_MATH_DEFINES - -#include <stdio.h> -#include <stdlib.h> -#include <windows.h> -#include <tlhelp32.h> -#include <math.h> - -#include "../mumble_plugin.h" - -HANDLE h = NULL; - -static DWORD getProcess(const wchar_t *exename) { - PROCESSENTRY32 pe; - DWORD pid = 0; - - pe.dwSize = sizeof(pe); - HANDLE hSnap = CreateToolhelp32Snapshot(TH32CS_SNAPPROCESS, 0); - if (hSnap != INVALID_HANDLE_VALUE) { - BOOL ok = Process32First(hSnap, &pe); - - while (ok) { - if (wcscmp(pe.szExeFile, exename)==0) { - pid = pe.th32ProcessID; - break; - } - ok = Process32Next(hSnap, &pe); - } - CloseHandle(hSnap); - } - return pid; -} - -static bool peekProc(VOID *base, VOID *dest, SIZE_T len) { - SIZE_T r; - BOOL ok=ReadProcessMemory(h, base, dest, len, &r); - return (ok && (r == len)); -} - -static void about(HWND h) { - ::MessageBox(h, L"Reads audio position information from Call of Duty: Modern Warfare 2 Multiplayer v1.0.182.", L"Mumble CoDMW2 MP Plugin", MB_OK); -} - +#include "../mumble_plugin_win32.h" static int fetch(float *avatar_pos, float *avatar_front, float *avatar_top, float *camera_pos, float *camera_front, float *camera_top, std::string &context, std::wstring &identity) { float viewHor, viewVer; @@ -166,31 +124,18 @@ static int fetch(float *avatar_pos, float *avatar_front, float *avatar_top, floa } static int trylock(const std::multimap<std::wstring, unsigned long long int> &pids) { - h = NULL; - DWORD pid=getProcess(L"iw4mp.exe"); - if (!pid) - return false; - - h=OpenProcess(PROCESS_VM_READ, false, pid); - if (!h) + if (! initialize(pids, L"iw4mp.exe")) return false; float apos[3], afront[3], atop[3], cpos[3], cfront[3], ctop[3]; std::string context; std::wstring identity; - if (fetch(apos, afront, atop, cpos, cfront, ctop, context, identity)) + if (fetch(apos, afront, atop, cpos, cfront, ctop, context, identity)) { return true; - - CloseHandle(h); - h = NULL; - return false; -} - -static void unlock() { - if (h) { - CloseHandle(h); - h = NULL; + } else { + generic_unlock(); + return false; } } @@ -201,18 +146,32 @@ static const std::wstring longdesc() { static std::wstring description(L"Call of Duty: Modern Warfare 2 MP v1.0.182"); static std::wstring shortname(L"Call of Duty: Modern Warfare 2 MP"); +static int trylock1() { + return trylock(std::multimap<std::wstring, unsigned long long int>()); +} + static MumblePlugin codmw2plug = { MUMBLE_PLUGIN_MAGIC, description, shortname, - about, NULL, - trylock, - unlock, + NULL, + trylock1, + generic_unlock, longdesc, fetch }; +static MumblePlugin2 codmw2plug2 = { + MUMBLE_PLUGIN_MAGIC_2, + MUMBLE_PLUGIN_VERSION, + trylock +}; + extern "C" __declspec(dllexport) MumblePlugin *getMumblePlugin() { return &codmw2plug; } + +extern "C" __declspec(dllexport) MumblePlugin2 *getMumblePlugin2() { + return &codmw2plug2; +} |