| Версия для печати темы
Нажмите сюда для просмотра этой темы в оригинальном формате |
| Форум программистов > C/C++: Системное программирование и WinAPI > запуск программы из терминала??? |
| Автор: Syberex 3.5.2007, 11:31 |
| трабла такая захажу на удалённый компьютер через терминал, ну ястное дело винда мне создаёт мою сессию, я запускаю программу, и после выхода из клиента терминалов чтоб прога работала, т.е запустить надо так чтоб как будто без терминала запускал, также и убить из теминала, как это сделать? всё дело в том что если прога запущенана компе, и я вхожу по терминалу, то например HWND hWnd = FindWindow("SciCalc",NULL); не находит его, т.е. трабла как преодалеть барьер терминала??? |
| Автор: korbian 3.5.2007, 15:57 |
Возможно я что-то не так понял, но написав службу можно преодолеть некоторые ограничения. правда по FindWindow ты службу не найдешь |
| Автор: -Kp0T- 4.5.2007, 01:37 |
| Убить поможет тебе tasklist с taskkill -ом (use /? for help). Не знаю что у тебя с терминалом, у мну таких проблем нет. FindWindow по крайней мере у мня notepad обозвала как asdf ! Чего именно не хватает тебе при запуске из терминала? (WinAmp окна не видно что ли??) |
| Автор: Syberex 4.5.2007, 08:12 |
| не хватает того, что я хочу запустить из терминала прогу и после выхода из него(т.е завершения сеанса) она продолжала работать |
| Автор: -Kp0T- 4.5.2007, 09:26 |
| Насколько я помню для соединения создается новая сессия пользователя (в группе у которой есть права на Remote Connection use). Telnet Session Manager создает процессы от имени terminal-залогиненного пользователя, при завершений сессии закрывает сессию удаленного пользователя. Решение: Запустить процесс от имени другого пользователя в терминальной сессии (запускается только Win32 Application; к примеру, buhgalteria.doc запустить не удасться): runas /user:Administrator "c:\Progra~1\winamp.exe c:\progra~1\winamp.m3u" Естественно надо пароль админа знать..:) |
| Автор: Tectoder 4.5.2007, 09:42 |
| Процесс запустится в той же сессии, и точно так же завершиться вместе с этой сессией. Возможно будет удачным решением не завершать терминальную сессию, пока прога должна работать?Вопрос не в терминале. Для каждого терминала создается своя оконная станция, именно через нее ты не можешь "перескочить". Однако, можно перенести свой процесс в оконную станцию к другому процессу, с помощью SetProcessWindowStation. |
| Автор: -Kp0T- 4.5.2007, 09:56 | ||
2Tectoder:
Не завершиться, проверь... Прошелся дебаггером по runas.exe наткнулся на вызов функции CredUICmdLinePromptForCredentials из credui.dll, посмотри описание функции, она тебе тоже можеть помочь... |
| Автор: Tectoder 4.5.2007, 10:31 |
| Проверил. Завершилось. Как и следовало ожидать. А что ты делал что она у тебя осталась в памяти? Может ты вместо Logoff сделал Disconnect?И вам того желаю. Нет ну серьезно - твоя функция это простая СТРОКОВАЯ функция которая разбивает аргумент на подстроки по заданным правилам. |
| Автор: -Kp0T- 4.5.2007, 12:18 | ||||
По моему речь все-таки идет про Disconnect (по крайней мере я так интерпретировал его слова)... 2Tectoder:
Склонаяя голову, |
| Автор: dumb 4.5.2007, 13:28 |
| запускать - at /? убивать - tskill /? Добавлено через 1 минуту и 38 секунд тему переместить надо куда-нибудь в "Windows"... |