Версия для печати темы
Нажмите сюда для просмотра этой темы в оригинальном формате
Форум программистов > C/C++: Системное программирование и WinAPI > Установить текст в чужом EDIT


Автор: Ant 12.7.2008, 18:57
Пишу автоинсталлер для некоторых приложений, в том числе для MSWORD 2003. Так вот в том окне, где необходимо ввести лицензионный ключ, не удается установит текст. Ни SetWindowText, ни SendMessage(hEdit, WM_SETTEXT, 0, (LPARAM)"XXXXX"). Ребят, кто нить знает еще способы? Вот код, который я использую для нахождения этого Edit'а и пытаюсь установить текст.

Код

    CreateProcessA(0, "Office2003\\Setup.exe", 0, 0, FALSE,0,0,0,&StartupInfo,&ProcInfo);
    while(!hStatic){
        hwnd = FindWindow("MsiDialogCloseClass", "Установка Microsoft Office 2003");
        hStatic = FindWindowEx(hwnd, 0, 0, "Кл&юч продукта:");}

    hEdit = 0;
    hStatic = 0;
    while (!hEdit) {
        hStatic = FindWindowEx(hwnd, 0, "Static", "");
        hEdit = FindWindowEx(hStatic, 0, "Edit", "");}
    SetWindowTextA(hEdit, "XXXXX");

Автор: jonie 13.7.2008, 02:10
вы изобретаете велосипед. msi и без вас умеют автоинсталлироваться.
по теме : эмулируйте ввод пользователя... в msdn смотрите в разделе keyboard functions (не помню названия точного).

Автор: Earnest 14.7.2008, 16:35
SetWindowText должно работать. Возможно, оно просто хочет SetWindowTextW \ длинную строку ?

Автор: fridkaratel 14.7.2008, 16:41
Можно использовать внедрение в другой процесс... не знаю, как в этом случае получится, но в итоге можно работать как с обычным контролом...

Суть в том, чтобы запустить инсталяшку как дочерний процесс, а потом получить контролы на форме(ах) приложения, и работать с ними как "со своими" smile

PS: Попробуй для начала установить текст прогой Spy++ или InqSoft Window Scanner ;)

Powered by Invision Power Board (http://www.invisionboard.com)
© Invision Power Services (http://www.invisionpower.com)