Seite 1 von 2

HTML Popup bei Programmstart einbinden

Verfasst: 22.07.2006 15:22
von Klaus Wotzen
Guten Tag

Ich wolte fragen ob mir jemand bei diesem Source weiterhelfen kann, und ihn erweitern könnte

Jedes mal wenn man das Programm startet soll eine HTML URL als Popup oder ähnliches im Programm geöffnet werden.

Wichtig ist als Popup und nach 15 sekunden schließt sich das Fenster

Hier der Source

Code: Alles auswählen

Enumeration
  #Window
  #cmdStart
  #progressbar
  #Frame
  #cmdExit
  #Label
  #Label2
  #URL
EndEnumeration


Procedure.s Reverse(s.s)
  O.s=Mid(s,Len(s),1)
  P=Len(s)-1
  While P>0
    O.s=O+Mid(s,P,1)
    P=P-1
  Wend
  ProcedureReturn O
EndProcedure

Procedure SetProgressbarRange(Gadget.l, Minimum.l, Maximum.l)
  ;? SetProgressbarRange(#progressbar, 0, 100)
  PBM_SETRANGE32 = $400 + 6
  SendMessage_(GadgetID(Gadget), PBM_SETRANGE32, Minimum, Maximum)
EndProcedure

Procedure DOEVENTS()
  msg.MSG
  If PeekMessage_(msg,0,0,0,1)
    TranslateMessage_(msg)
    DispatchMessage_(msg)
  Else
    Sleep_(1)
  EndIf
EndProcedure

Procedure.s GetQueryInfo(hHttpRequest.l, iInfoLevel.l)
  lBufferLength.l=0
  lBufferLength = 1024
  sBuffer.s=Space(lBufferLength)
  HttpQueryInfo_(hHttpRequest, iInfoLevel, sBuffer, @lBufferLength, 0)
  ProcedureReturn Left(sBuffer, lBufferLength)
EndProcedure

Procedure UrlToFileWithProgress(myFile.s, URL.s)
  isLoop.b=1
  Bytes.l=0
  fBytes.l=0
  Buffer.l=4096
  res.s=""
  tmp.s=""
 
  OpenType.b=1
  INTERNET_FLAG_RELOAD.l = $80000000
  INTERNET_DEFAULT_HTTP_PORT.l = 80
  INTERNET_SERVICE_HTTP.l = 3
  HTTP_QUERY_STATUS_CODE.l = 19
  HTTP_QUERY_STATUS_TEXT.l = 20
  HTTP_QUERY_RAW_HEADERS.l = 21
  HTTP_QUERY_RAW_HEADERS_CRLF.l = 22

  ;AllocateMemory(0,Buffer)
  ;UseMemory(0)
  Mem = AllocateMemory(Buffer)
  Result = CreateFile(1, myFile)
  hInet = InternetOpen_("", OpenType, #Null, #Null, 0)
  hURL = InternetOpenUrl_(hInet, URL, #Null, 0, INTERNET_FLAG_RELOAD, 0)
 
  ;get Filesize
  domain.s = ReplaceString(Left(URL,(FindString(URL, "/",8) - 1)),"http://","")
  hInetCon = InternetConnect_(hInet,domain, INTERNET_DEFAULT_HTTP_PORT, #Null, #Null, INTERNET_SERVICE_HTTP, 0, 0)
  If hInetCon > 0
    hHttpOpenRequest = HttpOpenRequest_(hInetCon, "HEAD", ReplaceString(URL,"http://"+domain+"/",""), "http/1.1", #Null, 0, INTERNET_FLAG_RELOAD, 0)
    If hHttpOpenRequest > 0
      iretval = HttpSendRequest_(hHttpOpenRequest, #Null, 0, 0, 0)
      If iretval > 0
        tmp = GetQueryInfo(hHttpOpenRequest, HTTP_QUERY_STATUS_CODE)
        If Trim(tmp) = "200"
          tmp = GetQueryInfo(hHttpOpenRequest, HTTP_QUERY_RAW_HEADERS_CRLF)
          If FindString(tmp,"Content-Length:",1)>0
            ii.l=FindString(tmp, "Content-Length:",1) + Len("Content-Length:")
            tmp = Mid(tmp, ii, Len(tmp)-ii)
            myMax = Val(Trim(tmp))
          EndIf
        EndIf
      EndIf
    EndIf
  EndIf
 
  SetGadgetText(#Label, "Dateigröße: " + Str(myMax))
  SetProgressbarRange(#progressbar,0,myMax)
 
  ;start downloading
  Repeat
    InternetReadFile_(hURL, Mem, Buffer, @Bytes)
    If Bytes = 0
      isLoop=0
    Else
      fBytes=fBytes+Bytes
        SetGadgetText(#Label2, "Empfagene Bytes: " + Str(fBytes))
      If myMax >= fBytes: SetGadgetState(#progressbar, fBytes): EndIf
      UseFile(1)
      WriteData(Mem, Bytes)
    EndIf
      DOEVENTS()
  Until isLoop=0
  InternetCloseHandle_(hURL)
  InternetCloseHandle_(hInet)
  SetGadgetState(#progressbar, 0)
  CloseFile(1)   
  FreeMemory(Mem)
EndProcedure



If OpenWindow(#Window, 0, 0, 500, 175, #PB_Window_SystemMenu | #PB_Window_TitleBar | #PB_Window_ScreenCentered , "Test Download")

  If CreateGadgetList(WindowID())
      StringGadget(#URL, 0, 0, 0, 0, "http://www.phpbb.de/mods/p/phpbbdeutsch/phpBB2-2.0.17-deutsch.zip")
      ProgressBarGadget(#progressbar, 10, 40, 380, 30, 0,100 , #PB_ProgressBar_Smooth)
      TextGadget(#Label, 10, 80,300,20,"Dateigröße:")
      TextGadget(#Label2, 10, 100,300,20,"Empfangene Bytes:")
      Frame3DGadget(#Frame, -10, 120, 420, 110, "")
      ButtonGadget(#cmdExit, 160, 140, 110, 25, "Beenden")
      ButtonGadget(#cmdStart, 280, 140, 110, 25, "Starten", #PB_Button_Default)
  EndIf
       
  Repeat
    EventID.l = WaitWindowEvent()
    If EventID = #PB_EventGadget   
      Select EventGadgetID()
        Case #cmdStart
       
          URL.s = GetGadgetText(#URL)
         
          ;get filename (checking /)
          myFile.s= Right(URL, FindString(Reverse(URL),"/",1)-1)
          ;request path
          myFolder.s = PathRequester ("In welche Ordner soll die Datei '" + myFile + "'gespeichert werden?", "C:\")

          UrlToFileWithProgress(myFolder + myFile, URL)
        Case #cmdExit
          End
      EndSelect
    EndIf               
  Until EventID = #PB_EventCloseWindow
EndIf
End
Eventuell könnte man noch 2 FEatures einbauen

Nach fertigen Download erscheint ne Box.
Download fertig und zeigt am besten auch noch die durchschnitlliche Downloadgeschwindigkeit an
.
Außerdem solte man unten noch eine URL setzen können
Wäre nett wenn mir jemand helfewn könnte und ja bin leider ne n00b.

Grüße Klaus

Verfasst: 22.07.2006 15:30
von hardfalcon
Warum hast du das nicht in dem andern Thread gepostet, den du schon angefangen hattest zu diesem Thema? (Dass jemand einen Thread für mehrere Probleme missbrauchen will, das kannte ich ja schon, aber sowas hier hatte ich auch noch nie... :lol: )

Verfasst: 22.07.2006 15:33
von Klaus Wotzen
Weil es schon etwas anders ist bei dem anderen wil ich ein komplettes Program haben.

Hier nur eine Erweiterung eines vorhandenen Quelltextes.

Verfasst: 22.07.2006 15:37
von Kiffi
> bei dem anderen wil ich ein komplettes Program haben.

es gibt mit Sicherheit einige Leute hier im Board, die bereit sind, Dir gegen
einen auszuhandelnden Stundenlohn eine Applikation zu erstellen, welche
Deinen Vorstellungen entspricht.

Grüße ... Kiffi

Verfasst: 22.07.2006 15:37
von Kaeru Gaman
Klaus Wotzen hat geschrieben:... wil ich ... haben.
1) dies ist ein Forum, weder eine Hotline noch eine Code-Versorgungs-Station.

2) bitte mal ansehen.

Verfasst: 22.07.2006 15:38
von hardfalcon
Hmm, ich würde dir gerne helfen, aber PB 3.94 hab ich cnith emhr aufm Rechner. Geht PB 4.0-Code auch?

Verfasst: 22.07.2006 15:54
von Klaus Wotzen
hardfalcon hat geschrieben:Hmm, ich würde dir gerne helfen, aber PB 3.94 hab ich cnith emhr aufm Rechner. Geht PB 4.0-Code auch?
hmm, ich denke mal das man dafür den alten code umwandeln ggf. umschreiben müsste.
Was ich wie gesagt leider nicht kann, wenn du dies machen könntest wäre das natürlich perfekt :allright:

Verfasst: 22.07.2006 16:16
von Kaeru Gaman
wo hast du denn dann den anderen code her?

Verfasst: 22.07.2006 16:19
von Klaus Wotzen
der hier im tread gepostet code stammt glaub ich aus einem Packet mit Samples

Verfasst: 22.07.2006 17:40
von Kaeru Gaman
vielleicht solltest du erst einmal verschiedene samples durcharbeiten,
um zu verstehen wie man was programmiert, und dich dann hinsetzen und es selber coden.

wenn du ein bestimmtes programm haben willst, und sonst kein interesse an programmieren hast,
dann solltest du nicht so tun als wenn du beim programmieren lernen geholfen haben möchtest,
und dir code "erschleichen", sondern gleich fragen,
ob jemand dir das gewünschte als auftragsarbeit programmiert.
vielleicht hat ja einer bock drauf, und machts fürn appel undn ei....