Всем привет! Есть exe-шник программы, написанной на delphi. Я пишу на с++. При помощи spy++ нашёл все нужные edit'ы, пытаюсь украсть значения, но 1) программа почти всегда крашится по непонятной мне причине 2) когда значения всё же получается получить, они не те, что есть в той программе в данный момент, а те, которые прописаны там при запуске этой программы, что мне так же непонятно. Code: HWND hWnd = FindWindow(NULL, L"Reliability"); // ищем наше окошко if (hWnd) // если нашли окошко { HWND TPageControl = FindWindowEx(hWnd, NULL, L"TPageControl", NULL); // берём второй по счёту TPageControl TPageControl = FindWindowEx(hWnd, TPageControl, L"TPageControl", NULL); HWND TTabSheet = FindWindowEx(TPageControl, NULL, L"TTabSheet", NULL); HWND TEdit = FindWindowEx(TTabSheet, NULL, L"TEdit", NULL); int editlength = GetWindowTextLength(TEdit); TCHAR* Targets = new TCHAR( editlength + 1 ); GetWindowText( TEdit, Targets, editlength + 1 ); // targets textBox2->Text = gcnew String(Targets); } Наверное, я делаю что-то не так, но делаю это впервые, так что сильно не ругайте Спасибо!
Спасибо, я идиот Code: int editlength = GetWindowTextLength(TEdit); TCHAR* Targets = new TCHAR( editlength + 1 ); int count = SendMessage(TEdit, WM_GETTEXT, editlength + 1, (LPARAM) Targets); textBox3->Text = gcnew String(Targets); всё работает.
А удалять Targets кто будет? Или утечка памяти это норм? И вообще, так на плюсах не программируют, где смартпоинтер для переменной Targets?
Нельзя просто так взять и использовать везде смарт поинтеры. Подход такой ведёт на тёмную сторону Силы.