امتیاز موضوع:
  • 0 رأی - میانگین امتیازات: 0
  • 1
  • 2
  • 3
  • 4
  • 5
دلیل هنگ هنگام استفاده از URLDownloadToFile
نویسنده پیام
HamedFaa آفلاین
كاربر دو ستاره
**

ارسال‌ها: 117
موضوع‌ها: 16
تاریخ عضویت: اسفند ۱۳۸۹

تشکرها : 15
( 61 تشکر در 47 ارسال )
ارسال: #1
دلیل هنگ هنگام استفاده از URLDownloadToFile
سلام

دوستان دلیل هنگ کردن برنامه هنگاه استفاده از این ای پی آی URLDownloadToFile چیه؟

من یه سورس نمونه گذاشتم. تا وقتی که فایل کاملا دانلود و ذخیره نشه برنامه هنگ میکنه......

دانلود سورس نمونه

-----------------------------------------------------

سوال دیگه ای که دارم اینه که وقتی در یک webbrowser که navigate رو about:blank کردیم و بعد یک عکس وارد webbrowser کردیم:
کد:
webbrowser.document.body.innerhtml = "<img src=piclink>"
چطور میتونیم همین عکس رو از webbrowser ذخیره کنیم.

بدون استفاده از URLDownloadToFile, winsock یا winhttp
منظورم اینه نمیخوام فایل رو دانلود کنم. میخوام همون عکسی که در webbrowser لود شده رو ذخیره کنم. یعنی اگر عکس کاملا لود شده بود بلافاصله ذخیره بشه در دیسک سخت.

تشکر
(آخرین ویرایش در این ارسال: ۰۹-آذر-۱۳۹۰, ۰۷:۱۴:۰۶، توسط HamedFaa.)
۰۹-آذر-۱۳۹۰, ۰۷:۱۱:۲۸
وب سایت ارسال‌ها
پاسخ
Payman62 آفلاین
مدیر بخش ویژوال بیسیک
*****

ارسال‌ها: 2,273
موضوع‌ها: 149
تاریخ عضویت: اسفند ۱۳۸۴

تشکرها : 1308
( 3661 تشکر در 942 ارسال )
ارسال: #2
RE: دلیل هنگ هنگام استفاده از URLDownloadToFile
سلام.
این api به این صورت کار میکنه. میتونی از InternetOpenUrl و InternetReadFile و ... استفاده کنی که پروگرس هم داشته باشی.

کد:
Private Declare Function InternetOpen Lib "wininet.dll" Alias "InternetOpenA" (ByVal sAgent As String, ByVal lAccessType As Long, ByVal sProxyName As String, ByVal sProxyBypass As String, ByVal lFlags As Long) As Long
Private Declare Function InternetOpenUrl Lib "wininet.dll" Alias "InternetOpenUrlA" (ByVal hInternetSession As Long, ByVal sUrl As String, ByVal sHeaders As String, ByVal lHeadersLength As Long, ByVal lFlags As Long, ByVal lContext As Long) As Long
Private Declare Function InternetReadFile Lib "wininet.dll" (ByVal hFile As Long, ByVal sBuffer As String, ByVal lNumBytesToRead As Long, lNumberOfBytesRead As Long) As Integer
Private Declare Function InternetCloseHandle Lib "wininet.dll" (ByVal hInet As Long) As Integer
Private Const INTERNET_OPEN_TYPE_DIRECT = 1
Private Const INTERNET_OPEN_TYPE_PROXY = 3
Private Const IF_FROM_CACHE = &H1000000
Private Const IF_MAKE_PERSISTENT = &H2000000
Private Const IF_NO_CACHE_WRITE = &H4000000
Private Const BUFFER_LEN = 256
Dim hSession As Long

Public Sub DownloadFile(sUrl As String, strAdrs As String, blnUseProxy As Boolean)
Dim sBuffer As String * BUFFER_LEN, iResult As Integer, sData As String
Dim hInternet As Long, hSession As Long, lReturn As Long
    
    If blnUseProxy Then
        hSession = InternetOpen("Payman", INTERNET_OPEN_TYPE_PROXY, "127.0.0.1:8080", vbNullString, 1)
    Else
        hSession = InternetOpen("Payman", INTERNET_OPEN_TYPE_DIRECT, vbNullString, vbNullString, 1)
    End If
    
    If hSession Then hInternet = InternetOpenUrl(hSession, sUrl, vbNullString, 0, IF_NO_CACHE_WRITE, 0)
    If hInternet Then
    iResult = InternetReadFile(hInternet, sBuffer, BUFFER_LEN, lReturn)
    sData = sBuffer
    Do While lReturn <> 0
    iResult = InternetReadFile(hInternet, sBuffer, BUFFER_LEN, lReturn)
    sData = sData + Mid(sBuffer, 1, lReturn)
    DoEvents
    Loop
    End
