Имя пользователя:
Пароль:  
Помощь | Регистрация | Забыли пароль?  

Показать сообщение отдельно
MKN MKN вне форума

Ветеран


Сообщения: 2371
Благодарности: 562

Профиль | Отправить PM | Цитировать


Цитата Vincent7:
после нажатия enter ничего не отправляется в окно установки... »
Попробуй установить задержку перед "нажатием" . Иногда консольное окно появляется с задержкой . Можно попробовать "поймать" его и сделать передним планом.
Сообщения WM_SETTEXT почему то не передаются в консольное окно (у меня так, может чего не учёл...)
Говорят, можно использовать WM_COPYDATA или SendMessageTimeout, не пробовал, да и возиться неохота...

Но можно "набрать" команду в консоли с помощью WM_CHAR. Лажа вообщем то, но работает... Например, пошлём в консоль и выполним команду DIR :
Код: Выделить весь код
OutFile ConsoleWindow.exe
!include "WinMessages.nsh"

Section
Exec "$SYSDIR\cmd.exe"
loop:
FindWindow $0 "ConsoleWindowClass" "$SYSDIR\cmd.exe"
IsWindow $0 0 loop
System::Call 'user32::SetForegroundWindow(i r0)' 
; так просто, нажмём Enter...
Sleep 300
SendMessage $0 ${WM_CHAR} "0x0D" "0"
; таперича наберём DIR
Sleep 100
SendMessage $0 ${WM_CHAR} 0x44  "0"
Sleep 100
SendMessage $0 ${WM_CHAR} 0x49  "0"
Sleep 100
SendMessage $0 ${WM_CHAR} 0x52  "0"
Sleep 300
SendMessage $0 ${WM_CHAR} "0x0D" "0"
SectionEnd
Только до сих пор не ясно - зачем тебе всё это надо именно в таком извращённо-консольном варианте ? Неужели нельзя организовать выполнение команд из скрипта без консольных посредников ?

Последний раз редактировалось MKN, 13-12-2013 в 16:08.

Это сообщение посчитали полезным следующие участники:

Отправлено: 15:36, 13-12-2013 | #845