Pegar URL Ativa no Internet Explorer
Ola,
Gostaria de sabe se existe algum meio de pegar a url ativa do Internet Explorer e jogar isto
em uma string????
Sei que por meio do DDEMAN se faz isso, mas quero saber se existe alguma outra alternativa a isto???
de nao utilizar o DDE
Agradeço desde já.
Abraços..
Gostaria de sabe se existe algum meio de pegar a url ativa do Internet Explorer e jogar isto
em uma string????
Sei que por meio do DDEMAN se faz isso, mas quero saber se existe alguma outra alternativa a isto???
de nao utilizar o DDE
Agradeço desde já.
Abraços..
Alexandre Furlan
Curtidas 0
Respostas
Wesley Yamazack
31/03/2009
Olá Alexandre.
Bom dia.
Gostaria de saber qual real motivo você não gostaria de usar DDEMAN ?
Seria porque a função retorna .
"http://www.google.com.br/","Google"
E no caso você queria pegar somente o http://www.google.com.br ? Seria isso ?
Aguardo retorno
Att,
Wesley Y
Bom dia.
Gostaria de saber qual real motivo você não gostaria de usar DDEMAN ?
Seria porque a função retorna .
"http://www.google.com.br/","Google"
E no caso você queria pegar somente o http://www.google.com.br ? Seria isso ?
Aguardo retorno
Att,
Wesley Y
GOSTEI 0
Alexandre Furlan
31/03/2009
Ola,
Sei que posso tratar a string e retirar as " e , mas nao queria utilizar ddeman...
Sei que é possivel pegar a url pela classe do internet explorer poderia me ajudar nisso....
Agradeço desde já
Abraços...
Sei que posso tratar a string e retirar as " e , mas nao queria utilizar ddeman...
Sei que é possivel pegar a url pela classe do internet explorer poderia me ajudar nisso....
Agradeço desde já
Abraços...
GOSTEI 0
Wesley Yamazack
31/03/2009
Ola Alexandre,
Não entendi o motivo de você não usar DDEMAN? Por que não ? Se o que você quer fazer ele já te atende ?
Mas bem vamos lá, qual seria a classe do Internet Explorer? Me passe para eu poder analizar a mesma e te retornar com a solução.
Att,
Wesley Y
Não entendi o motivo de você não usar DDEMAN? Por que não ? Se o que você quer fazer ele já te atende ?
Mas bem vamos lá, qual seria a classe do Internet Explorer? Me passe para eu poder analizar a mesma e te retornar com a solução.
Att,
Wesley Y
GOSTEI 0
Alexandre Furlan
31/03/2009
Tenho um codigo em vb vou lhe mostrar!!!
mas como nao sou programador em vb e minha aplicação esta em delphi...
Option ExplicitPublic Function GetWindowStructure(window_hwnd As Long, Optional ByVal Indent As String = "") As String Dim txt, buf As String Dim buflen, child_hwnd, children() As Long Dim num_children, i As Integer buflen = 256 buf = Space$(buflen - 1) buflen = GetClassName(window_hwnd, buf, buflen) buf = Left$(buf, buflen) txt = Indent & buf If buf = "Edit" Then txt = txt & " (" & WindowText(window_hwnd) & ")" txt = txt & vbCrLf num_children = 0 child_hwnd = GetWindow(window_hwnd, GW_CHILD) Do While child_hwnd <> 0 num_children = num_children + 1 ReDim Preserve children(1 To num_children) children(num_children) = child_hwnd
child_hwnd = GetWindow(child_hwnd, GW_HWNDNEXT) Loop For i = 1 To num_children txt = txt & GetWindowStructure(children(i), Indent & " ") Next i
GetWindowStructure = txtEnd FunctionPublic Function WindowText(window_hwnd As Long) As String Dim txtlen As Long Dim txt As String WindowText = "" If window_hwnd = 0 Then Exit Function txtlen = SendMessage(window_hwnd, WM_GETTEXTLENGTH, 0, 0) If txtlen = 0 Then Exit Function txtlen = txtlen + 1 txt = Space$(txtlen) txtlen = SendMessage(window_hwnd, WM_GETTEXT, txtlen, ByVal txt) WindowText = Left$(txt, txtlen)End Function
Public Function EnumProc(ByVal app_hwnd As Long, ByVal lParam As Long) As Boolean Dim buf As String * 1024 Dim length, lPonto1, lPonto2 As Long Dim sConteudo, s_Ndeg, title As String length = GetWindowText(app_hwnd, buf, Len(buf)) title = Left$(buf, length) If InStr(title, "Internet") > 0 Then sConteudo = GetWindowStructure(app_hwnd) If (InStr(sConteudo, "Edit") > 0) Then lPonto1 = InStr(sConteudo, "Edit") + 6 lPonto2 = InStr(lPonto1, sConteudo, vbCrLf) - 1 s_Ndeg = Mid$(sConteudo, lPonto1, lPonto2 - lPonto1) End If EnumProc = 0 Else EnumProc = 1 End IfEnd Function
Sera que teria como portar isso para delphi... essa funcão em vb retorna corretamento a url ativa no internet explorer...
Agradeço desde já
Abraços
mas como nao sou programador em vb e minha aplicação esta em delphi...
Option ExplicitPublic Function GetWindowStructure(window_hwnd As Long, Optional ByVal Indent As String = "") As String Dim txt, buf As String Dim buflen, child_hwnd, children() As Long Dim num_children, i As Integer buflen = 256 buf = Space$(buflen - 1) buflen = GetClassName(window_hwnd, buf, buflen) buf = Left$(buf, buflen) txt = Indent & buf If buf = "Edit" Then txt = txt & " (" & WindowText(window_hwnd) & ")" txt = txt & vbCrLf num_children = 0 child_hwnd = GetWindow(window_hwnd, GW_CHILD) Do While child_hwnd <> 0 num_children = num_children + 1 ReDim Preserve children(1 To num_children) children(num_children) = child_hwnd
child_hwnd = GetWindow(child_hwnd, GW_HWNDNEXT) Loop For i = 1 To num_children txt = txt & GetWindowStructure(children(i), Indent & " ") Next i
GetWindowStructure = txtEnd FunctionPublic Function WindowText(window_hwnd As Long) As String Dim txtlen As Long Dim txt As String WindowText = "" If window_hwnd = 0 Then Exit Function txtlen = SendMessage(window_hwnd, WM_GETTEXTLENGTH, 0, 0) If txtlen = 0 Then Exit Function txtlen = txtlen + 1 txt = Space$(txtlen) txtlen = SendMessage(window_hwnd, WM_GETTEXT, txtlen, ByVal txt) WindowText = Left$(txt, txtlen)End Function
Public Function EnumProc(ByVal app_hwnd As Long, ByVal lParam As Long) As Boolean Dim buf As String * 1024 Dim length, lPonto1, lPonto2 As Long Dim sConteudo, s_Ndeg, title As String length = GetWindowText(app_hwnd, buf, Len(buf)) title = Left$(buf, length) If InStr(title, "Internet") > 0 Then sConteudo = GetWindowStructure(app_hwnd) If (InStr(sConteudo, "Edit") > 0) Then lPonto1 = InStr(sConteudo, "Edit") + 6 lPonto2 = InStr(lPonto1, sConteudo, vbCrLf) - 1 s_Ndeg = Mid$(sConteudo, lPonto1, lPonto2 - lPonto1) End If EnumProc = 0 Else EnumProc = 1 End IfEnd Function
Sera que teria como portar isso para delphi... essa funcão em vb retorna corretamento a url ativa no internet explorer...
Agradeço desde já
Abraços
GOSTEI 0
Wesley Yamazack
31/03/2009
Olá Alexandre,
Analisando o código em VB, é justamente o que a função da unit ddeman faz, no caso o componente TDDEClientConv. A diferença é que já esta tudo no componente e o que você tem que fazer é apenas usar, no caso você esta pegando a url + o nome da pág, mas isso você falou que sabe retirar e pegar somente a url.
Então não vejo porque você não usar a mesma já que ela faz a mesma coisa do seu código em VB.
Att,
Wesley Y
Analisando o código em VB, é justamente o que a função da unit ddeman faz, no caso o componente TDDEClientConv. A diferença é que já esta tudo no componente e o que você tem que fazer é apenas usar, no caso você esta pegando a url + o nome da pág, mas isso você falou que sabe retirar e pegar somente a url.
Então não vejo porque você não usar a mesma já que ela faz a mesma coisa do seu código em VB.
Att,
Wesley Y
GOSTEI 0
Alexandre Furlan
31/03/2009
Acontece que em alguns casos
o dde nao consegue me resultar em nada, ou seja me traz um valor nulo por isso
de pegar diretamente pela classe do ie, ai nao teria erro
Abraços
o dde nao consegue me resultar em nada, ou seja me traz um valor nulo por isso
de pegar diretamente pela classe do ie, ai nao teria erro
Abraços
GOSTEI 0
Wesley Yamazack
31/03/2009
Olá Alexandre,
Bom a única forma dele pegar a URL em branco, seria quando o teu IE não estivesse aberto, ou nenhuma página estivesse na barra de endereços. Mas como você disse que não consegue capturar algumas vezes, me de um exemplo.
Att,
Wesley Y
Bom a única forma dele pegar a URL em branco, seria quando o teu IE não estivesse aberto, ou nenhuma página estivesse na barra de endereços. Mas como você disse que não consegue capturar algumas vezes, me de um exemplo.
Att,
Wesley Y
GOSTEI 0
Alexandre Furlan
31/03/2009
Wesley
Acho que você não esta me intendendo, estou procurando uma forma alternativa de nao usar o dde
pois o mesmo nao funciona em uma dll, caso eu queira portar as minhas funcoes...
Será que intende agora....
Abraços,
Aguardo Retorno
Acho que você não esta me intendendo, estou procurando uma forma alternativa de nao usar o dde
pois o mesmo nao funciona em uma dll, caso eu queira portar as minhas funcoes...
Será que intende agora....
Abraços,
Aguardo Retorno
GOSTEI 0
Wesley Yamazack
31/03/2009
Olá Alexandre,
Se você tivesse explicado antes que não funcionava na dll eu nao teria insistido no assunto, mas agora que falou da dll.
Você disse que tem uma classe da Internet Explorer, me passe ela para eu poder analisar. Já que o ddn não serve para você. Pois fora esta forma eu não conheço
Att,
Wesley Y
Se você tivesse explicado antes que não funcionava na dll eu nao teria insistido no assunto, mas agora que falou da dll.
Você disse que tem uma classe da Internet Explorer, me passe ela para eu poder analisar. Já que o ddn não serve para você. Pois fora esta forma eu não conheço
Att,
Wesley Y
GOSTEI 0
Alexandre Furlan
31/03/2009
Seria algo como
Identy := GetForeGroundWindow;
hb := windows.FindWindowEx(Identy,0,'TabWindowClass',nil) or windows.FindWindowEx(Identy,0,'Shell DocObject View',nil);
Identy := GetForeGroundWindow;
hb := windows.FindWindowEx(Identy,0,'TabWindowClass',nil) or windows.FindWindowEx(Identy,0,'Shell DocObject View',nil);
GOSTEI 0
Wesley Yamazack
31/03/2009
Alexandre,
O que você me passou, ele pega o Handle de uma janela, qualquer, não teria como você pegar assim a url da mesma. Gostaria de saber qual erro que da quando você usa ddeman, derrepente usando o mesmo conseguiriamos resolver o problema na DLL. Fara isso não tem como capturar não, pois o que você me passou foi um código e não a classe como você disse que sabia que tinha no delphi.
Att,
Wesley Y
O que você me passou, ele pega o Handle de uma janela, qualquer, não teria como você pegar assim a url da mesma. Gostaria de saber qual erro que da quando você usa ddeman, derrepente usando o mesmo conseguiriamos resolver o problema na DLL. Fara isso não tem como capturar não, pois o que você me passou foi um código e não a classe como você disse que sabia que tinha no delphi.
Att,
Wesley Y
GOSTEI 0
Wesley Yamazack
31/03/2009
Alexandre,
Gostaria de saber mais informações, sobre a sua intenção com a DLL, teria como gravar uma video me mostrando o erro que acontece na mesma, para podermos resolver o problema ?
Att,
Gostaria de saber mais informações, sobre a sua intenção com a DLL, teria como gravar uma video me mostrando o erro que acontece na mesma, para podermos resolver o problema ?
Att,
GOSTEI 0
Alexandre Furlan
31/03/2009
Ola,
realmente e complicado mas consegui resolver o problema utilizando este codigo
Function Site(Ser: string): String;
var C: TDDEClientConv;
temp:PChar;begin
Result := '';
C:= TDDEClientConv.Create( nil );
with C do begin
SetLink(Ser,'WWW_GetWindowInfo');
temp := RequestData('0xFFFFFFFF');
Result := StrPas(temp);
StrDispose(temp);
CloseLink;
end;
C.Free;
end;
mas eu agradeço a atenção caso, você tenha esse codigo
um pouco melhorado e poder compartilhar comigo ficarei grato também
um forte abraço
realmente e complicado mas consegui resolver o problema utilizando este codigo
Function Site(Ser: string): String;
var C: TDDEClientConv;
temp:PChar;begin
Result := '';
C:= TDDEClientConv.Create( nil );
with C do begin
SetLink(Ser,'WWW_GetWindowInfo');
temp := RequestData('0xFFFFFFFF');
Result := StrPas(temp);
StrDispose(temp);
CloseLink;
end;
C.Free;
end;
mas eu agradeço a atenção caso, você tenha esse codigo
um pouco melhorado e poder compartilhar comigo ficarei grato também
um forte abraço
GOSTEI 0
Wesley Yamazack
31/03/2009
Ola,
Meu caro, sua função é interessante, porém se você analisar, você esta usando o TDDEClientConv, e o mesmo esta na Unit DdeMan. O que esta função faz é justamente o que estavamos conversando sobre o usar a unit.
Quanto a melhorar eu te recomendo
C.Free;
por
FreeAndNil(C);
Quanto ao restante esta tudo tranquilo. Podemos fechar o Chamado ?
Att,
Wesley Y
Meu caro, sua função é interessante, porém se você analisar, você esta usando o TDDEClientConv, e o mesmo esta na Unit DdeMan. O que esta função faz é justamente o que estavamos conversando sobre o usar a unit.
Quanto a melhorar eu te recomendo
C.Free;
por
FreeAndNil(C);
Quanto ao restante esta tudo tranquilo. Podemos fechar o Chamado ?
Att,
Wesley Y
GOSTEI 0
Alexandre Furlan
31/03/2009
Ola,
Agradeço a sua Atenção e a Dica....
podemos fechar o Topico sim
um forte abraço
Agradeço a sua Atenção e a Dica....
podemos fechar o Topico sim
um forte abraço
GOSTEI 0
Wesley Yamazack
31/03/2009
Olá,
Chamado foi concluído, estamos sempre a disposição.
Att,
Wesley Y
Chamado foi concluído, estamos sempre a disposição.
Att,
Wesley Y
GOSTEI 0