[VB6] Ie.browser Wachtwoord-Popup killen

Pagina: 1
Acties:

  • Mir
  • Registratie: Maart 2001
  • Niet online
Hoi,

Ik heb een internetexplorer.application die een wachtwoord popup geeft bij de site die ik wil gebruiken. Maar nu wil ik die popup ook kunnen killen als de gebruiker een aantal seconden niet op OK heeft geklikt.

Visual Basic:
1
2
3
4
5
6
Private Const VK_CANCEL = &H3
Private Const VK_ESCAPE = &H1B
Private Const WM_KEYDOWN = &H100
Private Declare Function SendMessage Lib "user32" _ 
Alias "SendMessageA" (ByVal hwnd As Long, _
ByVal wMsg As Long, ByVal wParam As Long, lParam As Any) As Long

Visual Basic:
1
2
3
4
5
6
7
Set browser = CreateObject("InternetExplorer.Application") 

'ook VK_CANCEL geeft geen resultaat, 
'PostMessage ook geprobeerd.. geen succes
SendMessage browser.hwnd, WM_KEYDOWN, VK_ESCAPE, 0 

browser.Quit    'Dit werkt niet voordat die popup dus weg is!


er gebeurt gewoon NIETS!

Dit werkt wel:
code:
1
2
AppActivate browser
SendKeys "{ESC}"


Maar dat vind ik een gevaarlijke optie omdat wanneer toevallig tussen die 2 regels een andere applicatie de focus krijgt, de ESC naar de verkeerde applicatie gaat!
[misschien een kleine subvraag: hoe betrouwbaar is die laatste oplossing?]

Wie helpt om sendmessage voor werkend te krijgen?

[ Voor 7% gewijzigd door Mir op 08-11-2004 16:10 ]


  • Mir
  • Registratie: Maart 2001
  • Niet online
niemand? :)

heb al vele manieren geprobeerd...niets helpt ;(

Verwijderd

Okey,

dit is heel lang geleden, maar ik weet dat je m.b.v. een API call windows kan zoeken en kan sluiten...

Visual Basic:
1
2
3
4
5
6
Private Const WM_CLOSE = &H10

Dim lResult As Long
Dim lhWND as Long
    
lResult = SendMessage(lhWND, WM_CLOSE, 0&, 0&)


Je moet dus nog de juiste window handle van het venster opzoeken. Daar is een FindWindow methode voor volgens mij...
Zoekt en gij zult vinden...

  • Mir
  • Registratie: Maart 2001
  • Niet online
Verwijderd schreef op 09 november 2004 @ 21:14:
Okey,

dit is heel lang geleden, maar ik weet dat je m.b.v. een API call windows kan zoeken en kan sluiten...

Visual Basic:
1
2
3
4
5
6
Private Const WM_CLOSE = &H10

Dim lResult As Long
Dim lhWND as Long
    
lResult = SendMessage(lhWND, WM_CLOSE, 0&, 0&)


Je moet dus nog de juiste window handle van het venster opzoeken. Daar is een FindWindow methode voor volgens mij...
Zoekt en gij zult vinden...
:D Jij hebt mijn openings post doorgelezen? ;)

  • Woudloper
  • Registratie: November 2001
  • Niet online

Woudloper

« - _ - »

Voor het FindWindow kan je bijvoorbeeld hier kijken en mocht je nog informatie willen hebben over ShowWindow dan kan je hier kijken...

Dus (nu code bij een andere bron vandaan):

Visual Basic:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
Declare Function FindWindow Lib "user32" Alias "FindWindowA" ( _ 
             ByVal lpClassName As String, _
             ByVal lpWindowName As String) As Long

Declare Function SendMessage Lib "user32" Alias "SendMessageA" ( _
             ByVal hwnd As Long, _
             ByVal wMsg As Long, _
             ByVal wParam As Long, _
             lParam As Long) As Long

Public Const WM_CLOSE = &H10
Dim ret
Dim sNull as String
Dim lHwnd as Long

Sub KillLogonWindow(WindowTitle$)

    lHwnd = FindWindow(sNull, WindowTitle$)
    
    If lHwnd <> 0 Then
        ret = SendMessage(lHwnd, WM_CLOSE, 0, 0)
    Else
        MsgBox "'" & WindowTitle$ & "' is already closed!", vbExclamation + _
        vbOKOnly, "Kill Logon Window"
    End If

End sub

[ Voor 87% gewijzigd door Woudloper op 12-11-2004 16:03 ]


Verwijderd

Mir schreef op 09 november 2004 @ 22:47:
[...]

:D Jij hebt mijn openings post doorgelezen? ;)
Jaja, normaal negeren volgens mij de meeste tweakers vb vragen. Misschien is dat voor de meesten onder ons te lang geleden. Maar had je ook niet even op internet kunnen zoeken naar het killen van een window? Volgens mij staan daar echt tig voorbeelden.

// Edit

Mir, ik denk dat deze knik in de communicatie volledig door jou komt. Dan had je maar exact moeten vertellen hoe het probleem in elkaar zit...
Ik snap dat je gestrest bent door dit probleem, maar ik probeer ook slechts te helpen :/

[ Voor 24% gewijzigd door Verwijderd op 10-11-2004 16:22 ]


  • Mir
  • Registratie: Maart 2001
  • Niet online
