PureBasic - форум

Информация о пользователе

Привет, Гость! Войдите или зарегистрируйтесь.


Вы здесь » PureBasic - форум » Вопросы по PureBasic » Вопросы новичка


Вопросы новичка

Сообщений 421 страница 450 из 1000

421

Пётр написал(а):

Попробуй сделать тоже самое, но с помощью IE.

Спасибо, работает. А что на счет этого:

daiomik написал(а):

PS: как же все таки после загрузки программы и создания браузера загружать в него другие файлы?
            Отредактировано daiomik (Сегодня 18:08:17)

0

422

как же все таки после загрузки программы и создания браузера загружать в него другие файлы?

С помощью SetGadgetText
Или с помощью SetGadgetItemText, если нужно загрузить Html код.

0

423

Подскажите пожалуйста как создать такой эффект, при котором при запуске программы появляется вводное окно с логотипом и где отображается ход загрузки программы. Мне для начала просто визуально нужно. И на 2-3 секунды "зависнуть" программу и показать данное окошко. Естественно через данное время окно скроется и появится сама программа.

0

424

daiomik написал(а):

Подскажите пожалуйста как создать такой эффект, при котором при запуске программы появляется вводное окно с логотипом и где отображается ход загрузки программы. Мне для начала просто визуально нужно. И на 2-3 секунды "зависнуть" программу и показать данное окошко. Естественно через данное время окно скроется и появится сама программа.

Вот в этой теме можно найти пример. Строк там немного, думаю разобраться не составит проблемы 

Примитивный экзаменатор знаний клавиатуры

0

425

За пример конечно спасибо, но вы чуть чуть не поняли. У меня в главном окне при создании (запуске) окна происходит загрузка html файла в браузер, которая занимает некоторое время (1-3с) в зависимости от объема данных, так же создаются остальные объекты. Мне нужно спрятать эти "мелькания" чем то другим, в моем случае ДРУГИМ окном и все это дело заморозить на пару секунд

0

426

daiomik написал(а):

появляется вводное окно с логотипом

