|
Postada em 18/06/2008 18:17 hs
Copiando a URL do Explorer [ usando o Delphi ] A Questão é: Como fezer isso de forma equivalente no VB6? Confira as funções necessárias para se copiar a URL do Explorer: Function GetText(WindowHandle: hwnd):string; var txtLength : integer; buffer: string; begin TxtLength := SendMessage(WindowHandle, WM_GETTEXTLENGTH, 0, 0); txtlength := txtlength + 1; setlength (buffer, txtlength); sendmessage (WindowHandle,wm_gettext, txtlength, longint(@buffer[1])); result := buffer; end; function GetURL:string; var ie,toolbar,combo, comboboxex,edit, worker,toolbarwindow:hwnd; begin ie := FindWindow(pchar('IEFrame'),nil); worker := FindWindowEx(ie,0,'WorkerA',nil); toolbar := FindWindowEx(worker,0,'rebarwindow32',nil); comboboxex := FindWindowEx(toolbar, 0, 'comboboxex32', nil); combo := FindWindowEx(comboboxex,0,'ComboBox',nil); edit := FindWindowEx(combo,0,'Edit',nil); toolbarwindow := FindWindowEx(comboboxex, 0, 'toolbarwindow32', nil); result := GetText(edit); end; A URL fica armazenada em GetURL, no nosso exemplo utilizamos o comando showmessage para exibí-la. ShowMessage(GetURL); A Questão é: Como fezer isso de forma equivalente no VB6?
|
|
|
|
Treze
|
SÃO VICENTE SP - BRASIL
|
|
ENUNCIADA !
|
|
|
Postada em 18/06/2008 19:18 hs
Eu já postei esta função aqui veja se te ajuda Primeiro coloque em um novo projeto... 01 Listbox 01 ComandButton agora faça a a seguinte referência: PROJECT/REFERENCES e selecione Microsoft Internet Controls agora cole o seguinte código Sub InfoIEWindows(LST As Control) Dim SWS As New SHDocVw.ShellWindows Dim IE As New SHDocVw.InternetExplorer LST.Clear For Each IE In SWS ' O ShellWindows pega também as janelas do Windows Explorer, ' portanto separe-as das do IE If LCase(Right(IE.FullName, 12)) = "iexplore.exe" Then LST.AddItem IE.hWnd ' Handle LST.AddItem IE.LocationURL ' URL LST.AddItem IE.Document.Title ' Titulo LST.AddItem "-------------------------------" End If Next IE End Sub Private Sub Command1_Click() InfoIEWindows List1 End Sub Agora veja se retorna o desejado.
|
|
|
|
Postada em 19/06/2008 18:13 hs
Caro, Treze; Vc não entendeu exatamente o que postei. Não me referia à captura da URL em si, e sim ao equivalente em vb ao código já postado acima em delphi. Saca?! A sua resposta é equivalente sim, no que diz respeito à captura da URL, mas não à codificação mencionada fazendo uso de API's como o SendMessage, FindWindow e FindWindowEx. Entendeu?! Foi a isso q me referi quando disse: "equivalente em VB6". D qualquer forma, na verdade de uma forma bem especial, Muito Obrigado pela tentativa de resolução à minha dúvida.
|
|
|
Ama
|
UBERLÂNDIA MG - BRASIL
|
|
ENUNCIADA !
|
|
|
Postada em 20/06/2008 00:26 hs
Declare Function SendMessage Lib "user32" Alias "SendMessageA" (ByVal hWnd As Long, ByVal wMsg As Long, ByVal wParam As Long, lParam As Any) As Long Declare Function FindWindow Lib "user32" Alias "FindWindowA" (ByVal lpClassName As String, ByVal lpWindowName As String) As Long Declare Function FindWindowEx Lib "user32" Alias "FindWindowExA" (ByVal hWnd1 As Long, ByVal hWnd2 As Long, ByVal lpsz1 As String, ByVal lpsz2 As String) As Long Global buffer As String Public Const WM_GETTEXT = &HD Public Const WM_GETTEXTLENGTH = &HE Function GetURL() As String Dim ie As Long, toolbar As Long, combo As Long Dim comboboxex As Long, edit As Long Dim worker As Long, toolbarwindow As Long Dim hWnd As Long Dim strIe As String strIe = "Microsoft Internet Explorer" ie = FindWindow("IEFrame", vbNullString) worker = FindWindowEx(ie, 0, "workerw", vbNullString) toolbar = FindWindowEx(worker, 0, "rebarwindow32", vbNullString) comboboxex = FindWindowEx(toolbar, 0, "comboboxex32", vbNullString) combo = FindWindowEx(comboboxex, 0, "ComboBox", vbNullString) edit = FindWindowEx(combo, 0, "Edit", vbNullString) toolbarwindow = FindWindowEx(comboboxex, 0, "toolbarwindow32", vbNullString) GetURL = GetText(edit) End Function Function GetText(WindowHandle As Long) As String Dim txtLength As Long txtLength = SendMessage(WindowHandle, WM_GETTEXTLENGTH, ByVal 0, ByVal 0) + 1
buffer = Space(txtLength - 1) SendMessage WindowHandle, WM_GETTEXT, ByVal txtLength, ByVal buffer GetText = buffer End Function
|
|
|
|
Postada em 20/06/2008 14:22 hs
Olá, Ama! Na linha: " comboboxex = FindWindowEx(toolbar, 0, "comboboxex32", vbNullString) " a variável "comboboxex" não está recebendo o handle do objeto "comboboxex32". Será que o nome do Objeto está errado?! Gostaria d saber se vc testou o código e se funcionou corretamente. No meu caso, lógico, usei a msgbox ( equivalente à ShowMessage do Delphi ) para exibir o conteúdo recuperado pela Função GetURL, mas está retornando vazio. Alguém pode me ajudar?!
|
TÓPICO EDITADO
|
|
|
|
|
Postada em 20/06/2008 16:13 hs
No ie7 notei q o FindWindowEx(toolbar, 0, "ComboBoxEx32", vbNullString) está retornando "" (vazio).
|
|
|
|