Re[4]: Проблема с получением текста из другого окна.
От: Nuzhny Россия https://github.com/Nuzhny007
Дата: 04.06.08 05:03
Оценка:
Здравствуйте, Pavel Dvorkin, Вы писали:

PD>При чем тут поиск окна ?


Этот вызов стоит в каллбэке, в котором ищется окно. А полный текст получается ниже — там уже стоит 16000 символов.
Re: Проблема с получением текста из другого окна.
От: IDr Россия  
Дата: 04.06.08 05:08
Оценка:
Здравствуйте, Answer_i3, Вы писали:

A_>делаю примерно следующие

A_>
A_>function GetAcadCmdLine(AcadWnd:HWND):WideString ; stdcall; 
A_>    var cmdText:array [0..15999] of Char;//это конечно не красиво.... но пока так 
A_>    //*************************************************************** 
A_>    function EnumChildProc(Wnd:HWND;lParam:LongInt):boolean; stdcall; 
A_>        var wndText:array [0..15999] of Char; 
A_>    begin 
A_>        if lParam<>0 then 
A_>            Result:=false 
A_>        else 
A_>        begin 
A_>            //SendMessage(Wnd,WM_GETTEXT,1600,integer(@wndText)); 
A_>            //if (Pos(' ',AnsiUpperCase(wndText))>0)then 
A_>            GetWindowText(Wnd,wndText,255); 
A_>            if (AnsiContainsText(wndText,'MountTam')) then 
A_>                CommandWnd:=Wnd; 
A_>            Result:=true; 
A_>        end; 
A_>    end; 
A_>    //*************************************************************** 
A_>begin 
A_>    CommandWnd:=0; 
A_>    EnumChildWindows(AcadWnd,@EnumChildProc,CommandWnd); 
A_>    if CommandWnd<>0 then 
A_>    begin 
A_>        SendMessage(CommandWnd,WM_GETTEXT,16000,LPARAM(integer(@cmdText))); 
A_>        Result:=cmdText; 
A_>    end; 
A_>end; 
A_>

A_>заранее спасибо!!!!

а кстати, интересно вот тут :
A_>            if (AnsiContainsText(wndText,'MountTam')) then 
A_>                CommandWnd:=Wnd; 
A_>            Result:=true;

может все таки:
A_>            if (AnsiContainsText(wndText,'MountTam')) then 
A_>                lParam:=Wnd; 
A_>            Result:=true;

и еще:
A_>    function EnumChildProc(Wnd:HWND;var lParam:LongInt):boolean; stdcall;


но это так..не по сути, но может из-за этого навелось неверное поведение?
Re[3]: Проблема с получением текста из другого окна.
От: IDr Россия  
Дата: 04.06.08 05:17
Оценка:
Здравствуйте, Answer_i3, Вы писали:

A_>Да там както не понятно, например содержимое командной строки следующее


A_>Файл настройки загружен успешно. Группа настройки: ACAD

A_>Файл настройки загружен успешно. Группа настройки: CUSTOM
A_>Выполняется регенерация модели.
A_>Утилиты меню AutoCAD загружены.
A_>Команда: КОМСТР

Да и вообще интересно как то получается..
в EnumChildProc окно находится как содержащее текст "MountTam"
А в основной функции это же окно "должно иметь текст" командной строки..тут либо пояснения нужны,
что код не полный (EnumChildWindows выполняется где-то в начале, а текст командной строки читается
в другом месте позже), либо вы что-то напутали в приведенном коде, может упустили что-то, из-за чего
и не видно ошибки?

Удачи!
Re[2]: Проблема с получением текста из другого окна.
От: Аноним  
Дата: 04.06.08 05:49
Оценка:
Здравствуйте, IDr, Вы писали:



IDr>а кстати, интересно вот тут :

IDr>
A_>>            if (AnsiContainsText(wndText,'MountTam')) then 
A_>>                CommandWnd:=Wnd; 
A_>>            Result:=true; 
IDr>

IDr>может все таки:
IDr>
A_>>            if (AnsiContainsText(wndText,'MountTam')) then 
A_>>                lParam:=Wnd; 
A_>>            Result:=true; 
IDr>

IDr>и еще:
IDr>
A_>>    function EnumChildProc(Wnd:HWND;var lParam:LongInt):boolean; stdcall; 


IDr>

if (AnsiContainsText(wndText,'MountTam')) then
CommandWnd[/b]:=Wnd;
Result:=true;
IDr>[/pascal]

CommandWnd это глобальная переменная — hwnd командной строки,его я нахожу верно


function EnumChildProc(Wnd:HWND;var lParam:LongInt):boolean; stdcall; если делаю так то велетает Access Vailation.
Подождите ...
Wait...
Пока на собственное сообщение не было ответов, его можно удалить.