Что сходу увиделось: так писать точно нельзя:
это ссылка на буфер неизменяемой памяти,
которая подразумевается const char
> char *p1 = " _________";
Эту строчку нужно переписать вот так:
char p1[] = " _________";
Попробуйте так:
#import "user32.dll" int GetWindowTextA( int hWnd, string lpString, int nMaxCount ); int GetWindowTextLengthA( int hWnd ); #import //............ GetWindowTextA(hWnd, p1, GetWindowTextLengthA(hWnd)); // .........
Что сходу увиделось: так писать точно нельзя:
это ссылка на буфер неизменяемой памяти,
которая подразумевается const char
> char *p1 = " _________";
Эту строчку нужно переписать вот так:
char p1[] = " _________";
вообще так писать можно!
есть рабочий код, проблема в том что читать надо Edit чужого приложения - а функция GwtWindowTextA не делает это - ( из описания API )
int FindHendlKey( int Current , string findname ) { // Print( "FindHendlKey" ); // обязательно!!! оставить как есть string p1= "012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234"; int temp = GetWindow( Current , GW_CHILD ); // ищем while ( temp != NULL ) { GetWindowTextA( temp , p1 , StringLen(findname )+1 ); if ( p1 == findname) // проверим а не та ли это кнопка { return( temp ); // это то что мы ищем } int r = FindHendlKey( temp , findname ) ; // не значит не она , обойдем ее дочерние объекты if ( r != NULL ) { return (r); // опс нашли дочку } temp = GetWindow( temp , GW_HWNDNEXT ); // проверяем следующий объект, дочерний } return (0); }
Второе, на что стоит обратить внимание- это то, что строка yzh@mail.ru = 11 символов,
т.е. буфер должен быть 12 байт, не 8
Второе, на что стоит обратить внимание- это то, что строка yzh@mail.ru = 11 символов,
т.е. буфер должен быть 12 байт, не 8
да, это я как пример просто привел!
ответил Вам выше
я ставил как положенно - но увы ... я сначала подумал что MQL4
но когда и в Си++ тоже не получилось - увы
у самого всезнающего google - явных примеров не нашел
---
Привожу работающий код:
int APIENTRY _tWinMain(HINSTANCE hInstance, HINSTANCE hPrevInstance, LPTSTR lpCmdLine, int nCmdShow) { wchar_t a[] = L" "; SendMessage((HWND)0x00040E86, WM_GETTEXT, sizeof(a), (LPARAM)a); return 0; }Немного юникодовый, но у меня с 2006-ого всё юникодовое :-)
Вот так точнее:
GetWindowTextA(hWnd, p1, GetWindowTextLengthA(hWnd) + 1);
- Бесплатные приложения для трейдинга
- 8 000+ сигналов для копирования
- Экономические новости для анализа финансовых рынков
Вы принимаете политику сайта и условия использования
не ожидал что возникнет проблема
пытаюсь API прочитать поле Edit - чужого приложения
код на Си++
распринтовка дает пустую строку :-(
подкажите в чем проблема может быть
----