uhm, mensen.. jullie snappen mijn vraag niet.

ik gebruik in mijn code browser.hwnd ... waar heb ik die findwindwindow dan voor nodig?.

om de hwnd van de netwerk-wachtwoord-vraag te vinden.. dat snap ik.. maar ik gebruik de nederlandse windows, iemand anders de duitse en weer iemand anders de engelse..

wat dan?

dus ik kan idd findwindow gebruiken (waar ik ook al mee bezig ben geweest), maar dan heb je dus het probleem met de talen.

óf is daar ook een oplossing voor??


btw: ik weet wel hoe ik een window moet afsluiten.. maar deze lukt mij gewoon niet (netjes)!

[ Voor 10% gewijzigd door Mir op 10-11-2004 13:35 ]


  • farlane
  • Registratie: Maart 2000
  • Laatst online: 17-05 17:19
Ik denk dat die escape niet bij het juiste window aankomt (je dialog) . Misschien moet je vertellen aan IE dat het een WM_DIALOG betreft?

Somniferous whisperings of scarlet fields. Sleep calling me and in my dreams i wander. My reality is abandoned (I traverse afar). Not a care if I never everwake.


  • Woudloper
  • Registratie: November 2001
  • Niet online

Woudloper

« - _ - »

In deze newsgroup posting kan je overigens ook nog een FindWindowEX uitleg vinden die het ook mogelijk maakt om Child Windows te vinden. Als je een controle doet op een childwindow behorende bij Internet Explorer moet je er toch redelijk zeker van kunnen zijn dat je dan ook écht het 'Network Logon' window hebt?

  • Mir
  • Registratie: Maart 2001
  • Niet online
hmm

intresting!!

bedankt! Ik ga daar even mee aan de slag! :):)

  • Mir
  • Registratie: Maart 2001
  • Niet online
-- nog niet goed geprobeerd... brb ;)

[ Voor 93% gewijzigd door Mir op 12-11-2004 14:51 ]


  • Woudloper
  • Registratie: November 2001
  • Niet online

Woudloper

« - _ - »

Mir schreef op 12 november 2004 @ 14:50:
-- nog niet goed geprobeerd... brb ;)
Werkt het nu wel dan? Aangezien je je bericht hebt geedit. Zou je wellicht (mocht je een oplossing hebben) de oplossing met ons willen delen? Want dan kan iemand anders (die wellicht hetzelfde probleem heeft als jou) ook het juiste antwoord vinden op het forum...

  • Mir
  • Registratie: Maart 2001
  • Niet online
hard bezig.. hard bezig...

:)


ik zal zo even wat dingen posten die ik geprobeerd heb...
probleem met jouw voorbeeld: ik kreeg dezelfde hwnd gewoon terug (van de parent dus)..

  • Mir
  • Registratie: Maart 2001
  • Niet online
lngHwnd2 = FindWindowEx(lngHwnd, lngHwnd2, vbNullString, vbNullString)


werkt niet.. krijg dezelfde handler terug..


lngHwnd2 = GetWindow(lngHwnd, GW_CHILD)

ik krijg een andere handler terug maar krijg hem niet gesloten

ik probeer hem te sluiten met:

PostMessage lngHwnd2, WM_SYSCOMAND, SC_CLOSE, ByVal 0&
SendMessage lngHwnd2, WM_KEYDOWN, VK_ESCAPE, 0 'Set Edit Box Text


dus op 2 manieren..

  • Mir
  • Registratie: Maart 2001
  • Niet online
lngHwnd2 = FindWindow(vbNullString, "Netwerkwachtwoord opgeven")
bringwindowtotop(lngHwnd2)

Dit werkt dus wel btw!!

maar ik krijg hem niet gevonden op een andere manier.. en ik wil niet hard coded die sting "Netwerkwachtwoord opgeven" meegeven! :(

  • Woudloper
  • Registratie: November 2001
  • Niet online

Woudloper

« - _ - »

Werkt het toevallig niet met de ClassName methode? Dan heb je toch ook min-of-meer een generieke aanduiding voor je Window? Er staat vast ergens op internet een lijst met een overzicht van alle classnames....

  • Mir
  • Registratie: Maart 2001
  • Niet online
code:
1
2
3
4
5
6
lngHwnd2 = FindWindow(vbNullString, "Netwerkwachtwoord opgeven")

hwnd = GetWindow(browser.hwnd, GW_CHILD)
Do While Not hwnd = 0
   hwnd = GetWindow(hwnd , GW_HWNDNEXT)
Loop



er komen een stuk of 4 handlers terug.. maar niet hetzelfde als lngHwnd2...

ik krijg het ook niet voor elkaar om dmv bringwindowtotop de popup omhoog te krijgen dmv de handlers uit de loop.

de handler lngHwnd2 is wel goed om bringwindowtotop goed te laten werken!

lastig..lastig..

  • Mir
  • Registratie: Maart 2001
  • Niet online
Ok.. de vraag is eigenlijk veranderd naar:

---------------


Hoe kom ik aan de handler van het wachtwoord popup?
Het is een child/popup? Maar ik krijg er maar geen grip op!


help!!! ;(
Pagina: 1