Fórum Como executar um comando que está dentro de uma String? VB.NET #511140
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
Curtir tópico
+ 0Post mais votado
20/02/2015
Joel Rodrigues
Gostei + 1
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
NextMas 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.
Gostei + 0
20/02/2015
Joel Rodrigues
Desculpe não postar um exemplo agora, é que estou no celular. Mas deu pra entender a ideia?
Gostei + 0
23/02/2015
Joel Rodrigues
Gostei + 0
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...Gostei + 0
09/03/2015
Danilo Fonseca
abrcs!
Gostei + 0
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
Gostei + 0
Clique aqui para fazer login e interagir na Comunidade :)