If
    iResult = InternetCloseHandle(hInternet)
    
    Open strAdrs For Binary As #1
        Put #1, , sData
    Close #1
    
    'GetUrl = sData
    'GetUrl = Replace(sData, Chr(0), "*")
End Sub
۰۹-آذر-۱۳۹۰, ۲۳:۴۰:۱۵
ارسال‌ها
پاسخ
تشکر شده توسط : HamedFaa, zirak
HamedFaa آفلاین
كاربر دو ستاره
**

ارسال‌ها: 117
موضوع‌ها: 16
تاریخ عضویت: اسفند ۱۳۸۹

تشکرها : 15
( 61 تشکر در 47 ارسال )
ارسال: #3
RE: دلیل هنگ هنگام استفاده از URLDownloadToFile
اینم هنگ میکنه متاسفانه...........
۲۸-آذر-۱۳۹۰, ۰۲:۵۳:۱۸
وب سایت ارسال‌ها
پاسخ
Di Di آفلاین
مدير بخش هك و كرك
*****

ارسال‌ها: 2,358
موضوع‌ها: 116
تاریخ عضویت: اسفند ۱۳۸۵

تشکرها : 1816
( 4046 تشکر در 1321 ارسال )
ارسال: #4
RE: دلیل هنگ هنگام استفاده از URLDownloadToFile
من تست کردم هنگ نمی کرد ولی اگه بهتر از این بخوای همونطور که آقا پیمان گفتن

باید از توابعی مثل InternetOpenUrl و InternetReadFile استفاده کنی.

کد:
Const scUserAgent = "API-Guide test program"
Const INTERNET_OPEN_TYPE_DIRECT = 1
Const INTERNET_OPEN_TYPE_PROXY = 3
Const INTERNET_FLAG_RELOAD = &H80000000
Const sURL = "http://www.microsoft.com/index.htm"
Private Declare Function InternetOpen Lib "wininet" Alias "InternetOpenA" (ByVal sAgent As String,
ByVal lAccessType As Long, ByVal sProxyName As String, ByVal sProxyBypass As String, ByVal lFlags As
Long) As Long
Private Declare Function InternetCloseHandle Lib "wininet" (ByVal hInet As Long) As Integer
Private Declare Function InternetReadFile Lib "wininet" (ByVal hFile As Long, ByVal sBuffer As String,
ByVal lNumBytesToRead As Long, lNumberOfBytesRead As Long) As Integer
Private Declare Function InternetOpenUrl Lib "wininet" Alias "InternetOpenUrlA" (ByVal hInternetSession
As Long, ByVal lpszUrl As String, ByVal lpszHeaders As String, ByVal dwHeadersLength As Long, ByVal
dwFlags As Long, ByVal dwContext As Long) As Long
Private Sub Form_Load()


    Dim hOpen As Long, hFile As Long, sBuffer As String, Ret As Long
    'Create a buffer for the file we're going to download
    sBuffer = Space(1000)
    'Create an internet connection
    hOpen = InternetOpen(scUserAgent, INTERNET_OPEN_TYPE_DIRECT, vbNullString, vbNullString, 0)
    'Open the url
    hFile = InternetOpenUrl(hOpen, sURL, vbNullString, ByVal 0&, INTERNET_FLAG_RELOAD, ByVal 0&)
    'Read the first 1000 bytes of the file
    InternetReadFile hFile, sBuffer, 1000, Ret
    'clean up
    InternetCloseHandle hFile
    InternetCloseHandle hOpen
    'Show our file
    MsgBox sBuffer
End Sub

(آخرین ویرایش در این ارسال: ۲۸-آذر-۱۳۹۰, ۱۴:۲۰:۴۴، توسط Di Di.)
۲۸-آذر-۱۳۹۰, ۱۴:۱۸:۳۲
وب سایت ارسال‌ها
پاسخ
تشکر شده توسط : zirak
zirak آفلاین
كاربر تک ستاره
*

