| Версия для печати темы
Нажмите сюда для просмотра этой темы в оригинальном формате |
| Форум программистов > C/C++: Системное программирование и WinAPI > Как сделать, чтобы putty открывалась при запуске |
| Автор: winsent7 24.1.2011, 17:11 |
| Здравствуйте, идея вот в чем: хочу модернизировать программу записи в файл так, чтобы она сама открывала putty и отправляла строки не в файл, а в сразу в устройство, основная проблема: как сделать, чтобы программа открывала терминал, может кто подскажет? |
| Автор: RastaDja 24.1.2011, 17:31 | ||
| если просто запустить, тогда ShellExecute() или WinExec() Вот код для проводника
Добавлено через 57 секунд чуть не забыл |
| Автор: winsent7 25.1.2011, 09:32 |
| Спасибо. Еще поясните пож-ста. 1. А в чем разница, если ее нет, то WinExec() короче :scratch_, one-s_head, и что значит SW_SHOW ? 2. При запуске выводится сообщение о подтверждении запуска putty, как это в программе указать? 3. Потом еще надо параметры подключения выставлять(скорость, номер порта) Вобщем хочется, чтобы программа сама все это сделала и предложила уже ввести логин и пароль входа в устройство. |
| Автор: jonie 25.1.2011, 10:16 | ||||
WinExec не использовать - она устарела и будет удалена в дальнейшем.
|
| Автор: winsent7 25.1.2011, 10:22 |
| Спасибо, буду изучать. |
| Автор: winsent7 26.1.2011, 11:13 | ||
Не решается проблема запуска cmd - при выполнении программы появляется окно cmd, но написано там "Для продолжения нажмите любую клавишу...", после нажатия оной окно исчезает. Подскажите пож-ста что не так. Спасибо.
PS. с shellapi.h не работает почему-то (Visual 2008 EE) |
| Автор: xvr 26.1.2011, 11:39 |
| Не так путь к cmd. У меня на машине он лежит в C:\WINNT\system32\cmd.exe, на другой машине он может лежать в C:\windows\system32\cmd.exe, а на третьей вообще где угодно Вопрос - нафига вам cmd? Вы же putty запускать собирались. |
| Автор: winsent7 26.1.2011, 11:55 | ||
так мне по-любому нужна функция запуска cmd, а потом из cmd уже запускать сессию putty, может так прокатит? ShellExecute(NULL,TEXT("open"),TEXT("c:\\windows\\system32\\cmd.exe\\putty -load "session""), NULL, NULL, SW_SHOWNORMAL); Добавлено @ 12:04 не прокатило... мне сразу надо в корневой попасть, это наверное в пятом параметре указывается? |
| Автор: winsent7 26.1.2011, 12:59 | ||||
В таком виде
результат
буду пробовать разобраться, спасибо |
| Автор: xvr 26.1.2011, 16:20 |
| У вас на putty пути прописаны? Если просто открыть окно cmd и набрать там putty, что получается? |
| Автор: winsent7 28.1.2011, 20:29 | ||
запускается, но если предварительно положить ее в место где по умолчанию открывается cmd(может подскажете заодно как сделать, чтобы при запуске я в C:\ сразу оказывался. мне кажется проблема в том, что программа пытается открыть putty там, где его нет, но пока не могу понять как отправить в нужное место. Когда я просто запускаю через свою программу cmd(путь - TEXT("c:\\windows\\system32\\cmd.exe")), то вижу это - c:\Visual Studio\Projects\cmd\cmd> , соответственно когда параметр указываешь "Putty", программа не понимает где искать, наверное... |
| Автор: xvr 28.1.2011, 20:51 | ||
Не надо его никуда направлять Либо запускать putty через ShellExecute с полным путем (где он там у вас лежит?) Добавлено через 3 минуты и 6 секунд
Сделайте ярлык для cmd и пропишите ему в Свойствах C:\ в 'Рабочую папку' |
| Автор: winsent7 30.1.2011, 15:34 |
| xvr, спасибо, буду экпериментировать. |
| Автор: winsent7 1.2.2011, 15:43 |
| Сессия запускается, но надо нажать Enter, чтобы предложили ввести логин и пароль, как бы это программно сделать? |
| Автор: winsent7 2.2.2011, 11:11 |
| Видимо, с помощью SendInput(), осталось с параметрами разобраться |
| Автор: winsent7 4.2.2011, 09:29 | ||
Что-то не получается, подскажите пож-ста, наверное, косяк с названием Enter.
В таком виде пишет " необъявленный идентификатор VK_ENTER" Спасибо. Добавлено @ 09:41 Только что нашел(полдня не мог найти) - VK_RETURN, буду пробовать |
| Автор: winsent7 4.2.2011, 09:54 |
| Не работает, компилится без ошибок, но эфеект имеет странный, после попытки запуска моей программы, putty не реагирует потом на ENTER, что бы это могло быть? |
| Автор: winsent7 4.2.2011, 17:06 | ||
|
| Автор: winsent7 10.2.2011, 14:47 | ||||
Неужели ни у кого нет идей?
|
| Автор: xvr 10.2.2011, 16:47 |
| Попробуй добавить небольшие задержки между (и перед) SendInput Добавлено @ 16:48 PS. Кстати - а где второй вызов SendInput с KEYEVENTF_KEYUP? |
| Автор: winsent7 11.2.2011, 11:50 | ||||
Да, теперь все работает как надо - Sleep() перед SendInput, Спасибо всем!
без этого работает, кстати , почему? |
| Автор: xvr 11.2.2011, 12:46 |
| Сильно зависит от приложения, кому отправляют SendInput. Некоторые могут игнорировать события отпускания кнопок (скорее даже - почти все игнорируют), а некоторые могут ловить. Так что лучше все же их посылать (для надежности) |
| Автор: winsent7 11.2.2011, 15:11 |
| xvr, спасибо за ответы! |