COMUNICACAO ENTRO O PROGRAMA E O NAVEGADOR

HM.MANIAC 14/08/2009 11:33:41
#319866
Bom dia !!

Minha empresa tem um sistema web só que precisamos utilizar um programa esterno desktop, então usei o VB.
Porém, eu precisaria ter um nível de comunicação mais avançado entre a página web e o programa desk.

Por ex.: O sistema web envia dados ao executável no windows, ele por sua vez processa e faz o que deve fazer e deveria retornar
ao navegador tais dados. Até antes do retorno eu consigo fazer, mas quando vou retornar os dados para o navegador ele abre uma nova
aba e tal.

Eu queria saber se tem como eu acessar essa mesma aba, ou uma aba específica do navegador ou até mesmo um iframe dentro da página.
Alguém aí já viu isso, ou algo do tipo. Seria extremamente interessante pra mim.

Em todo caso já gradeço a atenção !

Valeu!
WEBMASTER 14/08/2009 12:25:16
#319869
Esse tipo de arquitetura eh o ideal para webservices.
Monte no servidor um webservice, disponibilize e quem precisar consome ele (leitura e gravacao).

O VB6 tem suas gambiarras para isso, eh claro, mas a arquitetura funciona muito bem.
HM.MANIAC 14/08/2009 15:05:50
#319883
E você não tem aí algum material de como fazer essa gambiarra no VB 6 ?

Valeu !!
TECLA 14/08/2009 17:14:29
#319897
Resposta escolhida
Segue uma rotina para o VB6 consumir um Web Service.
Private Sub Command1_Click()
[ô] Start Internet Explorer and type in the url of your webservice page
[ô] i.e.: http://localhost/myweb/mywebService.asmx
[ô] In that page, click on the link to the method you want to call from your application
[ô] Select in upper POST section the xml code from <?xml.. to </soap:Envelope>
[ô] Copy this into the strXml variable, escape all quotes and replace [Ô]string[Ô] your parameter value
[ô] Copy the url to your webservice page (asmx) to the strUrl variable
[ô] Copy the SOAPAction value to the strSoapAction variable

Dim strSoapAction As String
Dim strUrl As String
Dim strXml As String
Dim strParam As String

txtOutput.Text = [Ô][Ô]
strParam = [Ô]MyParameterString[Ô]
strUrl = [Ô]http://localhost/myweb/mywebService.asmx[Ô]
strSoapAction = [Ô]http://tempuri.org/MyMethod[Ô]


strXml = [Ô]<?xml version=[Ô][Ô]1.0[Ô][Ô] encoding=[Ô][Ô]utf-8[Ô][Ô]?>[Ô] & _
[Ô]<soap:Envelope xmlns:xsi=[Ô][Ô]http://www.w3.org/2001/XMLSchema-instance[Ô][Ô] xmlns:xsd=[Ô][Ô]http://www.w3.org/2001/XMLSchema[Ô][Ô] xmlns:soap=[Ô][Ô]http://schemas.xmlsoap.org/soap/envelope/[Ô][Ô]>[Ô] & _
[Ô]<soap:Body>[Ô] & _
[Ô]<CheckActCode xmlns=[Ô][Ô]http://tempuri.org/[Ô][Ô]>[Ô] & _
[Ô]<actCode>[Ô] & strParam & [Ô]</actCode>[Ô] & _
[Ô]</CheckActCode>[Ô] & _
[Ô]</soap:Body>[Ô] & _
[Ô]</soap:Envelope>[Ô]

[ô] Call PostWebservice and put result in text box
Debug.Print PostWebservice(strUrl, strSoapAction, strXml)

End Sub


Private Function PostWebservice(ByVal AsmxUrl As String, ByVal SoapActionUrl As String, ByVal XmlBody As String) As String
Dim objDom As Object
Dim objXmlHttp As Object
Dim strRet As String
Dim intPos1 As Integer
Dim intPos2 As Integer

On Error GoTo Err_PW

[ô] Create objects to DOMDocument and XMLHTTP
Set objDom = CreateObject([Ô]MSXML2.DOMDocument[Ô])
Set objXmlHttp = CreateObject([Ô]MSXML2.XMLHTTP[Ô])

[ô] Load XML
objDom.async = False
objDom.loadXML XmlBody

[ô] Open the webservice
objXmlHttp.open [Ô]POST[Ô], AsmxUrl, False

[ô] Create headings
objXmlHttp.setRequestHeader [Ô]Content-Type[Ô], [Ô]text/xml; charset=utf-8[Ô]
objXmlHttp.setRequestHeader [Ô]SOAPAction[Ô], SoapActionUrl

[ô] Send XML command
objXmlHttp.send objDom.xml

[ô] Get all response text from webservice
strRet = objXmlHttp.responseText

[ô] Close object
Set objXmlHttp = Nothing

[ô] Extract result
intPos1 = InStr(strRet, [Ô]Result>[Ô]) + 7
intPos2 = InStr(strRet, [Ô]</[Ô])
If intPos1 > 7 And intPos2 > 0 Then
strRet = Mid(strRet, intPos1, intPos2 - intPos1)
End If

[ô] Return result
PostWebservice = strRet

Exit Function
Err_PW:
PostWebservice = [Ô]Error: [Ô] & Err.Number & [Ô] - [Ô] & Err.Description

End Function
WEBMASTER 14/08/2009 21:04:07
#319903
Caraca que legal !
Sem precisar de um componente no form como webbrowser ou coisa do genero ?
Parabens Tecla
HM.MANIAC 17/08/2009 09:52:38
#320020
Bom, valeu a todos que responderam. O problema foi resolvido, não exatamente da forma proposta pelo usuário TECLA mas a sugestão dele me deu a idéia necessária.

Como eu não ia poder XML, pois o programa só tem acesso ao servidor pela porta do banco de dados, então fiz uma forma com que fosse gravado no banco uma chave de
validação em MD5 e enviei ao programa. Nisso o sistema continuarva buscando - por ajax - de tempo em tempo por uma atualização desse registro no banco, que sera
feita pelo programa desk. Ele grava a ID do usuário, que será encontrada pelo sistema web e assim fica quase transparente para o usuário que há um aplicativo na máquina
cliente interagindo com o sistema. Se bem que a maioria deles acha que o sistema web é um programa do computador né, não iam perceber nunca mesmo.. kkk

Mas valeu galera.. me ajudaram muito!! Abraço.
TECLA 17/08/2009 09:55:32
#320021
Problema resolvido.
Favor encerrar o tópico.
Tópico encerrado , respostas não são mais permitidas