ارسال‌ها: 40
موضوع‌ها: 4
تاریخ عضویت: تير ۱۳۸۹

تشکرها : 15
( 24 تشکر در 16 ارسال )
ارسال: #5
RE: دلیل هنگ هنگام استفاده از URLDownloadToFile
وقتی واسه عکس میخوای از این دستور استفاده کنی و هنگ میکنه یه روش خیلی ساده به کار ببر.
1 بروزر بذار تو برنامه و لینک رو با وب بروزر باز کن
کد:
WB.Navigate "LINK"
و در documentComplet
وقتی وب بروزر کامل لود شد URLDownloadToFile رو برای WB.document.URL استفاده کن
بدون هنگ کار میکنه...

این هم نمونه:


فایل‌(های) پیوست شده
.rar   IranVij.rar (اندازه: 2 KB / تعداد دفعات دریافت: 41)
۲۹-آذر-۱۳۹۰, ۱۰:۰۸:۰۴
ارسال‌ها
پاسخ
تشکر شده توسط : Di Di
HamedFaa آفلاین
كاربر دو ستاره
**

ارسال‌ها: 117
موضوع‌ها: 16
تاریخ عضویت: اسفند ۱۳۸۹

تشکرها : 15
( 61 تشکر در 47 ارسال )
ارسال: #6
RE: دلیل هنگ هنگام استفاده از URLDownloadToFile
آقا واقعا ممنون. عالی بود
این شد جواب سوال من..
۳۰-آذر-۱۳۹۰, ۰۶:۴۶:۴۸
وب سایت ارسال‌ها
پاسخ


موضوعات مرتبط با این موضوع...
موضوع نویسنده پاسخ بازدید آخرین ارسال
  [سوال] کلیپ برد هنگام استفاده از VBA eppagh 0 2,269 ۲۷-آبان-۱۳۹۳, ۱۰:۳۹:۴۸
آخرین ارسال: eppagh
  [آموزشی] حركت انيميشني فرم هنگام باز و بسته شدن Ghoghnus 1 3,480 ۱۲-فروردین-۱۳۹۳, ۱۸:۰۳:۲۵
آخرین ارسال: mahdi321
  [سوال] رسم shape هنگام اجرای برنامه behzady 1 2,743 ۰۳-خرداد-۱۳۹۱, ۱۰:۱۰:۳۰
آخرین ارسال: Ghoghnus
  تغییر آیکن هنگام کپی RAMA2009 2 3,861 ۰۵-اردیبهشت-۱۳۹۱, ۰۰:۳۵:۰۸
آخرین ارسال: RAMA2009
  پایین آوردن حجم عکس هنگام ذخیره RAMA2009 9 6,933 ۱۷-بهمن-۱۳۹۰, ۰۲:۳۹:۲۲
آخرین ارسال: Payman62
  انتخاب اتوماتیک متن داخل TextBox هنگام دریافت فوکوس RAMA2009 1 3,864 ۰۴-بهمن-۱۳۹۰, ۰۱:۲۶:۴۴
آخرین ارسال: Payman62
  انتخاب كنترل ها در هنگام اجرا pariya1 14 12,051 ۱۳-فروردین-۱۳۹۰, ۰۰:۱۳:۲۱
آخرین ارسال: Di Di
myBB مشکل چشمک زدن عکس هنگام حرکت دادن arashkhan 6 5,575 ۱۶-مهر-۱۳۸۹, ۲۰:۵۸:۴۱
آخرین ارسال: arashkhan
  تغییر اندازه کامپوننتها به هنگام تغییر اندازه فرم siana_k1980 10 8,113 ۲۱-شهریور-۱۳۸۸, ۰۳:۴۰:۳۷
آخرین ارسال: 1120
  سلام من يكسري فايل WMV دارم و لي در هنگام پخش با وي بي وقتي اونو جلو مي بريم صداش قطع relax_cp 1 2,690 ۰۷-تير-۱۳۸۸, ۱۷:۰۹:۰۲
آخرین ارسال: relax_cp

پرش به انجمن:


کاربرانِ درحال بازدید از این موضوع: 1 مهمان

صفحه‌ی تماس | IranVig | بازگشت به بالا | | بایگانی | پیوند سایتی RSS