Попробуй сделать тоже самое, но с помощью IE.
Спасибо, работает. А что на счет этого:
PS: как же все таки после загрузки программы и создания браузера загружать в него другие файлы?
Отредактировано daiomik (Сегодня 18:08:17)
PureBasic - форум |
Привет, Гость! Войдите или зарегистрируйтесь.
Вы здесь » PureBasic - форум » Вопросы по PureBasic » Вопросы новичка
Попробуй сделать тоже самое, но с помощью IE.
Спасибо, работает. А что на счет этого:
PS: как же все таки после загрузки программы и создания браузера загружать в него другие файлы?
Отредактировано daiomik (Сегодня 18:08:17)
как же все таки после загрузки программы и создания браузера загружать в него другие файлы?
С помощью SetGadgetText
Или с помощью SetGadgetItemText, если нужно загрузить Html код.
Подскажите пожалуйста как создать такой эффект, при котором при запуске программы появляется вводное окно с логотипом и где отображается ход загрузки программы. Мне для начала просто визуально нужно. И на 2-3 секунды "зависнуть" программу и показать данное окошко. Естественно через данное время окно скроется и появится сама программа.
Подскажите пожалуйста как создать такой эффект, при котором при запуске программы появляется вводное окно с логотипом и где отображается ход загрузки программы. Мне для начала просто визуально нужно. И на 2-3 секунды "зависнуть" программу и показать данное окошко. Естественно через данное время окно скроется и появится сама программа.
Вот в этой теме можно найти пример. Строк там немного, думаю разобраться не составит проблемы
За пример конечно спасибо, но вы чуть чуть не поняли. У меня в главном окне при создании (запуске) окна происходит загрузка html файла в браузер, которая занимает некоторое время (1-3с) в зависимости от объема данных, так же создаются остальные объекты. Мне нужно спрятать эти "мелькания" чем то другим, в моем случае ДРУГИМ окном и все это дело заморозить на пару секунд
появляется вводное окно с логотипом
;////////////////////////////Заставка перед стартом программы////////////////////////// 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)
не, наверно не подойдет...
Delay(1000); время работы заставки
Вот из-за этой строки точно не подойдет, здесь наверно правильней будет с помощью SetTimer как бы отдельный поток прикрутить, пока загрузка идет.
Да, не подходит, так как мне нужно именно запустить скрытно на пару сек главное окно программы. Блин, может другой вариант есть?
Да, не подходит, так как мне нужно именно запустить скрытно на пару сек главное окно программы
При создании главного окна, сделай его не видимым (флаг #PB_Window_Invisible), а по окончании загрузки, отобрази его (функция HideWindow).
происходит загрузка html файла в браузер, которая занимает некоторое время
Но ведь файл загружает не с инета, а с диска. так что время загрузки будет не очень большое.
При создании главного окна, сделай его не видимым (флаг #PB_Window_Invisible), а по окончании загрузки, отобрази его (функция HideWindow).
Спасибо, Петр, работает на ура))
Но ведь файл загружает не с инета, а с диска. так что время загрузки будет не очень большое.
Я знаю, просто раньше при создании окна происходило какое-то мелькание браузера. + к этому было заметно создание тул бара и др гаджетов. Но сейчас все отлично
Снова проблема. Пытаюсь открыть файл все в том же браузере. Не пойму как правильно прописать путь к файлу:
WebGadget(#Web_1, 384, 19, 555, 525, "file://"+GetPathPart(Data\help\about\)+"about.mht")
Не пойму как правильно прописать путь к файлу:
Какой путь к файлу относительно исполняемого файла?
Рядом с исполняемым файлом лежит папка data. Вот путь к файлу:
data\help\about\about.mht
WebGadget(#Web_1, 384, 19, 555, 525, "file://"+GetPathPart(ProgramFilename())+"data\help\about\about.mht")
Теперь в браузере высвечивается "Невозможно отобразить страницу"
Теперь в браузере высвечивается "Невозможно отобразить страницу"
Вставь в начало проги этот код и посмотри правильный ли путь к файлу
Path.s=GetPathPart(ProgramFilename())+"data\help\about\about.mht"
MessageRequester("",Path)Вот что там, а мне нужно то что в папке:
Вот что там, а мне нужно то что в папке
В настройках проекта, отметь этот пункт.
Или скомпилируй прогу, т. е. не запускай её из среды.
у меня так работает только скомпилированный файл
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
или
"file://localhost/"+ProgPath+"папка/файл.htm"
без localhost не работает
Отредактировано mirashic (01.05.2010 22:47:03)
В настройках проекта, отметь этот пункт.
Или скомпилируй прогу, т. е. не запускай её из среды.
Спасибо, Петр, и так и так работает. 
Странно, но перестала работать блокировка всплывающего меню у браузера. Может повлияло то что я в него загрузил mht?? Вот эти 2-е строчки:
WebGadget(#Web_1, 384, 19, 555, 525, "file://"+GetPathPart(ProgramFilename())+"data\help\about\about.mht") SetGadgetAttribute(#Web_1,#PB_Web_BlockPopupMenu,1)
Странно, но перестала работать блокировка всплывающего меню у браузера
Да, странно как-то!
Пришлось использовать хакерские методы
но контекстного меню теперь нет.
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Как программно создать папку в заданной директории ?
Как программно создать папку в заданной директории ?
Используй функцию CreateDirectory из FileSystem
Спасибо, получилось.
На форуме 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
;}-------------------------------------------------------Наверно надо организовать работу в потоках
Да, так проще всего будет.
Только нужно в настройках проекта, включить поддержку потоков.
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
;}-------------------------------------------------------Спасибо, буду разбираться... не смотря на праздник...
| Вопросы новичка (продолжение…) | Вопросы по PureBasic | 29.06.2024 |
| Скорее, это теоретический вопрос о правах в директории. | OffTop | 16.09.2022 |
| Вопрос по отладке | Вопросы по PureBasic | 26.01.2017 |
| Три вопроса по созданию браузера. | Вопросы по PureBasic | 01.11.2010 |
| вопрос о точности типов данных | Вопросы по PureBasic | 20.05.2021 |
Вы здесь » PureBasic - форум » Вопросы по PureBasic » Вопросы новичка