Ir para conteúdo

Arquivado

Este tópico foi arquivado e está fechado para novas respostas.

Julierme Felix

Abrir IE em todas as estações

Recommended Posts

Pessoal trabalho num laboratório com 22 maquinas e estou precisando de uma maneira rápida abrir uma pagina no IE nas estações automaticamente a partir de uma estação.

Fiz um form com um textbox(txturl) e um botão(abrir) que ao digitar o endereço web e clicar no botão abrir abre o IE na pagina q digitei na caixa de texto do form em uma máquina, queria q a partir dessa maquina abrir o IE nas outras estações na mesma pagina, ou seja na hora que clicar no botão o IE deve abrir em todas as estações automaticamente. Como fazer para startar o IE nas estações a partir do form.

 

Código do botão abrir.

Dim ie As New ProcessStartInfo("IExplore.exe")
		ie.WindowStyle = ProcessWindowStyle.Maximized
		ie.Arguments = txturl.Text
		Process.Start(ie)

Compartilhar este post


Link para o post
Compartilhar em outros sites

Você ja conseguiu abrir de uma única máquina na rede?

 

Abraços...

Sim usando o codigo postado acima consigo abrir o IE na maquina que eu executar o prog.

Compartilhar este post


Link para o post
Compartilhar em outros sites

Uso os comandos abaixo para saber o ip de uma maquina na rede, teria que pegar por exemplo num listbox os nome das maquinas e assim ao clicar na maquina pegar o ip...

 

penso ser um passo,

 

 

Obs. repare q nesse caso eu já coloquei o nome da estação q quero saber o ip.

Private Sub ipl()
		Try

			'Aqui pego o ip da maquina selecionada na celula do DataGrid
			Dim iphl As System.Net.IPHostEntry = System.Net.Dns.GetHostByName("EST00800222")
			Dim ip() As System.Net.IPAddress = iphl.AddressList
			'O resultado é apresentado num textbox
			For i As Integer = 0 To ip.Length - 1
				Me.TextBox1.Text = ip(i).ToString()
			Next
		Catch
			MessageBox.Show("Computador Desligado ou não Presente na Rede")
		End Try
	End Sub

Compartilhar este post


Link para o post
Compartilhar em outros sites

O for esta OK, ao invés de apresentar o resultado em um TextBox, coloque seu código que abre as instâncias do IE.

 

Abraços...

Ele abre o IE na maquina local e não na maquina de onde descobrir o IP.

Compartilhar este post


Link para o post
Compartilhar em outros sites

Da uma olhada em sockets, pois assim quando você tiver vários clientes se conectando ao "servidor" você envia o comando e o programa instalado nas máquinas executa o IE.

 

http://www.macoratti.net/net_soc1.htm

 

Um grande abraço.

Compartilhar este post


Link para o post
Compartilhar em outros sites

Da uma olhada em sockets, pois assim quando você tiver vários clientes se conectando ao "servidor" você envia o comando e o programa instalado nas máquinas executa o IE.

 

http://www.macoratti.net/net_soc1.htm

 

Um grande abraço.

Testei o exemplo do macoratti mas como eu passo as informações do meu codigo de abrir o IE para as estações.

 

E vou precisar que os cliente me retorne no ip e na maquina onde esta o servidor apresenta-los em um listbox por exemplo para pode selecionar a maquina onde quero abrir o IE.

Compartilhar este post


Link para o post
Compartilhar em outros sites

Pessoal usando o socket eu conseguir abrir a pagina na estação.

Fiz um form com um texbox e um botão, no evento do botão coloque o codigo abaixo:

Private Sub Button2_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button2.Click
		Const numeroPorta As Int32 = 8000
		Dim port As Int32 = 8000
		Dim localAddr As IPAddress = IPAddress.Parse("10.8.5.25")
		Dim tcpListener As New TcpListener(localAddr, port)
		tcpListener.Start()
		MsgBox("Aguardando uma conexão...")
		Dim tcpClient As TcpClient = tcpListener.AcceptTcpClient()
		Dim networkStream As NetworkStream = tcpClient.GetStream()
		Dim responseString As String = txturl.Text
		Dim sendBytes As [Byte]() = Encoding.ASCII.GetBytes(responseString)
		networkStream.Write(sendBytes, 0, sendBytes.Length)
		MsgBox("Pagina a ser aberta > : " + responseString)

		'fecha TcpListener e TcpClient.
		'tcpClient.Close()
		tcpListener.Stop()
	End Sub
Chamei esse prog de server

 

Fiz o cliente com o seguinte código

 

Dim tcpClient As New System.Net.Sockets.TcpClient
			tcpClient.Connect("10.8.5.25", 8000)
			Dim networkStream As NetworkStream = tcpClient.GetStream()
			If networkStream.CanWrite And networkStream.CanRead Then
				Dim bytes(tcpClient.ReceiveBufferSize) As Byte
				networkStream.Read(bytes, 0, CInt(tcpClient.ReceiveBufferSize))
				' exibe os dados recebidos do host no ie
				Dim returndata As String = Encoding.ASCII.GetString(bytes)
				Dim ie As New ProcessStartInfo("IExplore.exe")
				ie.WindowStyle = ProcessWindowStyle.Maximized
				ie.Arguments = returndata
				Process.Start(ie)
			End If

Coloquei o cliente em uma maquina na rede e executei o server e depois o cliente...blza funcionou abriu o IE na pagina q digitei na textbox q ficou rodando em outra maquina.

 

Agora vem outras questões....

1) Se rodar primeiro o client da um erro e é fechado

2) Se já rodei o client em uma maquina e abriu o IE, se fechar o IE e executar o server novamente, não abre o IE no cliente, tendo q ir na maquina onde o client esta rodando fechar e executar novamente.

