WCM - Das österreichische Computer Magazin Forenübersicht
 

Zurück   WCM Forum > Rat & Tat > Programmierung

Programmierung Rat & Tat für Programmierer

Microsoft KARRIERECAMPUS

Antwort
 
Themen-Optionen Ansicht
Alt 30.03.2003, 10:50   #1
Hussl
Veteran
 
Registriert seit: 08.02.2001
Alter: 41
Beiträge: 320


Standard VB: Winsock + ScriptControl

Hallo, ich hab ein Problem mit den beiden o.g.

Dem ScriptControl hab ich eine Klasse meines Programms übergeben, wo die wichtigsten Funktionen drinstehen.
Eine dieser Funktionen heißt FireEvent, mit der ich die Verbindung zu einer bestimmten Webseite auslöse. Jetzt soll der Code des ScriptControls erst weiter ausgeführt werden, wenn die Verbindung wieder geschlossen wurde. Und da komm ich nicht weiter...

hier der code:

FireEvent >> Call sEvent

Code:
Public Sub sEvent()

    Dim strURL As String
    Dim strHost As String
    Dim strPage As String
    
    If txtURL = "" Then
        msgbox "Bitte geben Sie eine korrekte URL ein."
        Exit Sub
    End If
    
    strURL = txtURL
    If Left(strURL, 7) = "http://" Then strURL = Mid(strURL, 8)
    
    On Error GoTo ErrHandle
    
    p_strHost = Left(strURL, InStr(1, strURL, "/") - 1)
    p_strPage = Mid(strURL, InStr(1, strURL, "/"))
    
    p_lngDownloadedBytes = 0
    p_strHttpResponse = ""
    p_HeaderReceived = False
    
    With Winsock
        .Tag = "open"
        .Close
        .LocalPort = 0
        .Connect p_strHost, 80
    End With

ErrHandle:
    If Err.Number = 5 Then
        strURL = strURL & "/"
        Resume 0
    End If

End Sub
Wenn die Übertragung fertig ist, setze ich Winsock.Tag = "close". Also muss ich das abfragen. Jedoch hab ich keinen blassen Schimmer, wo ich das machen muss, und wie:

Code:
Do
   Sleep x  'oder doch besser...
   DoEvents '...??
Loop Until Winsock.Tag <> "open"
und bei welcher Prozedur muss ich das aufrufen??

für infos wäre ich sehr dankbar!
____________________________________
Nein, ich bin nicht die Signatur, ich putz hier nur.

http://www.chili-it.at
Hussl ist offline   Mit Zitat antworten
Alt 31.03.2003, 00:10   #2
Seidl
Veteran
 
Registriert seit: 10.01.2001
Beiträge: 478


Standard

Wenn du den Wert in einer Schleife abfragen willst solltest du UNBEDINGT 'do events' verwenden. Nur dieses Statement gibt die Kontrolle ab damit auch andere Teile der Anwendung zum Zug kommen.
Allerdings würde es sich bei einer Klasse doch eigentlich anbieten einen eigenen Event zu programmieren, der ausgelöst wird wenn die Übertragung fertig ist.
In der VB-Hilfe findet man die Anleitung um Events zu Klassen hinzuzufügen. (Declaring and Raising Events)
Allerdings sollte man diese Möglichkeit nicht zu exzessiv nutzen, da dabei ziemlich viele Ressourcen draufgehen.
Seidl ist offline   Mit Zitat antworten
Alt 31.03.2003, 07:36   #3
Hussl
Veteran
 
Registriert seit: 08.02.2001
Alter: 41
Beiträge: 320


Standard

Hab mal wieder alles ungestrickt. Statt Winsock hab ich das INET-Control verwendet. Das erfüllt alle meine Anforderungungen und ist noch einfacher in der Programmierung. Dort gibt es auch eine Property "StillExecuting", an der sieht man ob INET gerade beschäftigt ist...

mfg
Hussl
____________________________________
Nein, ich bin nicht die Signatur, ich putz hier nur.

http://www.chili-it.at
Hussl ist offline   Mit Zitat antworten
Alt 31.03.2003, 08:58   #4
renew
Inventar
 
Registriert seit: 22.10.2000
Alter: 41
Beiträge: 5.552


Standard

Zitat:
Original geschrieben von Seidl

Allerdings würde es sich bei einer Klasse doch eigentlich anbieten einen eigenen Event zu programmieren, der ausgelöst wird wenn die Übertragung fertig ist.
In der VB-Hilfe findet man die Anleitung um Events zu Klassen hinzuzufügen. (Declaring and Raising Events)
Allerdings sollte man diese Möglichkeit nicht zu exzessiv nutzen, da dabei ziemlich viele Ressourcen draufgehen.
ähhm, passt zwar nicht zum Thema, aber wie würde man sich einen eigenen Event programmieren...

Nicht, das ich es gerade bräuchte, aber es wäre schon interessant zu wissen, wie des geht...
renew ist offline   Mit Zitat antworten
Alt 31.03.2003, 09:36   #5
Seidl
Veteran
 
Registriert seit: 10.01.2001
Beiträge: 478


Standard

@Hussl: In dem Fall, wie gesagt, unbedingt DoEvents verwenden.

@LLR: Gute Beschreibung im MSDN vorhanden.
Seidl ist offline   Mit Zitat antworten
Alt 31.03.2003, 10:01   #6
renew
Inventar
 
Registriert seit: 22.10.2000
Alter: 41
Beiträge: 5.552


Standard

Zitat:
Original geschrieben von Seidl

@LLR: Gute Beschreibung im MSDN vorhanden.
ich danke....
renew ist offline   Mit Zitat antworten
Antwort


Aktive Benutzer in diesem Thema: 1 (Registrierte Benutzer: 0, Gäste: 1)
 
Themen-Optionen
Ansicht

Forumregeln
Es ist Ihnen nicht erlaubt, neue Themen zu verfassen.
Es ist Ihnen nicht erlaubt, auf Beiträge zu antworten.
Es ist Ihnen nicht erlaubt, Anhänge hochzuladen.
Es ist Ihnen nicht erlaubt, Ihre Beiträge zu bearbeiten.

BB-Code ist an.
Smileys sind an.
[IMG] Code ist an.
HTML-Code ist aus.

Gehe zu


Alle Zeitangaben in WEZ +2. Es ist jetzt 08:51 Uhr.


Powered by vBulletin® Copyright ©2000 - 2025, Jelsoft Enterprises Ltd.
Forum SEO by Zoints
© 2009 FSL Verlag