diff --git a/WindowFinder.cpp b/WindowFinder.cpp index ac681e8..1a617a5 100644 --- a/WindowFinder.cpp +++ b/WindowFinder.cpp @@ -10,8 +10,8 @@ struct EnumWindowsCallbackArgs { vector windowHandles; }; -LPWSTR GetProcessNameFromProcessId(const DWORD processId) { - LPWSTR filename = new WCHAR[MAX_PATH]; +wstring GetProcessNameFromProcessId(const DWORD processId) { + wchar_t filename[MAX_PATH] = {0}; HANDLE processHandle = OpenProcess(PROCESS_QUERY_LIMITED_INFORMATION, FALSE, processId); if (processHandle != nullptr) { @@ -19,7 +19,7 @@ LPWSTR GetProcessNameFromProcessId(const DWORD processId) { CloseHandle(processHandle); } - return filename; + return wstring(filename); } BOOL WindowFinder::IsWindowOnCurrentDesktop(HWND windowHandle) { @@ -39,9 +39,9 @@ BOOL WindowFinder::IsWindowOnCurrentDesktop(HWND windowHandle) { BOOL WindowFinder::IsWindowFromCurrentProcess(HWND windowHandle) { DWORD windowProcessId; GetWindowThreadProcessId(windowHandle, &windowProcessId); - LPWSTR processName = GetProcessNameFromProcessId(windowProcessId); + wstring processName = GetProcessNameFromProcessId(windowProcessId); - return wcscmp(currentProcessName, processName) == 0; + return currentProcessName == processName; } BOOL CALLBACK EnumWindowsCallback(HWND windowHandle, LPARAM parameters) { diff --git a/WindowFinder.h b/WindowFinder.h index 4fb385e..c0abcbe 100644 --- a/WindowFinder.h +++ b/WindowFinder.h @@ -1,5 +1,6 @@ #pragma once #include +#include #include class WindowFinder { @@ -9,7 +10,7 @@ class WindowFinder { BOOL IsWindowOnCurrentDesktop(HWND windowHandle); BOOL IsWindowFromCurrentProcess(HWND windowHandle); HWND currentWindowHandle; - LPWSTR currentProcessName; + std::wstring currentProcessName; private: IVirtualDesktopManager *desktopManager; // Win10 ++ only.