COMUNICACAO ENTRE FORMS

FROSTYNHO 12/12/2010 02:37:48
#359378
criei uma aplicação, e ela precisa ser atualizada semanalmente, só que o [Ô]updater[Ô] é um outro aplicativo a parte, no qual eu chamo ele do meu aplicativo, só que se o usuario abrir o [Ô]updater.exe[Ô] ele atualiza normal... oque eu queria é que esse [Ô]updater.exe[Ô] só funciona-se clicando no botao atualizar do meu programa.

A duvida é: Tem como enviar um comando pra ele pra ele abrir só quando receber esse comando.
tipo: Process.Start(My.Application.StartupPath & [Ô]\updater.exe +executar[Ô]) ou algo do tipo sei la... uahauha
des de ja vlw galera
RODRIGOFERRO 12/12/2010 08:15:06
#359380
Resposta escolhida
Vamos la para chamar o seu atualizador faça assim

  Module Module1
Sub Main()
[ô] One file parameter to the executable
Dim sourceName As String = [Ô]ExampleText.txt[Ô]
[ô] The second file parameter to the executable
Dim targetName As String = [Ô]Example.gz[Ô]

[ô] New ProcessStartInfo created
Dim p As New ProcessStartInfo

[ô] Specify the location of the binary
p.FileName = [Ô]C:\7za.exe[Ô]

[ô] Use these arguments for the process
p.Arguments = [Ô]a -tgzip [Ô][Ô][Ô] & targetName & [Ô][Ô][Ô] [Ô][Ô][Ô] & sourceName & [Ô][Ô][Ô] -mx=9[Ô]

[ô] Use a hidden window
p.WindowStyle = ProcessWindowStyle.Hidden

[ô] Start the process
Process.Start(p)
End Sub
End Module


Mais informações leia aqui nesse link: LINK_ARGUMENTOS

Para ler use essa materia do macoratti... http://www.macoratti.net/vbn_arg1.htm

ai voce passa o parametro exemplo +atualizar e le la no atualizador, se ao abrir o atualizador esse parametro nao existir tu manda uma messagebox informando que o atualizador tem que ser chamado pelo programa principal.

ou para ler simplismente adicione essa classe ao seu atualizador..

Namespace My

Class MyApplication

#If _MyType = [Ô]WindowsForms[Ô] Then

Private Sub MyApplication_Startup(ByVal sender As Object, ByVal e As ApplicationServices.StartupEventArgs) Handles Me.Startup

If e.CommandLine.Count = 0 Then

MessageBox.Show([Ô]Nenhum argumento passado[Ô])
End

Else
MessageBox.Show(e.CommandLine.Item(0).ToString)
End If


End Sub

[ô]OnInitialize is used for advanced customization of the My Application Model (MyApplication).
[ô]Startup code for your specific application should be placed in a Startup event handler.
<Global.System.Diagnostics.DebuggerStepThrough()> _
Protected Overrides Function OnInitialize(ByVal commandLineArgs As System.Collections.ObjectModel.ReadOnlyCollection(Of String)) As Boolean
Return MyBase.OnInitialize(commandLineArgs)
End Function
#End If

End Class
End Namespace


Espero que ajude
FROSTYNHO 12/12/2010 09:03:45
#359381
vou testa assim que chegar em casa as 10:00 e ja posto o resultado... vlw
FROSTYNHO 12/12/2010 10:43:14
#359385
deu erro, não precisa dar referencia a alguma coisa?
RODRIGOFERRO 12/12/2010 11:36:10
#359388
tem que postar o erro amigo. o stacktrace para se saber o que esta errado
FROSTYNHO 13/12/2010 09:43:10
#359432
Consegui desse modo será que tem um modo mais facil de se fazer?

      Private Sub Form1_Load(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles MyBase.Load
Try
Environment.GetCommandLineArgs(1).ToString()
Catch ex As Exception
Me.Dispose()
End Try
If Environment.GetCommandLineArgs(1).ToString = [Ô]autoupdateon[Ô] Then
MsgBox([Ô]argumento correto[Ô])
End If
End Sub
Tópico encerrado , respostas não são mais permitidas