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


Автор: Syberex 3.5.2007, 11:31
трабла такая захажу на удалённый компьютер через терминал, ну ястное дело винда мне создаёт мою сессию, я запускаю программу, и после выхода из клиента терминалов чтоб прога работала, т.е запустить надо так чтоб как будто без терминала запускал, также и убить из теминала, как это сделать? всё дело в том что если прога запущенана компе, и я вхожу по терминалу, то например HWND hWnd = FindWindow("SciCalc",NULL); не находит его, т.е. трабла как преодалеть барьер терминала???

Автор: korbian 3.5.2007, 15:57
Цитата(Syberex @  3.5.2007,  12:31 Найти цитируемый пост)
трабла как преодалеть барьер терминала???

Возможно я что-то не так понял, но написав службу можно преодолеть некоторые ограничения.
правда по FindWindow ты службу не найдешь  smile

Автор: -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
Цитата(-Kp0T- @  4.5.2007,  09:26 Найти цитируемый пост)
Решение: Запустить процесс от имени другого пользователя
Процесс запустится в той же сессии, и точно так же завершиться вместе с этой сессией.
Возможно будет удачным решением не завершать терминальную сессию, пока прога должна работать?
Цитата(Syberex @  3.5.2007,  11:31 Найти цитируемый пост)
как преодалеть барьер терминала??? 
Вопрос не в терминале. Для каждого терминала создается своя оконная станция, именно через нее ты не можешь "перескочить". Однако, можно перенести свой процесс в оконную станцию к другому процессу, с помощью SetProcessWindowStation.

Автор: -Kp0T- 4.5.2007, 09:56
2Tectoder: 
Цитата

Процесс запустится в той же сессии, и точно так же завершиться вместе с этой сессией.

Не завершиться, проверь...

Прошелся дебаггером по runas.exe наткнулся на вызов функции CredUICmdLinePromptForCredentials из credui.dll, посмотри описание функции, она тебе тоже можеть помочь...

Автор: Tectoder 4.5.2007, 10:31
Цитата(-Kp0T- @  4.5.2007,  09:56 Найти цитируемый пост)
Не завершиться, проверь...
Проверил. Завершилось. Как и следовало ожидать. А что ты делал что она у тебя осталась в памяти? Может ты вместо Logoff сделал Disconnect?
Цитата(-Kp0T- @  4.5.2007,  09:56 Найти цитируемый пост)
CredUICmdLinePromptForCredentials из credui.dll, посмотри описание функции, она тебе тоже можеть помочь... 
И вам того желаю. Нет ну серьезно - твоя функция это простая СТРОКОВАЯ функция которая разбивает аргумент на подстроки по заданным правилам.

Автор: -Kp0T- 4.5.2007, 12:18
Цитата(Syberex @ 3.5.2007,  09:31)
трабла такая захажу на удалённый компьютер через терминал...и после выхода из клиента терминалов чтоб прога работала, т.е запустить надо так чтоб как будто без терминала запускал,...

По моему речь все-таки идет про Disconnect (по крайней мере я так интерпретировал его слова)...

2Tectoder:
Цитата

И вам того желаю. Нет ну серьезно - твоя функция это простая СТРОКОВАЯ функция которая разбивает аргумент на подстроки по заданным правилам.

Склонаяя голову, smile , ты оказался внимательнее меня...

Автор: dumb 4.5.2007, 13:28
запускать - at /?
убивать - tskill /?

Добавлено через 1 минуту и 38 секунд
тему переместить надо куда-нибудь в "Windows"...

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