Como executar um comando que está dentro de uma String? VB.NET
19/02/2015
0
Preciso de uma forma de converter uma string e um comando vb.net
Exemplo:
Dim comando as String comando = "pctMq11.Image = My.Resources.Computer_On"
Preciso executar o conteúdo que está dentro dessa string COMANDO para alterar a imagem de uma PictureBox.
Procurei bastante na internet e achei pouquíssimo conteúdo sobre como converter string em comando, e o pouco que eu achei eu não consegui aplicar no meu formulário.
Quem puder ajudar eu agradeço muito.
Robson Souza
Post mais votado
20/02/2015
Joel Rodrigues
Mais Posts
20/02/2015
Robson Souza
Se o computador responder ao ping, no formulário o PictureBox do computador referente aquele computador em questão irá alterar a imagem de um computador desligado para um computador ligado.
Eu consigo fazer isso perfeitamente com um If ou um switch, mas eu queria economizar linha de código e alterar a imagem da picturebox no momento que eu estou fazendo o looping para disparar os pings.
Tipo, se eu pinguei na máquina com final do IP 11 e a máquina responder ao ping, a Picturebox de nome pctMq11 vai alterar a imagem.
Dai a forma que eu achei que funcionaria seria criar a linha de comando numa string e executar ela em seguida. Ficaria tipo assim:
For bancadaatual As Integer = 1 To bancadatotal Step 1 For maqatual As Integer = 1 To maqfinal Step 1 ipnumber = String.Format("10.117." & labatual & "." & bancaatual & maqatual) Dim teste As PingReply = pingsender.Send(ipnumber) If teste.Status = IPStatus.Success Then comando = String.Format("pctMq" & bancadaatual & maqatual& ".Image = My.Resources.Computer_On") ' E aqui entraria alguma forma de executar o conteúdo da string COMANDO End If Next Next
Mas se não tem como fazer a string ser executada como comando, então o jeito é fazer um Switch para as 36 picturebox.
Obrigado pela atenção.
20/02/2015
Joel Rodrigues
Desculpe não postar um exemplo agora, é que estou no celular. Mas deu pra entender a ideia?
23/02/2015
Robson Souza
Acabei fazendo um Select Case mesmo para resolver a situação.
Private Sub alteraricone(ByRef bancadaatual As Integer, ByRef maquinaatual As Integer) Dim num As Integer = bancadaatual & maquinaatual Select Case num Case 11 pctMq11.Image = My.Resources.Computer_On Case 12 pctMq12.Image = My.Resources.Computer_On Case 13 pctMq13.Image = My.Resources.Computer_On Case 14 pctMq14.Image = My.Resources.Computer_On Case 15 pctMq15.Image = My.Resources.Computer_On Case 16 pctMq16.Image = My.Resources.Computer_On Etc...
09/03/2015
Danilo Fonseca
abrcs!
10/03/2015
Robson Souza
abrcs!
Danilo, achar conteúdo sobre redes na internet é meio chatinho, por sorte eu já tinha feito um teste e salvei o código. Vou passar um exemplo para você (embora talvez os administradores do fórum possam vir a excluir esta conversa, pois ela foge um pouco do assunto abordado na abertura deste tópico, então aconselho a copiar o conteúdo o mais breve possível.
Segue o código:
'Antes de tudo você deve importar a biblioteca que trabalha com comandos de rede. Imports System.Net.NetworkInformation 'Crie uma função para executar essa ação Public Sub verificaStatus() 'Aqui criamos uma variável booleana para armazenar se o meu computador está conectado na internet ou não. Isso pode vir a ser util para você. 'Ou seja, esta variavel vai armazenar TRUE (se o computador estiver com rede) ou FALSE (se a rede não estiver disponível). Dim status As Boolean = My.Computer.Network.IsAvailable 'No meu caso eu fiz uma condição para alterar a imagem de uma picturebox para visualizar no fomulário se o meu computador está com acesso a internet ou não. If status = True Then frmControleLab.pctPC11.Image = Image.FromFile("images\computer-02.png") End If 'Essa parte do código é a que você está precisando. Não está difícil de entender, basta substituir o IP que eu coloquei entre aspas pelo IP que você deseja pingar. Dim pingsender As Ping = New Ping Dim teste As PingReply = pingsender.Send("10.116.1.1") 'Assim como na verificação do meu computador, eu fiz uma condição para trocar a imagem de uma picturebox caso o computador que eu pinguei responda. If teste.Status = IPStatus.Success Then frmControleLab.pctPC12.Image = My.Resources.computer_02 End If End Sub
Uma rápida pesquisa na internet e você descobre o que mais consegue fazer com a biblioteca System.Net.NetworkInformation
https://msdn.microsoft.com/pt-br/library/system.net.networkinformation%28v=vs.110%29.aspx?f=255&MSPPError=-2147217396
Clique aqui para fazer login e interagir na Comunidade :)