AJUDA DE C# PARA VB.NET
Pessoal não sei se este seria o forum certo mas vamos lá:
Preciso traduzir este código em C#:
para VB.NET
Também programo pouco em C#, mas não entendi estas atribuições em destaque:
Quem puder me ajudar fico muito agradecido.
Preciso traduzir este código em C#:
IHTMLDocument2 doc = (IHTMLDocument2)WebBrowser1.Document.DomDocument;
IHTMLControlRange imgRange = (IHTMLControlRange)((HTMLBody)doc.body).createControlRange();
para VB.NET
Também programo pouco em C#, mas não entendi estas atribuições em destaque:
[txt-color=#e80000](IHTMLDocument2)[/txt-color]WebBrowser1.Document.DomDocument;
[txt-color=#e80000](IHTMLControlRange)[/txt-color]([txt-color=#e80000](HTMLBody)[/txt-color]doc.body).createControlRange();
Quem puder me ajudar fico muito agradecido.
Caro PEGUDO
Dim doc As IHTMLDocument2 = DirectCast(WebBrowser1.Document.DomDocument, IHTMLDocument2)
Dim imgRange As IHTMLControlRange = DirectCast(DirectCast(doc.body, HTMLBody).createControlRange(), IHTMLControlRange)
DirectCast(WebBrowser1.Document.DomDocument, IHTMLDocument2)
DirectCast(DirectCast(doc.body, HTMLBody).createControlRange(), IHTMLControlRange)
Acho que falta alguma coisa nessas declarões de variáveis, mas traduzindo é isso.....................................
Boa Sorte
Dim doc As IHTMLDocument2 = DirectCast(WebBrowser1.Document.DomDocument, IHTMLDocument2)
Dim imgRange As IHTMLControlRange = DirectCast(DirectCast(doc.body, HTMLBody).createControlRange(), IHTMLControlRange)
DirectCast(WebBrowser1.Document.DomDocument, IHTMLDocument2)
DirectCast(DirectCast(doc.body, HTMLBody).createControlRange(), IHTMLControlRange)
Acho que falta alguma coisa nessas declarões de variáveis, mas traduzindo é isso.....................................
Boa Sorte
AJSO
Tua explicação foi muito útil, aliás eu não sairia deste passo se não fosse vc
já traduzi todo o código, contudo, estou com mais um problema: ocorre um erro. veja o destaque:
Eu trabalho em conjunto com uma galera lá da Ãndia e eles me passaram este código para passar para VB.NET
Como eu adicionaria esta variável [Ô]img[Ô] dentro de imgRange?
desta forma:
acusa Referência nula
Eis meu código em VB.NET:
Obrigado mais uma vez.
Tua explicação foi muito útil, aliás eu não sairia deste passo se não fosse vc
já traduzi todo o código, contudo, estou com mais um problema: ocorre um erro. veja o destaque:
IHTMLDocument2 doc = (IHTMLDocument2)browser.Document.DomDocument;
IHTMLControlRange imgRange = (IHTMLControlRange)((HTMLBody)doc.body).createControlRange();
imgRange.add([txt-color=#e80000](IHTMLControlElement)img[/txt-color]);
imgRange.execCommand([Ô]Copy[Ô], false, null);
using (Bitmap bmp = (Bitmap)Clipboard.GetDataObject().GetData(DataFormats.Bitmap))
{
MemoryStream ms = new MemoryStream();
bmp.Save(ms, ImageFormat.Bmp);
bitmapData = ms.ToArray();
}
Eu trabalho em conjunto com uma galera lá da Ãndia e eles me passaram este código para passar para VB.NET
Como eu adicionaria esta variável [Ô]img[Ô] dentro de imgRange?
desta forma:
Dim img As mshtml.IHTMLControlElement
acusa Referência nula
Eis meu código em VB.NET:
Dim doc As mshtml.IHTMLDocument2 = DirectCast(QualWebBrowser.Document.DomDocument, mshtml.IHTMLDocument2)
Dim imgRange As mshtml.IHTMLControlRange = DirectCast(DirectCast(doc.body, mshtml.HTMLBody).createControlRange(), mshtml.IHTMLControlRange)
Dim img As mshtml.IHTMLControlElement
Dim bmp As Bitmap
Dim ms As MemoryStream
Dim bitmapData
imgRange.add(img)
imgRange.execCommand([Ô]Copy[Ô], False, vbNull)
bmp = DirectCast(Clipboard.GetDataObject.GetData(DataFormats.Bitmap), Bitmap)
ms = New MemoryStream
bmp.Save(ms, Imaging.ImageFormat.Bmp)
bitmapData = ms.ToArray()
Obrigado mais uma vez.
Caro PEGUDO
Olhando sua tradução do C para VB.Net ficaria assim
---------------------------------------------------------------------------------------------------------------------------
Dim doc As IHTMLDocument2 = DirectCast(browser.Document.DomDocument, IHTMLDocument2)
Dim imgRange As IHTMLControlRange = DirectCast(DirectCast(doc.body, HTMLBody).createControlRange(), IHTMLControlRange)
imgRange.add(DirectCast(img, IHTMLControlElement))
imgRange.execCommand([Ô]Copy[Ô], False, Nothing)
Using bmp As Bitmap = DirectCast(Clipboard.GetDataObject().GetData(DataFormats.Bitmap), Bitmap)
Dim ms As New MemoryStream()
bmp.Save(ms, ImageFormat.Bmp)
bitmapData = ms.ToArray()
End Using
---------------------------------------------------------------------------------------------------------------------------
Este é seu Código
--------------------------------------------------------------------------------------------------------------------------
Dim doc As mshtml.IHTMLDocument2 = DirectCast(QualWebBrowser.Document.DomDocument, mshtml.IHTMLDocument2)
Dim imgRange As mshtml.IHTMLControlRange = DirectCast(DirectCast(doc.body, mshtml.HTMLBody).createControlRange(), mshtml.IHTMLControlRange)
Dim img As mshtml.IHTMLControlElement
Dim bmp As Bitmap
Dim ms As MemoryStream
Dim bitmapData
imgRange.add(img)
imgRange.execCommand([Ô]Copy[Ô], False, vbNull)
bmp = DirectCast(Clipboard.GetDataObject.GetData(DataFormats.Bitmap), Bitmap)
ms = New MemoryStream
bmp.Save(ms, Imaging.ImageFormat.Bmp)
bitmapData = ms.ToArray()
--------------------------------------------------------------------------------------------------------------------------
Modifique desta forma
---------------------------------------------------------------------------------------------------------------------------
[ô]Comentarios de Mudança
Adicione a esta Classe
++++++++++++++++++++++
Imports mshtml
+++++++++++++++++++++
Dim doc As mshtml.IHTMLDocument2 = DirectCast(QualWebBrowser.Document.DomDocument, mshtml.IHTMLDocument2)
Dim imgRange As mshtml.IHTMLControlRange = DirectCast(DirectCast(doc.body, mshtml.HTMLBody).createControlRange(), mshtml.IHTMLControlRange)
Dim img As mshtml.IHTMLControlElement
Dim bmp As Bitmap
Dim ms As MemoryStream
Dim bitmapData
[ô]+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
For Each img As IHTMLImgElement In doc.images
If img.GetAttribute([Ô]src[Ô]).ToString.Contains([Ô]securimage[Ô]) Then
imgRange.add(DirectCast(img, IHTMLControlElement))
imgRange.execCommand([Ô]Copy[Ô], False, Nothing)
Using bmp As Bitmap = DirectCast(Clipboard.GetDataObject().GetData(DataFormats.Bitmap), Bitmap)
Dim ms As New MemoryStream()
bmp.Save(ms, ImageFormat.Bmp)
bitmapData = ms.ToArray()
End Using
Exit For
End If
Next
[ô]++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
Mudanças em seu Código
Fazer Referências a esta Biblioteca
Imports mshtml
Colocar seu Código em um Loop e depois um IF de verificação
For Each img As IHTMLImgElement In doc.images
If img.GetAttribute([Ô]src[Ô]).ToString.Contains([Ô]securimage[Ô]) Then
[ô]SEU CÓDIGO
Exit For
End If
Next
Veja se isso da certo.......................
Boa Sorte
Olhando sua tradução do C para VB.Net ficaria assim
---------------------------------------------------------------------------------------------------------------------------
Dim doc As IHTMLDocument2 = DirectCast(browser.Document.DomDocument, IHTMLDocument2)
Dim imgRange As IHTMLControlRange = DirectCast(DirectCast(doc.body, HTMLBody).createControlRange(), IHTMLControlRange)
imgRange.add(DirectCast(img, IHTMLControlElement))
imgRange.execCommand([Ô]Copy[Ô], False, Nothing)
Using bmp As Bitmap = DirectCast(Clipboard.GetDataObject().GetData(DataFormats.Bitmap), Bitmap)
Dim ms As New MemoryStream()
bmp.Save(ms, ImageFormat.Bmp)
bitmapData = ms.ToArray()
End Using
---------------------------------------------------------------------------------------------------------------------------
Este é seu Código
--------------------------------------------------------------------------------------------------------------------------
Dim doc As mshtml.IHTMLDocument2 = DirectCast(QualWebBrowser.Document.DomDocument, mshtml.IHTMLDocument2)
Dim imgRange As mshtml.IHTMLControlRange = DirectCast(DirectCast(doc.body, mshtml.HTMLBody).createControlRange(), mshtml.IHTMLControlRange)
Dim img As mshtml.IHTMLControlElement
Dim bmp As Bitmap
Dim ms As MemoryStream
Dim bitmapData
imgRange.add(img)
imgRange.execCommand([Ô]Copy[Ô], False, vbNull)
bmp = DirectCast(Clipboard.GetDataObject.GetData(DataFormats.Bitmap), Bitmap)
ms = New MemoryStream
bmp.Save(ms, Imaging.ImageFormat.Bmp)
bitmapData = ms.ToArray()
--------------------------------------------------------------------------------------------------------------------------
Modifique desta forma
---------------------------------------------------------------------------------------------------------------------------
[ô]Comentarios de Mudança
Adicione a esta Classe
++++++++++++++++++++++
Imports mshtml
+++++++++++++++++++++
Dim doc As mshtml.IHTMLDocument2 = DirectCast(QualWebBrowser.Document.DomDocument, mshtml.IHTMLDocument2)
Dim imgRange As mshtml.IHTMLControlRange = DirectCast(DirectCast(doc.body, mshtml.HTMLBody).createControlRange(), mshtml.IHTMLControlRange)
Dim img As mshtml.IHTMLControlElement
Dim bmp As Bitmap
Dim ms As MemoryStream
Dim bitmapData
[ô]+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
For Each img As IHTMLImgElement In doc.images
If img.GetAttribute([Ô]src[Ô]).ToString.Contains([Ô]securimage[Ô]) Then
imgRange.add(DirectCast(img, IHTMLControlElement))
imgRange.execCommand([Ô]Copy[Ô], False, Nothing)
Using bmp As Bitmap = DirectCast(Clipboard.GetDataObject().GetData(DataFormats.Bitmap), Bitmap)
Dim ms As New MemoryStream()
bmp.Save(ms, ImageFormat.Bmp)
bitmapData = ms.ToArray()
End Using
Exit For
End If
Next
[ô]++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
Mudanças em seu Código
Fazer Referências a esta Biblioteca
Imports mshtml
Colocar seu Código em um Loop e depois um IF de verificação
For Each img As IHTMLImgElement In doc.images
If img.GetAttribute([Ô]src[Ô]).ToString.Contains([Ô]securimage[Ô]) Then
[ô]SEU CÓDIGO
Exit For
End If
Next
Veja se isso da certo.......................
Boa Sorte
boa tarde,
(IHTMLDocument2)WebBrowser1.Document.DomDocument;
(IHTMLControlRange)((HTMLBody)doc.body).createControlRange();
em resumo, essas linhas efetuam uma conversão explicita.
no caso directcast, porém também pode ser utilizado
Ctype(WebBrowser1.Document.DomDocument,IHTMLDocument2).Propriedade
=D
(IHTMLDocument2)WebBrowser1.Document.DomDocument;
(IHTMLControlRange)((HTMLBody)doc.body).createControlRange();
em resumo, essas linhas efetuam uma conversão explicita.
no caso directcast, porém também pode ser utilizado
Ctype(WebBrowser1.Document.DomDocument,IHTMLDocument2).Propriedade
=D
Car SPRITU
Concordo que pode ser assim utilizar o Ctype só uma correção ambos são semelhantes mas com diferenças implicitas de uso assim em resumo:
O CType é equivalente ao DirectCast, exceto que o CType você utiliza para variáveis do tipo valor (Integer, Long, Double, Decimal), e o DirectCast você utiliza para variáveis do tipo referência (Instâncias de classes / objetos).
No caso OBJETO WebBrowser1 o mais correto para não ter problemas genéricos ou indecifráveis
Mas concordo com o caro colega SPRITU pode ser sim utilizado Ctype neste caso.............................................
Boa sorte a todos.
Citação::
boa tarde,
(IHTMLDocument2)WebBrowser1.Document.DomDocument;
(IHTMLControlRange)((HTMLBody)doc.body).createControlRange();
em resumo, essas linhas efetuam uma conversão explicita.
no caso directcast, porém também pode ser utilizado
Ctype(WebBrowser1.Document.DomDocument,IHTMLDocument2).Propriedade
=D
Concordo que pode ser assim utilizar o Ctype só uma correção ambos são semelhantes mas com diferenças implicitas de uso assim em resumo:
O CType é equivalente ao DirectCast, exceto que o CType você utiliza para variáveis do tipo valor (Integer, Long, Double, Decimal), e o DirectCast você utiliza para variáveis do tipo referência (Instâncias de classes / objetos).
No caso OBJETO WebBrowser1 o mais correto para não ter problemas genéricos ou indecifráveis
Mas concordo com o caro colega SPRITU pode ser sim utilizado Ctype neste caso.............................................
Boa sorte a todos.
Obrigado aos dois,
Tradução feita.
Vou, agora, unir este trecho ao código completo para dar continuidade ao projeto.
Obrigado novamente ao [txt-color=#0000f0]AJSO[/txt-color] e ao [txt-color=#0000f0]SPRITU[/txt-color].
Tradução feita.
Vou, agora, unir este trecho ao código completo para dar continuidade ao projeto.
Obrigado novamente ao [txt-color=#0000f0]AJSO[/txt-color] e ao [txt-color=#0000f0]SPRITU[/txt-color].
Tópico encerrado , respostas não são mais permitidas