HTML Popup bei Programmstart einbinden

Anfängerfragen zum Programmieren mit PureBasic.
Klaus Wotzen
Beiträge: 7
Registriert: 22.07.2006 10:53

HTML Popup bei Programmstart einbinden

Beitrag 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
Benutzeravatar
hardfalcon
Beiträge: 3447
Registriert: 29.08.2004 20:46

Beitrag 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: )
Klaus Wotzen
Beiträge: 7
Registriert: 22.07.2006 10:53

Beitrag 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.
Benutzeravatar
Kiffi
Beiträge: 10714
Registriert: 08.09.2004 08:21
Wohnort: Amphibios 9

Beitrag 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
a²+b²=mc²
Kaeru Gaman
Beiträge: 17389
Registriert: 10.11.2004 03:22

Beitrag 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.
Der Narr denkt er sei ein weiser Mann.
Der Weise weiß, dass er ein Narr ist.
Benutzeravatar
hardfalcon
Beiträge: 3447
Registriert: 29.08.2004 20:46

Beitrag 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?
Klaus Wotzen
Beiträge: 7
Registriert: 22.07.2006 10:53

Beitrag 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:
Kaeru Gaman
Beiträge: 17389
Registriert: 10.11.2004 03:22

Beitrag von Kaeru Gaman »

wo hast du denn dann den anderen code her?
Der Narr denkt er sei ein weiser Mann.
Der Weise weiß, dass er ein Narr ist.
Klaus Wotzen
Beiträge: 7
Registriert: 22.07.2006 10:53

Beitrag von Klaus Wotzen »

der hier im tread gepostet code stammt glaub ich aus einem Packet mit Samples
Kaeru Gaman
Beiträge: 17389
Registriert: 10.11.2004 03:22

Beitrag 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....
Der Narr denkt er sei ein weiser Mann.
Der Weise weiß, dass er ein Narr ist.
Antworten