Код:
;////////////////////////////Заставка перед стартом программы//////////////////////////
UsePNGImageDecoder()
hWnd    = OpenWindow(0,0,0, 500, 434, "Window Name", #WS_POPUP|#PB_Window_Invisible|#PB_Window_ScreenCentered)
hBitmap = LoadImage(0, "489537.png") ; ваш логотип
SkinWin(hWnd, hBitmap)
HideWindow(0,#False)
Delay(1000); время работы заставки
;//////////////////////////////////////////////////////////////////////////////////////

индикатор загрузки
http://www.mirashic.narod.ru/zagryzka.htm

Отредактировано mirashic (01.05.2010 21:02:09)

0

427

не, наверно не подойдет...

0

428

mirashic написал(а):

Delay(1000); время работы заставки

Вот из-за этой строки точно не подойдет, здесь наверно правильней будет с помощью SetTimer как бы отдельный поток прикрутить, пока загрузка идет.

0

429

Да, не подходит, так как мне нужно именно запустить скрытно на пару сек главное окно программы. Блин, может другой вариант есть?

0

430

daiomik написал(а):

Да, не подходит, так как мне нужно именно запустить скрытно на пару сек главное окно программы

При создании главного окна, сделай его не видимым (флаг #PB_Window_Invisible), а по окончании загрузки, отобрази его (функция HideWindow).

daiomik написал(а):

происходит загрузка html файла в браузер, которая занимает некоторое время

Но ведь файл загружает не с инета, а с диска. так что время загрузки будет не очень большое.

0

431

Пётр написал(а):

При создании главного окна, сделай его не видимым (флаг #PB_Window_Invisible), а по окончании загрузки, отобрази его (функция HideWindow).

Спасибо, Петр, работает на ура))

Пётр написал(а):

Но ведь файл загружает не с инета, а с диска. так что время загрузки будет не очень большое.

Я знаю, просто раньше при создании окна происходило какое-то мелькание браузера. + к этому было заметно создание тул бара и др гаджетов. Но сейчас все отлично

0

432

Снова проблема. Пытаюсь открыть файл все в том же браузере. Не пойму как правильно прописать путь к файлу:

Код:
WebGadget(#Web_1, 384, 19, 555, 525, "file://"+GetPathPart(Data\help\about\)+"about.mht")

0

433

daiomik написал(а):

Не пойму как правильно прописать путь к файлу:

Какой путь к файлу относительно исполняемого файла?

0

434

Рядом с исполняемым файлом лежит папка data. Вот путь к файлу:

Код:
data\help\about\about.mht

0

435

Код:
WebGadget(#Web_1, 384, 19, 555, 525, "file://"+GetPathPart(ProgramFilename())+"data\help\about\about.mht")

0

436

Теперь в браузере высвечивается "Невозможно отобразить страницу"

0

437

daiomik написал(а):

Теперь в браузере высвечивается "Невозможно отобразить страницу"

Вставь в начало проги этот код и посмотри правильный ли путь к файлу

Код:
Path.s=GetPathPart(ProgramFilename())+"data\help\about\about.mht"
MessageRequester("",Path)

0

438

Вот что там, а мне нужно то что в папке:
http://s55.radikal.ru/i149/1005/03/8fc3885af962.jpg

0

439

daiomik написал(а):

Вот что там, а мне нужно то что в папке

В настройках проекта, отметь этот пункт.
http://s006.radikal.ru/i214/1005/83/b086256c6497.png

Или скомпилируй прогу, т. е. не запускай её из среды.

0

440

у меня так работает  только скомпилированный файл

Код:
Enumeration
#Window_0
EndEnumeration 

OpenWindow(#Window_0, 100, 100, 480,640, "окно", #PB_Window_MinimizeGadget | #PB_Window_ScreenCentered| #PB_Window_MaximizeGadget|#PB_Window_Invisible) 
SetWindowColor(#Window_0, RGB(255, 255, 255))



ProgPath.s=GetPathPart(ProgramFilename())
WebGadget(333, 5, 5, 470, 370, "file://localhost/"+ProgPath+"фон.htm", #PB_Web_ScrollX ) 

HideWindow(#Window_0,0)

Repeat
Event= WaitWindowEvent()
Window=EventWindow()
Gadget=EventGadget()

Select Event
Case #PB_Event_Gadget
Select EventGadget()
   Case 1

   Case 2
   
   Case 3  
EndSelect
EndSelect

If Event=#PB_Event_CloseWindow
CloseWindow(Window)
EndIf
Until Event=#PB_Event_CloseWindow And Window=#Window_0

0

441

или

"file://localhost/"+ProgPath+"папка/файл.htm"

без localhost не работает

Отредактировано mirashic (01.05.2010 22:47:03)

0

442

Пётр написал(а):

В настройках проекта, отметь этот пункт.

Пётр написал(а):

Или скомпилируй прогу, т. е. не запускай её из среды.

Спасибо, Петр, и так и так работает. :cool:

0

443

Странно, но перестала работать блокировка всплывающего меню у браузера. Может повлияло то что я в него загрузил mht?? Вот эти 2-е строчки:

Код:
WebGadget(#Web_1, 384, 19, 555, 525, "file://"+GetPathPart(ProgramFilename())+"data\help\about\about.mht")
SetGadgetAttribute(#Web_1,#PB_Web_BlockPopupMenu,1)

0

444

daiomik написал(а):

Странно, но перестала работать блокировка всплывающего меню у браузера

Да, странно как-то!

Пришлось использовать хакерские методы :) но контекстного меню теперь нет.

Код:
Procedure Web_WndProc(hwnd, msg, wParam, lParam)
Shared *PointOldWebFunc
   If msg=#WM_RBUTTONDOWN Or msg=#WM_RBUTTONUP
     msg=0 : wParam=0 : lParam=0 
     Debug msg
     ProcedureReturn 0
   EndIf
ProcedureReturn CallWindowProc_(*PointOldWebFunc,hwnd, msg, wParam, lParam)
EndProcedure


Procedure.l enumChildren(hwnd.l) 
Shared *PointOldWebFunc
  If hwnd  
    MainText.s = Space(256) 
    classText.s = Space(256) 
    GetWindowText_(hwnd,@MainText,256) 
    GetClassName_(hwnd, @classText, 256) 
    
    If LCase(classText)="internet explorer_server"
       *PointOldWebFunc=GetWindowLong_(hwnd, #GWL_WNDPROC)
       SetWindowLong_(hwnd, #GWL_WNDPROC, @Web_WndProc()) 
       Debug hwnd
    EndIf 
    
    ProcedureReturn 1 
  Else 
    ProcedureReturn 0 
  EndIf 
EndProcedure 

OpenWindow(0, 0, 0, 600, 300, "Наше окно", #PB_Window_SystemMenu | #PB_Window_ScreenCentered)
WebGadget(0, 10, 10, 580, 280, "D:\PureBasic - главная.mht")

AddWindowTimer(0,1,2000)

 Repeat
   Event=WaitWindowEvent()
   If Event=#PB_Event_Timer
     If EventTimer()=1
       EnumChildWindows_(GadgetID(0), @enumChildren(), 0) ; Handle - хендл окна.
       RemoveWindowTimer(0,1)
     EndIf
   EndIf
 Until Event = #PB_Event_CloseWindow

0

445

Как программно создать папку в заданной директории ?

0

446

mirashic написал(а):

Как программно создать папку в заданной директории ?

Используй функцию CreateDirectory из FileSystem

0

447

Спасибо, получилось.

0

448

На форуме http://purebasic.info/ в разделе Получение картинок с Yandex  разбираюсь с кодом...
Вроде всё получилось, создал окно, выбираем категорию и страницу, создаётся папка и идёт скачивание,
пока идёт скачивание - меняется индикация количества скаченных картинок, но если тронуть окно - оно зависает и не отвечает до конца  работы процедуры.

Наверно надо организовать работу в потоках (может я не правильно понимаю и потоки - это не то )
Но как это сделать, я не представляю.

Код:
Enumeration 
#Window_0
#Window_2     
#but
#tex1
#str1
#tex2
#str2
#tex3   
EndEnumeration
 
Global  Category$, w.s, i

InitNetwork()

Procedure LSDH()
DeleteFile("_GetImagePage.tmp") 
If ReceiveHTTPFile("http://fotki.yandex.ru/tag/" + Category$ + "?&p=" + w.s, "_GetImagePage.tmp") 
  If OpenFile(0,"_GetImagePage.tmp") 
    While Eof(0) = 0 
      Text$ = Text$ + ReadString(0) + Chr(13) 
    Wend
    ;CloseFile(0) 
    ;DeleteFile("_GetImagePage.tmp") 
    Temp = FindString(Text$, "<b class=" + Chr(34) + "number" + Chr(34) + ">", 0) 
    If Temp 
      String$ = Right(Text$, Len(Text$) - Temp - 17) 
      Temp = FindString(String$, "</b>", 0)
      If Temp 
        AllFoto = Val(Left(String$, Temp))
        Debug  AllFoto 
        AllPage = AllFoto / 20 
        If AllPage > 10 Or AllPage = 10 
          ;If ReceiveHTTPFile("http://fotki.yandex.ru/tag/" + Category$ + "?&p=" + Str(Random(10)), "_GetImagePage.tmp") 
            If OpenFile(0,"_GetImagePage.tmp") 
              Text$ = "" 
              While Eof(0) = 0 
                Text$ = Text$ + ReadString(0) + Chr(13) 
              Wend
              ;CloseFile(0) 
              ;DeleteFile("_GetImagePage.tmp") 
              Temp = FindString(Text$, "b-preview-photos", 0) 
              If Temp 
                Text$ = Right(Text$, Len(Text$) - Temp) 
                Temp = FindString(Text$, "<div class=" + Chr(34) + "b-pager g-js" + Chr(34), 0) 
                If Temp 
                  Text$ = Left(Text$, Temp) 
                  For i = 0 To 20
                  SetGadgetText(#tex3,Str(i+1)) 
                    Temp = FindString(Text$, "src=", 0) 
                    If Temp 
                      Start = Temp + 5 
                      Temp = FindString(Text$, " />", Temp) 
                      If Temp 
                        Image$ = Mid(Text$, Start, Temp - Start - 2) + "L" 
                        ReceiveHTTPFile(Image$, Category$+w.s+"/" + Str(i) + ".jpg")                      
                        Text$ = Right(Text$, Len(Text$) - Temp) 
                      EndIf 
                    EndIf 
                  Next 
                EndIf 
              EndIf 
            ;EndIf 
          EndIf 
        EndIf 
      EndIf 
    EndIf 
  EndIf 
EndIf
EndProcedure 
 

;{------------------Окно--------------------------------
OpenWindow (#Window_0,0,0,380,200,"Окно",#PB_Window_MinimizeGadget|#PB_Window_ScreenCentered) 
   ;SetWindowColor(#Window_0,RGB(255, 255, 255))
   ButtonGadget(#but, 15, 70,90, 20,"Загрузить")
   TextGadget  (#tex1,15, 32,70, 15,"Категория" )
   StringGadget(#str1,100,30,150,20,"красота")   
   TextGadget  (#tex2,275,32,20, 15,"Стр" )
   StringGadget(#str2,305,30,50, 20,"1")   
   TextGadget  (#tex3,275,70,50, 15,"коллич" )   
;}------------------------------------------------------


;{-----------------Главный цикл-------------------------
Repeat
Event =  WaitWindowEvent() 
Window = EventWindow() 
Gadget = EventGadget() 
   Select Event
        Case #PB_Event_Gadget
          Select EventGadget()
             Case #but
             SetGadgetText(#but,"Идет загрузка")
             Category$ = GetGadgetText(#str1)   ; категория
             w.s       = GetGadgetText(#str2)   ; номер страницы
             CreateDirectory(Category$+w.s)     ; создаём папку по имени
             LSDH()      
              SetGadgetText(#but,"Ура !")
              CloseFile(0)
              DeleteFile("_GetImagePage.tmp")
          EndSelect
   EndSelect
If Event = #PB_Event_CloseWindow
Break
EndIf
ForEver
;}-------------------------------------------------------

0

449

mirashic написал(а):

Наверно надо организовать работу в потоках

Да, так проще всего будет.
Только нужно в настройках проекта, включить поддержку потоков.

Код:
Enumeration 
#Window_0
#Window_2     
#but
#tex1
#str1
#tex2
#str2
#tex3   
EndEnumeration
 
Global  Category$, w.s, i

InitNetwork()

Procedure LSDH(*x)
DeleteFile("_GetImagePage.tmp") 
If ReceiveHTTPFile("http://fotki.yandex.ru/tag/" + Category$ + "?&p=" + w.s, "_GetImagePage.tmp") 
  If OpenFile(0,"_GetImagePage.tmp") 
    While Eof(0) = 0 
      Text$ = Text$ + ReadString(0) + Chr(13) 
    Wend
    ;CloseFile(0) 
    ;DeleteFile("_GetImagePage.tmp") 
    Temp = FindString(Text$, "<b class=" + Chr(34) + "number" + Chr(34) + ">", 0) 
    If Temp 
      String$ = Right(Text$, Len(Text$) - Temp - 17) 
      Temp = FindString(String$, "</b>", 0)
      If Temp 
        AllFoto = Val(Left(String$, Temp))
        Debug  AllFoto 
        AllPage = AllFoto / 20 
        If AllPage > 10 Or AllPage = 10 
          ;If ReceiveHTTPFile("http://fotki.yandex.ru/tag/" + Category$ + "?&p=" + Str(Random(10)), "_GetImagePage.tmp") 
            If OpenFile(0,"_GetImagePage.tmp") 
              Text$ = "" 
              While Eof(0) = 0 
                Text$ = Text$ + ReadString(0) + Chr(13) 
              Wend
              ;CloseFile(0) 
              ;DeleteFile("_GetImagePage.tmp") 
              Temp = FindString(Text$, "b-preview-photos", 0) 
              If Temp 
                Text$ = Right(Text$, Len(Text$) - Temp) 
                Temp = FindString(Text$, "<div class=" + Chr(34) + "b-pager g-js" + Chr(34), 0) 
                If Temp 
                  Text$ = Left(Text$, Temp) 
                  For i = 0 To 20
                  SetGadgetText(#tex3,Str(i+1)) 
                    Temp = FindString(Text$, "src=", 0) 
                    If Temp 
                      Start = Temp + 5 
                      Temp = FindString(Text$, " />", Temp) 
                      If Temp 
                        Image$ = Mid(Text$, Start, Temp - Start - 2) + "L" 
                        ReceiveHTTPFile(Image$, Category$+w.s+"/" + Str(i) + ".jpg")                      
                        Text$ = Right(Text$, Len(Text$) - Temp) 
                      EndIf 
                    EndIf 
                  Next 
                EndIf 
              EndIf 
            ;EndIf 
          EndIf 
        EndIf 
      EndIf 
    EndIf 
  EndIf 
EndIf


SetGadgetText(#but,"Ура !")
CloseFile(0)
DeleteFile("_GetImagePage.tmp")
EndProcedure 
 

;{------------------Окно--------------------------------
OpenWindow (#Window_0,0,0,380,200,"Окно",#PB_Window_MinimizeGadget|#PB_Window_ScreenCentered) 
   ;SetWindowColor(#Window_0,RGB(255, 255, 255))
   ButtonGadget(#but, 15, 70,90, 20,"Загрузить")
   TextGadget  (#tex1,15, 32,70, 15,"Категория" )
   StringGadget(#str1,100,30,150,20,"красота")   
   TextGadget  (#tex2,275,32,20, 15,"Стр" )
   StringGadget(#str2,305,30,50, 20,"1")   
   TextGadget  (#tex3,275,70,50, 15,"коллич" )   
;}------------------------------------------------------


;{-----------------Главный цикл-------------------------
Repeat
Event =  WaitWindowEvent() 
Window = EventWindow() 
Gadget = EventGadget() 
   Select Event
        Case #PB_Event_Gadget
          Select EventGadget()
             Case #but
             If IsThread(ThreadID)=0
               SetGadgetText(#but,"Идет загрузка")
               Category$ = GetGadgetText(#str1)   ; категория
               w.s       = GetGadgetText(#str2)   ; номер страницы
               CreateDirectory(Category$+w.s)     ; создаём папку по имени
              ThreadID=CreateThread(@LSDH(), 0)      
              ;SetGadgetText(#but,"Ура !")
              ;CloseFile(0)
              ;DeleteFile("_GetImagePage.tmp")
             Else
               MessageRequester("", "Программа занята!", #MB_OK|#MB_ICONWARNING)
             EndIf
          EndSelect
   EndSelect
If Event = #PB_Event_CloseWindow
Break
EndIf
ForEver
;}-------------------------------------------------------

0

450

Спасибо, буду разбираться... не смотря на праздник...

0


Вы здесь » PureBasic - форум » Вопросы по PureBasic » Вопросы новичка