下載網頁原始碼 (HTML downloader)

今天把以前找來的下載網頁原始碼的程式再重編一遍

以前找來的時候是用 Dev C++ 編的,現在要用 Visual Studio 重新編過一次

結果遇到了幾個問題

1. 把原本的 code 沒有更動後拿來編譯,編譯器跟我說wininet裡面有五百多個 error!! (嚇死我的毛),後來去 google 後,在 #include <wininet.h> 前面加上 #include <windows.h> 就可以了。
至於原因是什麼… 其實我也沒搞動 (攤手)

2. 編譯完之後一直無法辨識 InternetAttemptConnect、InternetOpen、InternetOpenUrl、InternetReadFile、InternetCloseHandle、InternetCloseHandle 這幾個function,後來才注意到原來# include <wininet.h> 同時也需要連結 wininet.lib 函式庫才行。

3. 到了終於可以執行後,一直在 InternetOpenUrl 的時候會連不上 (一直 return NULL) ,很努力地找了找,終於看到有人說是可能沒有權限可以連 URL ,後來編成 Release 版的程式就可以順利下載了!!

Header:

#include <iostream>
#include <fstream>
#include <cstdlib>
#include <windows.h>
#include <wininet.h> // 需要連結wininet.lib才可以

using namespace std;

#define BUF_SIZE 1024

int Download(const string &url, ostream &output);

Cpp:

int Download(const string &url, ostream &output)
{
    char buff[BUF_SIZE], header[80];
    HINTERNET hUrl, hInet;
    DWORD rcv, total = 0;

    if(InternetAttemptConnect(0) != ERROR_SUCCESS) {
        printf("Internet connect failed.\n");
        return 0;
    }

    hInet = InternetOpen("downloader", INTERNET_OPEN_TYPE_DIRECT, NULL, NULL, NULL);
    if(hInet == NULL) {
        printf("Internet open failed.\n");
        return 0;
    }

    memset(header,0x0,sizeof(header));

    hUrl = InternetOpenUrl(hInet, url.c_str(), header, -1, INTERNET_FLAG_NO_CACHE_WRITE, 0);

    if(hUrl == NULL) {
        printf("Internet open url failed.\n");
        InternetCloseHandle(hInet);
        return 0;
    }

    do {
        InternetReadFile(hUrl, &buff, BUF_SIZE, &rcv);
        output.write(buff, rcv);
        total += rcv;
    }while(rcv > 0);

    InternetCloseHandle(hUrl);
    InternetCloseHandle(hInet);

    return total;
}

廣告

【OpenCV】unsigned char *轉換成IplImage顯示

目前有點懶得仔細解釋IplImage的width成員跟widthStep成員的差異了

所以就稍微貼一下程式碼,意思一下就好XD

#include <stdio.h>
#include <stdlib.h>
#include “cv.h"
#include “highgui.h"

int main() {
unsigned char output_img_data[] = {
0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,
0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,
0,   0,   0,   0, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255,   0,   0,   0,
0,   0,   0,   0, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255,   0,   0,   0,
0,   0,   0,   0, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255,   0,   0,   0,
0,   0,   0,   0, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255,   0,   0,   0,
0,   0,   0,   0, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255,   0,   0,   0,
0,   0,   0,   0, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255,   0,   0,   0,
0,   0,   0,   0, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255,   0,   0,   0,
0,   0,   0,   0, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255,   0,   0,   0,
0,   0,   0,   0, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255,   0,   0,   0,
0,   0,   0,   0, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128,   0,   0,   0,
0,   0,   0,   0, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128,   0,   0,   0,
0,   0,   0,   0, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128,   0,   0,   0,
0,   0,   0,   0, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128,   0,   0,   0,
0,   0,   0,   0, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128,   0,   0,   0,
0,   0,   0,   0, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128,   0,   0,   0,
0,   0,   0,   0, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128,   0,   0,   0,
0,   0,   0,   0, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128,   0,   0,   0,
0,   0,   0,   0, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128,   0,   0,   0,
0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,
0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0
};

// 建立一個 寬為23,高為22,位元深度 8 bits,1個channel的圖片檔頭
IplImage *output = cvCreateImageHeader( cvSize(23, 22), 8, 1 );

cvSetData( output, output_img_data, 23 ); // 如果channel是3的話,23的位置就要填上width*channel,也就是23*3喔!

cvNamedWindow( “Output", CV_WINDOW_AUTOSIZE );
cvShowImage( “Output", output );

int key = cvWaitKey( 0 );

// 因為是用cvCreateImageHeader來建立的,所以也要用相對應的cvReleaseImageHeader來釋放記憶體
cvReleaseImageHeader( &output );
cvDestroyWindow( “Output" );
}

點陣圖結構

轉自: 點陣圖

標準點陣圖檔結構
 偏移值 大小 說明
0 2 辨識碼: “BM" BMP檔頭
2 4 檔案大小
6 4 保留
A 4 圖素點陣資料起點
E 4 檔頭大小 BITMAP結構
12 4 寬度
16 4 高度
1A 2 圖面數
1C 2 色彩位元數 ( 1, 4, 8, 16, 24, 32 )
1E 4 壓縮格式
22 4 圖素點陣資料大小
2E 4 使用色彩數 ( 祇用於 256 色 )
36 N * 4 色盤資料
36 + N * 4 H * W * Bits 圖素點陣資料

【掃毒】小紅傘在 MSN 傳送檔案的傳輸設定方法

參考這篇

 [工具] > [選項] > [檔案傳輸]

9.0以前的可以打上 “C:\Program Files\Avira\AntiVir PersonalEdition Classic\avscan.exe" /GUIMODE=2 /PATH=%FILE%

9.0以後的就是用上 “C:\Program Files\Avira\AntiVir Desktop\avscan.exe" /GUIMODE=2 /PATH=%FILE%

其實只是路徑改變了,而參數不變^^~

GUIMODE=1 正常模式
GUIMODE=2 細視窗模式
GUIMODE=3 隱藏視窗模式

如果覺得它為何要 scan 多很多東西就要用上 /CFG 參數
建立一個檔案 : C:\scanProfile.txt,那參數就會變成 /CFG="C:\scanProfile.txt"
C:\scanProfile.txt [CFG]
GuiMode=3
ExitMode=3

[SEARCH]
Parameter=0x00000002
Parameter=0x00000020
Parameter=0x00000100
Parameter=0x00000400
Parameter=0x00010000
Parameter=0x00000080

[SCANNER]

BootsektorStart=0
Memory=0
ScanRootkits=0
那就no registry, no memory,no bootsectors

在CodeBlocks中使用Glut (Opengl) for Windows

全文參考: Using OpenGL & GLUT in Code::Blocks

===

<前置作業>

下載glut-3.7.6-bin.rar: 點此下載

  1. 將 glut32.dll 複製到 C:\windows\system
  2. 將 glut32.lib 複製到 <CodeBlocks Path>\mingw\lib
  3. 將 glut.h 複製到 <CodeBlocks Path>\mingw\include\GL

繼續閱讀

Hello world!

Welcome to WordPress.com. After you read this, you should delete and write your own post, with a new title above. Or hit Add New on the left (of the admin dashboard) to start a fresh post.

Here are some suggestions for your first post.

  1. You can find new ideas for what to blog about by reading the Daily Post.
  2. Add PressThis to your browser. It creates a new blog post for you about any interesting  page you read on the web.
  3. Make some changes to this page, and then hit preview on the right. You can alway preview any post or edit you before you share it to the world.