Я пробовал различные фрагменты кода здесь и там, но все еще не увенчался успехом. Я просто пытаюсь найти одно из открытых окон (это окно браузера), используя FindWindow(NULL,WINDOWTITLE)
, с определенной строкой заголовка.Как только я получаю дескриптор окна, мне нужны координаты, используя GetWindowRect
.
. Этот код возвращает мне координаты, но кажется, что он находится в бесконечном цикле, есть около 100 строк вывода сКоординаты должны быть равны 1. Я не вижу никакой конструкции while (изначально Java-программиста) ... интересно, почему она повторяется ...
struct WindowInfo
{
HWND m_hWnd;
string m_title;
WindowInfo(HWND hwnd, string title) : m_hWnd(hwnd), m_title(title) {}
};
BOOL CALLBACK EnumWindowsProc(HWND hwnd,LPARAM lParam)
{
vector<WindowInfo*> & windows = *(vector<WindowInfo*>*)lParam;
char title[256];
HANDLE wndHandle;
LPCWSTR WINDOWTITLE = L"eBargain 2 Share - Windpos Internet Explorer";
RECT rRect;
LPRECT lpRect;
RECT rc;
hwnd = FindWindow(NULL,WINDOWTITLE);
GetWindowRect(hwnd,&rc);
printf("Position: %d x %d\tSize: %d x %d\n",rc.left,rc.top,rc.right- rc.left,rc.bottom-rc.top);
/* Enumerating through all the windows tells me that I am on the right track... (Should I just try to find the TITLE STRING by comparing every title from the following enumeration ?
*/
GetWindowTextA(hwnd, title, 256);
windows.push_back(new WindowInfo(hwnd,title));
// printf("%s\n", title);
return TRUE;
}
int main()
{
vector<WindowInfo*> windows;
BOOL ret = EnumWindows(EnumWindowsProc, (LPARAM) &windows);
if ( ret )
{
//windows have windowinfo of all enumerated windows
}
}