| Версия для печати темы
Нажмите сюда для просмотра этой темы в оригинальном формате |
| Форум программистов > VB6 > Запуск приложений на удаленном компьютере |
| Автор: amt 5.11.2004, 15:41 |
| Как в VB запустить приложение на другом компьютере через локалбную сеть, чтобы оно работало именно на удаленном компьютере? |
| Автор: Mephisto 5.11.2004, 16:34 |
| Тебе необходимо иметь запущеную прогу на удалённом компьютере, которая бы принимала бы путь к приложению котое необходимо запустить и сама запускала бы. Т.е. тебе необходимо написать прогу, которая прослушивает определёный порт, и прогу которая с твоего компа передаёт в тот порт путь к проге которую необходимо запустить. |
| Автор: amt 5.11.2004, 16:42 |
| Mephisto Общий принцип я понял, но хотелось бы примерчик кода. Заранее благодарен amt |
| Автор: Sirik 13.11.2004, 12:15 |
| Я бы посоветовал писать с использованием протокола UDP. Если нужен пример, напишу и скину |
| Автор: amt 14.11.2004, 09:51 |
| Sirik, пример очень нужен. Заранее благодарен. |
| Автор: anderson 14.11.2004, 19:09 | ||
угу!! Дело за тобой !! |
| Автор: Vach 15.11.2004, 22:02 | ||
| Пример запуска приложения в локальной сети. References > Microsoft WMI Scripting
http://msdn.microsoft.com/library/default.asp?url=/library/en-us/dnanchor/html/anch_wmi.asp Удачи! |
| Автор: amt 27.11.2004, 14:59 |
| Vach Пытаюсь использовать твой код, но все время выскакивает ошибка: имя файла или класса не найдено. Можно по-подробнее? Есть комп (например W001), есть на нем на диске С: папка (пусть 111) с файлом (CALC.EXE) Куда это все надо прописать? |
| Автор: Vach 28.11.2004, 11:54 | ||
| подключи "Microsoft WMI Scripting" к проекту References > Microsoft WMI Scripting
"CALC.EXE" будет запущен с твоими правами (от лица пользователя выполнившего код приведенный выше) "CALC.EXE" будет скрыто от пользователей (запустится как процесс) и интерфейс будет скрыт. |
| Автор: amt 29.11.2004, 14:18 | ||
| Vach Я наверно тебя достал. Подключил я "Microsoft WMI Scripting" к проекту, но выдается ощибка что такого нет As SWbemObjectEx (его действительно нет в списке). Если эту строку заремарить, то идет таже проблема
У меня Microsoft WMI Scripting Library ветсии 1.1 Может надо поновей, или она у меня глючит? |
| Автор: Vach 29.11.2004, 14:26 |
| У меня Microsoft WMI Scripting Library версии 1.2 Но где тут проблема мне сказать сложно, не сталкивался. Думаю надо новй. Я сам неделю узнал о WMI из семинара и теперь копаюсь. Попробуй поставить SP5 на VB |
| Автор: amt 3.12.2004, 21:51 | ||
| Кое-что новое накопал. Твой код я запустил, но при этом он работает только если в качестве strComputer указывать текущий компьютер. При указании удаленного компа возникает ошибка о которой я уже писал
Я пробовал создавать инсталяшку и устанавливать на другой комп, все равно - ни хрена. Если чего новое накопал - сообщи. |
| Автор: Vach 3.12.2004, 23:51 |
| удаленного компа... версию винды скажи? какие у тебя права? (админ/права на удаленное управление) персональный фаервол стоит? |
| Автор: amt 6.12.2004, 14:32 | ||
| Win у меня 98-ой Насколько я понял права полные - могу делать все, что хочу. А вот это
что такое - не понимаю. |
| Автор: Vach 6.12.2004, 15:23 | ||
http://msdn.microsoft.com/library/default.asp?url=/library/en-us/wmisdk/wmi/wmi_start_page.asp
|
| Автор: valex13 7.12.2004, 09:13 | ||
| Я поставил отдельно на свою машину и машину, на которой хочу запустить приложение WMI. После чего сделал вот такой код;
Пробовал strComputer ставить конкретный IP адрес. Таже самая проблема что и у amt Обе машины Windows 98 SE. Может под этой ОС просто все это чудо враждебной техники не работает? |
| Автор: amt 7.12.2004, 15:05 | ||
| valex13 , а что ты поставил, я не понял?
И вообще, что никто по сети ничего не делает? Неужели никто не сталкивался с этими проблемами? |
| Автор: amt 7.12.2004, 15:26 | ||
Vach, хорошо, пусть это надо ставить.
Где-то, что-то не то; а где - не понятно. Добавлено @ 15:29 И вообще - если эта фигня заработает, можно будет круто напиться и месяц отдыхать! Можно рассматривать как предложение. |
| Автор: Vach 7.12.2004, 21:10 |
| Я рад помочь, вот только в моей сети нету не одной вини кроме XP Даже sp и обновления вне зависимости от пользователей ставятся централизованно. Поэтому только XP. Поговарю с админом нашей сети, может что подскажет. Мы при помощи WMI+Scripts распространяем шаринги на все сетевые принтеры с учетом групповых политик. |
| Автор: valex13 8.12.2004, 03:57 |
| amt ты не один в своем желании добраться до истины. Как же все таки это устроено? |
| Автор: Gannibal 9.12.2004, 00:49 | ||||||
Ну вот возьмёмся тогда... вперёд.. короче написат надо так.. .вот ето будет клиентская часть просто которуыу зашлёш какому нибудь своей жертве потом незабудь есчё поставит на форме винсок компонент и енаблед на фалсе
тепр надо рабочую прогу которую можно открыть у нас и когда соиденно с клиентом незнаыу с тем компом заслать одним нажатием кнопки открытие програмы... примерно так.... короче прочитаи здесь статю поимёш потом просто вместо мессагебокса или других команд внедриш туда просто запуск проги http://www.vbmaster.info/vb/articles.php?id=60 а прогу открыть можно так сам занимался етим.. писал спамеры от скуки в школе тока код на ДжаваСкрипте выглядит так
а на ВизуалБэйсикСкрипт вот так
надеюсь хоть как помог если ето вообще к теме |
| Автор: Gannibal 9.12.2004, 01:06 |
| а лучше будет наверное книжку прочитать про ВиндовсСкриптХост, там описаны все функции как открывать файлы на компе за помощю скриптов И в Визуале должна быть компонента для WSH тока поищите .. наидёте файлик wshom.ocx ето представитель скриптов (Windows Script Host) Добавлено @ 01:14 и вот кстати нашёл специально для вас статю хотя самому пригодится http://ugas.fatal.ru/articles/virmaking-1.php читайте и наслажаитесь, говорю что уже этим занимался от балды |
| Автор: valex13 14.12.2004, 04:35 |
| M.E.G.U.S Спасибо за ответ. Мысль мне понятна :-) Но мне хотелось бы управлять приложением (Серверная часть) в полном объеме, например, когда завершилась та или иная операция. Видимо придется СОМ сервер писать. |
| Автор: Gannibal 15.12.2004, 00:06 |
| valex13 ну если взять так то необезательно тебе надо будет писать СОМ приложение, если ты знаешь уже какие части будешь перехватывать и знаеш как они работают напишеш прогу которая будет ето всё перехватыват.. всё что было сделано... и сам управлять впринципе.. .. может быть я тебя непонял... |
| Автор: valex13 17.12.2004, 09:18 |
| Я хочу управлять приложением из другого приложения. Приложение, которое я хочу управлять, находиться на другом компьютере подключенном в локальную сеть. Мне нужно давай разные указание этому приложению и проверять завершено ли оно! |
| Автор: Mephisto 23.12.2004, 16:12 |
| Используй PostMessage или SendMessage. Зависит от необходимости получения ответа. Вот выдержки из MSDN: http://msdn.microsoft.com/library/default.asp?url=/library/en-us/winui/winui/windowsuserinterface/windowing/messagesandmessagequeues/messagesandmessagequeuesreference/messagesandmessagequeuesfunctions/postmessage.asp -------------------------------------------------------------------------------- The PostMessage function places (posts) a message in the message queue associated with the thread that created the specified window and returns without waiting for the thread to process the message. To post a message in the message queue associate with a thread, use the PostThreadMessage function. Syntax BOOL PostMessage( HWND hWnd, UINT Msg, WPARAM wParam, LPARAM lParam ); Parameters hWnd [in] Handle to the window whose window procedure is to receive the message. The following values have special meanings. HWND_BROADCAST The message is posted to all top-level windows in the system, including disabled or invisible unowned windows, overlapped windows, and pop-up windows. The message is not posted to child windows. NULL The function behaves like a call to PostThreadMessage with the dwThreadId parameter set to the identifier of the current thread. Msg [in] Specifies the message to be posted. wParam [in] Specifies additional message-specific information. lParam [in] Specifies additional message-specific information. Return Value If the function succeeds, the return value is nonzero. If the function fails, the return value is zero. To get extended error information, call GetLastError http://msdn.microsoft.com/library/default.asp?url=/library/en-us/winui/winui/windowsuserinterface/windowing/messagesandmessagequeues/messagesandmessagequeuesreference/messagesandmessagequeuesfunctions/sendmessage.asp -------------------------------------------------------------------------------- The SendMessage function sends the specified message to a window or windows. It calls the window procedure for the specified window and does not return until the window procedure has processed the message. To send a message and return immediately, use the SendMessageCallback or SendNotifyMessage function. To post a message to a thread's message queue and return immediately, use the PostMessage or PostThreadMessage function. Syntax LRESULT SendMessage( HWND hWnd, UINT Msg, WPARAM wParam, LPARAM lParam ); Parameters hWnd [in] Handle to the window whose window procedure will receive the message. If this parameter is HWND_BROADCAST, the message is sent to all top-level windows in the system, including disabled or invisible unowned windows, overlapped windows, and pop-up windows; but the message is not sent to child windows. Msg [in] Specifies the message to be sent. wParam [in] Specifies additional message-specific information. lParam [in] Specifies additional message-specific information. Return Value The return value specifies the result of the message processing; it depends on the message sent. |
| Автор: Gannibal 24.12.2004, 12:31 | ||||||
| вот кстати статью надыбал, похоже что это то что надо Автор: Хованский Ян Дата: 09.05.2003 Введение Иногда бывает нужно запустить или остановить «внешнее» приложение. О том, как это делается и пойдёт речь в данной статье. Запуск Существует несколько способов запуска приложения: 1. Можно использовать стандартную функцию Visual Basic - Shell: Shell "C:\Program files\WinRar\WinRar.exe", vbNormalFocus '// Запускаем WinRar.exe, окно программы получит фокус и сохранит стандартные размеры 2. Также можно воспользоваться функциями API: '// Функция для запуска приложения (выполнения командной строки) Declare Function WinExec Lib "kernel32" Alias "WinExec" (ByVal lpCmdLine As String, ByVal nCmdShow As Long) As Long '// lpCmdLine - командная строка '// nCmdShow - соответсвующая константа '// Константы Const SW_SHOWNORMAL = 1 '// Исходные размеры и состояние. Фокус Пример:
3. Способ, позволяющий открыть приложение ассоциированное с данным типом файлов: '// Функция для открытия приложения Declare Function ShellExecute& Lib "shell32.dll" Alias "ShellExecuteA" (ByVal hwnd As Long, ByVal lpOperation As String, ByVal lpFile As String, ByVal lpParameters As String, ByVal lpDirectory As String, ByVal nShowCmd As Long) Declare Function GetDesktopWindow Lib "user32" () As Long '// Функция для получения манипулятора рабочего стола '// Константы Const SW_SHOWNORMAL = 1 Пример: Call ShellExecute(GetDesktopWindow, "Open", "C:\Text.txt", "", "c:\", SW_SHOWNORMAL) В данном примере открывается файл C:\Text.txt. Остановка выполнения Для остановки выполнения приложения необходимо знать манипулятор его главного окна. Найти этот манипулятор вы можете по заголовку, по классу и т.д., способов достаточно много. Предполагается, что манипулятор вы нашли. Далее, опять же есть несколько способов: Visual Basic не предоставляет средств, позволяющих закрыть чужое приложение, поэтому воспользуемся API. Для начала используем функцию SendMessage:
Пример:
статья взята с сайта http://vbkoders.net.ru читайте.. |
| Автор: Mephisto 27.12.2004, 16:11 | ||||
Жестоко. В принципе WM_QUIT должно хватить. Но в принципе я хотел бы разобратся со скриптами: можно ли запустить скрипт от имени удаленного пользователя, явно указав логин и пароль? Может чё здесь надо поправить?
|
| Автор: Gannibal 28.12.2004, 12:38 | ||
ну тебе есчё типо надо дописать что хочешь делать ;) типа такого
|
| Автор: Gannibal 28.12.2004, 13:03 | ||
| а что так с помошу реестра сделать ведь там хранится инфа о пользователе и его пороль Mephisto а можешь код показать? или у тебя его ещё нету.. вот код выбрасываю как автологин в систему зделать типо
|
| Автор: Gannibal 28.12.2004, 13:23 | ||
| а если так? ещё попробывать от процесса запустить типа?
|
| Автор: Gannibal 6.1.2005, 10:04 |
| слушай ты уда делся, скажи хоть помогло или нет, а то ни слова ни духу ... |
| Автор: amt 26.1.2005, 20:01 | ||
| Привет всем кто в этой теме участвовал. Пару месяцев назад я открыл эту тему. За это время накопилось куча сообщений. Честно говоря я уже не врубаюсь в то что здесь приводится. Может я пропустил ответ на свой вопрос. Многое из того что здесь приводилось я пробовал - результат - 0. А потому повторю свой вопрос и прошу знатоков систематизировать ответ, если он уже прозвучал.
ОС - Win 98. Заранее огромное спасибо!!!!! |
| Автор: Gigabyte 15.3.2005, 18:43 | ||
тебе надо лишь что бы пользоватьель зашел на страничку содержащую код:
где путь к файлу - полный путь к твоейпрограмме |
| Автор: amt 28.3.2005, 22:28 | ||
Gigabyte!
Заранее благодарен. |
| Автор: shilnik 29.3.2005, 10:24 |
| Я для этого писал DCOM объект. Сервер был W2000Server, клиента пробовал везде. Думаю, что и сервер должен везде работать. Если такой способ интересен, скажи майл, я тебе пример вышлю. |
| Автор: valex13 29.3.2005, 11:37 |
| shilnik Вышли мне. Благодарен |
| Автор: shilnik 30.3.2005, 06:32 | ||||||||
| 2 valex13 Отправил, смотри майл. А вообще, вот статья из MSDN, а ленивым еще и написаный пример (правда не совсем по статье, но суть таже):
|
| Автор: amt 30.3.2005, 07:18 |
| shilnik Отправь, плиз. Мой майл есть в моем профиле |
| Автор: shilnik 30.3.2005, 07:28 |
| Дак теперь уже качайте прикрепленный файл с предыдущего моего поста. Это и есть пример. |
| Автор: Guest 14.4.2005, 08:13 |
| попробуй TCP\IP |
| Автор: amt 14.4.2005, 08:20 |
| А можно по-побробнее? Плиз! |