Existem muitas versões por aí, para diferentes versões do visual basic, mas esta é a mais simples. Mesmo assim, foi necessário fazer algumas adaptações em relação ao código retirado da fonte que apresento no final.
Imports:
Imports System.Diagnostics
Código a colocar no button click:
Dim processamento As String
'colocar lista de argumentos
processamento = importarDados("")
'o replace é importante em determinadas situações
'processamento = processamento.Replace(" ", "\n")
'caso se queira apresentar o resultado na página web, é preferível utilizar o htmlencode
'processamento = Server.HtmlEncode(processamento)
'resposta na página ou numa caixa javascript alert
'Response.Write(processamento)
Response.Write("< script language='JavaScript' > alert('" & processamento & "')< /script >")
A caixa de alert pode não funcionar. Não existindo nenhum problema fora do normal, o erro será:
"Constante de cadeia não terminada" ou "Unterminated String constant"
Isto deve-se a algum caracter lido, que o alert não consegue representar. Deparei-me com esta situação, mas não consegui identificar esse caracter.
Função importarDados:
Public Function importarDados(ByVal valores As String) As String
'lê o resultado devolvido pela consola
Dim processoResultado As String
Dim processoInfo As New ProcessStartInfo
Dim Appsettings As System.Configuration.AppSettingsReader = New System.Configuration.AppSettingsReader
Dim programa As String
Dim processo As System.Diagnostics.Process
'caminho guardado em web.config
programa = CType(Appsettings.GetValue("", GetType(System.String)), String)
'programa = "c:\teste.bat"
Try
processoInfo.RedirectStandardOutput = True
processoInfo.UseShellExecute = False
processoInfo.FileName = programa.ToString
processoInfo.Arguments = valores.ToString
processoInfo.WindowStyle = Diagnostics.ProcessWindowStyle.Hidden
processo = System.Diagnostics.Process.Start(processoInfo)
'leitura
processoResultado = processo.StandardOutput.ReadToEnd()
'processoResultado = processo.StandardOutput.ReadLine()
processo.WaitForExit()
processo.Close()
Catch ex As Exception
processoResultado = ex.Message
End Try
Return processoResultado
End Function
Alterações ao web.config:
'colocar o impersonate a "true";
'definir a variável, com o caminho para o programa:
'< appSettings >< add key="" value="" / >< /appSettings >
Podem ainda existir mais algumas dificuldades, relacionadas com permissões.
Fonte:
http://forums.devx.com/showthread.php?t=142552
2 comentários:
Boas,
Se não for o nosso amigo GestRH não actualizavas o blog ;)
Continua o bom trabalho.
É verdade... :D
Abraço.
Enviar um comentário