3) como fazer para o client ficar rodando sem precisar ter q fechar e abrir novamente

4) como fazer para o cliente enviar para o server o IP da maquina e no server colocar o ip recebido num listbox.

tentei usar o código abaixo, mas para isso teria q informar o nome da maquina, como pegar esse nome automaticamente...

Dim iphl As System.Net.IPHostEntry = System.Net.Dns.GetHostByName("EST00800241")
			Dim ip() As System.Net.IPAddress = iphl.AddressList
			'O resultado é apresentado num textbox
			For i As Integer = 0 To ip.Length - 1
				 Me.TextBox1.Text = ip(i).ToString()
				
			Next

Compartilhar este post


Link para o post
Compartilhar em outros sites

A questão 4 em partes já cosegui resolver, a parte q descobre o ip da maquina usei o codigo abaixo:

Dim s As String
				s = System.Net.Dns.GetHostName()
				Dim iphl As System.Net.IPHostEntry = Dns.Resolve(s)
				Dim ip() As System.Net.IPAddress = iphl.AddressList
				'O resultado é apresentado num textbox
				For i As Integer = 0 To ip.Length - 1
					Dim sendBytes As [Byte]() = Encoding.ASCII.GetBytes(ip(i).ToString())
					networkStream.Write(sendBytes, 0, sendBytes.Length)
				Next

Compartilhar este post


Link para o post
Compartilhar em outros sites

Pessoal fiz um client com um form contendo um ListBox(com os IPs das maquinas, digitei manualmente os IPs), um botão para conectar ao servidor, uma caixa de texto(onde digito a url) e um botão de enviar.

 

O servidor coloquei nas estações

Executo o client e escolho no listbox a qual maquina vou conectar e clico no botão conectar depois digito a url e clico no botão enviar, fazendo isso para a primeira estação funciona legal, mas ao escolher outra estação e fazer o mesmo procedimento da o erro: "Uma requisição de conexão foi feita em um soquete já conectado".

 

Como faço para o cliente aceitar mais de um servidor.

 

Sei que terei q usar thread, mas sinceramente não sei trabalhar com thread

 

código do client

 

Imports System.Net.Sockets
Imports System.Text
Imports System.Net
Imports System.IO.Directory
Imports System.IO

Public Class Form1

	Dim clientSocket As New TcpClient()
	Dim serverStream As NetworkStream
	Dim lerDados As String


	Private Sub btnConectar_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles btnConectar.Click
		Try

			If ListBox1.SelectedItem Then
				Dim conectserver As String
				conectserver = ListBox1.SelectedItem
				clientSocket.Connect(conectserver, 8888)
				serverStream = clientSocket.GetStream()
				If clientSocket.Connected Then
					MsgBox("Conectado a maquina:  " + conectserver)

				End If

			End If
		Catch ex As Exception
			MsgBox(ex.Message)
		End Try
	End Sub

Private Sub btnEnviarMensagem_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles btnEnviarMensagem.Click

		Try
			Dim outStream As Byte() = Encoding.ASCII.GetBytes(txtmensagem.Text)
			serverStream.Write(outStream, 0, outStream.Length)
			serverStream.Flush()
		Catch ex As Exception
			MsgBox(ex.Message)
		End Try

	End Sub

End Class

 

 

codigo do servidor

 

Imports System.Net.Sockets
Imports System.Net
Imports System.Text

Module Module1

	Sub Main()
		Dim s As String
		s = System.Net.Dns.GetHostName()
		Dim iphl As System.Net.IPHostEntry = Dns.GetHostEntry(s)
		Dim ip() As System.Net.IPAddress = iphl.AddressList
		Dim endereco As String
		For i As Integer = 0 To ip.Length - 1
			endereco = ip(i).ToString
		Next

		Dim enderecoLocal As IPAddress = IPAddress.Parse(endereco.ToString)

		Dim serverSocket As New TcpListener(enderecoLocal, 8888)

		Dim clientSocket As TcpClient = Nothing

		Dim contador As Integer

		serverSocket.Start()

		msg("Servidor inicializado. Aguardando requisições...")
		contador = 0

		While (True)
			contador += 1
			clientSocket = serverSocket.AcceptTcpClient()
			msg("Cliente No:" + Convert.ToString(contador) + " iniciado!")

			Dim cliente As New trataCliente
			cliente.iniciarCliente(clientSocket, Convert.ToString(contador))

			Dim serverStream As NetworkStream = clientSocket.GetStream()

			If serverStream.CanWrite And serverStream.CanRead Then
				Dim bytes(clientSocket.ReceiveBufferSize) As Byte
				serverStream.Read(bytes, 0, CInt(clientSocket.ReceiveBufferSize))

				' exibe os dados recebidos do client no ie
				Dim returndata As String = Encoding.ASCII.GetString(bytes)
				Dim ie As New ProcessStartInfo("IExplore.exe")
				ie.WindowStyle = ProcessWindowStyle.Maximized
				ie.Arguments = returndata
				Process.Start(ie)
			End If
		End While
		clientSocket.Close()
		serverSocket.Stop()
	End Sub

	Sub msg(ByVal mesg As String)
		mesg.Trim()
		Console.WriteLine(" >> " + mesg)
	End Sub

	Public Class trataCliente
		Dim clientSocket As TcpClient
		Dim clNo As String

 Public Sub iniciarCliente(ByVal inClientSocket As TcpClient, ByVal clineNo As String)
			Me.clientSocket = inClientSocket
			Me.clNo = clineNo
 End Sub
End Class

Compartilhar este post


Link para o post
Compartilhar em outros sites

×

Informação importante

Ao usar o fórum, você concorda com nossos Termos e condições.