Попробуй сделать тоже самое, но с помощью 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 » Вопросы новичка