cooper 的个人资料COOPER SHARE SPACE照片日志列表更多 工具 帮助

日志


2009/2/3

如何獲取網卡資訊 get ip address MAC address ...

在C++中 可以有許多的方式 去獲得網卡的資訊 甚至去修改以便得到正確ip 並連上internet
什麼是ip mac等等 甚至什麼是OSI(Open system Interconnection) 那就查google吧 這只著重在codeing 只是自己做個紀錄
參照的方式 主要是mdsn上範例 調用iphlpapi 可實現不重開機而修改ip等 所以使用iphlpapi很方便 許多的應用程式都使用
其他也有用WMI 或是其他方式 用wmi也很方便 有空再介紹
 
首先考參考msdn 可查詢iphelpapi function http://msdn.microsoft.com/en-us/library/aa366071(VS.85).aspx 中有說明
使用iphlpapi 以下程式節錄mdsn 調用方式很簡單 這方式在VC6  或 vs2005 C++ 都適用
 
#include <winsock2.h>
#include <iphlpapi.h>
#include <stdio.h>
#include <stdlib.h>
#define MALLOC(x) HeapAlloc(GetProcessHeap(), 0, (x))
#define FREE(x) HeapFree(GetProcessHeap(), 0, (x))
/* Note: could also use malloc() and free() */
int __cdecl main()
{
    /* Declare and initialize variables */
// It is possible for an adapter to have multiple
// IPv4 addresses, gateways, and secondary WINS servers
// assigned to the adapter.
//
// Note that this sample code only prints out the
// first entry for the IP address/mask, and gateway, and
// the primary and secondary WINS server for each adapter.
    PIP_ADAPTER_INFO pAdapterInfo;
    PIP_ADAPTER_INFO pAdapter = NULL;
    DWORD dwRetVal = 0;
    UINT i;
/* variables used to print DHCP time info */
    struct tm newtime;
    char buffer[32];
    errno_t error;
    ULONG ulOutBufLen = sizeof (IP_ADAPTER_INFO);
    pAdapterInfo = (IP_ADAPTER_INFO *) MALLOC(sizeof (IP_ADAPTER_INFO));
    if (pAdapterInfo == NULL) {
        printf("Error allocating memory needed to call GetAdaptersinfo\n");
        return 1;
    }
// Make an initial call to GetAdaptersInfo to get
// the necessary size into the ulOutBufLen variable
    if (GetAdaptersInfo(pAdapterInfo, &ulOutBufLen) == ERROR_BUFFER_OVERFLOW) {
        FREE(pAdapterInfo);
        pAdapterInfo = (IP_ADAPTER_INFO *) MALLOC(ulOutBufLen);
        if (pAdapterInfo == NULL) {
            printf("Error allocating memory needed to call GetAdaptersinfo\n");
            return 1;
        }
    }
    if ((dwRetVal = GetAdaptersInfo(pAdapterInfo, &ulOutBufLen)) == NO_ERROR) {
        pAdapter = pAdapterInfo;       //這裡就可以得到adapter info. 有幾張都可以從這獲得by cooper
        while (pAdapter) {
            printf("\tComboIndex: \t5d\n", pAdapter->ComboIndex);
            printf("\tAdapter Name: \t%s\n", pAdapter->AdapterName);       //adapter 名字 by cooper
            printf("\tAdapter Desc: \t%s\n", pAdapter->Description);       //adapter Description by cooper
            printf("\tAdapter Addr: \t");       //MAC Address 這裡for loop 是把它轉成16位元 如xx-xx-xx-xx-xx-xx by cooper
            for (i = 0; i < pAdapter->AddressLength; i++) {
                if (i == (pAdapter->AddressLength - 1))
                    printf("%.2X\n", (int) pAdapter->Address[i]);
                else
                    printf("%.2X-", (int) pAdapter->Address[i]);
            }
            printf("\tIndex: \t%d\n", pAdapter->Index);
            printf("\tType: \t");
            switch (pAdapter->Type) {      //這裡是網路連結的型態 by cooper

            case MIB_IF_TYPE_OTHER:
                printf("Other\n");
                break;
            case MIB_IF_TYPE_ETHERNET:
                printf("Ethernet\n");
                break;
            case MIB_IF_TYPE_TOKENRING:
                printf("Token Ring\n");
                break;
            case MIB_IF_TYPE_FDDI:
                printf("FDDI\n");
                break;
            case MIB_IF_TYPE_PPP:
                printf("PPP\n");
                break;
            case MIB_IF_TYPE_LOOPBACK:
                printf("Lookback\n");
                break;
            case MIB_IF_TYPE_SLIP:
                printf("Slip\n");
                break;
            default:
                printf("Unknown type %ld\n", pAdapter->Type);
                break;
            }
            printf("\tIP Address: \t%s\n",
                   pAdapter->IpAddressList.IpAddress.String);       //這是IP Address by cooper
            printf("\tIP Mask: \t%s\n", pAdapter->IpAddressList.IpMask.String);       //這是IP Mask by cooper
            printf("\tGateway: \t%s\n", pAdapter->GatewayList.IpAddress.String);       //這是 Gateway by cooper
            printf("\t***\n");
            if (pAdapter->DhcpEnabled) {       //這是DHCP by cooper
                printf("\tDHCP Enabled: Yes\n");
                printf("\t  DHCP Server: \t%s\n",
                       pAdapter->DhcpServer.IpAddress.String);
                printf("\t  Lease Obtained: ");
                /* Display local time */
                error = _localtime32_s(&newtime, &pAdapter->LeaseObtained);
                if (error)
                    printf("Invalid Argument to _localtime32_s\n");
                else {
                    // Convert to an ASCII representation
                    error = asctime_s(buffer, 32, &newtime);
                    if (error)
                        printf("Invalid Argument to asctime_s\n");
                    else
                        /* asctime_s returns the string terminated by \n\0 */
                        printf("%s", buffer);
                }
                printf("\t  Lease Expires:  ");
                error = _localtime32_s(&newtime, &pAdapter->LeaseExpires);
                if (error)
                    printf("Invalid Argument to _localtime32_s\n");
                else {
                    // Convert to an ASCII representation
                    error = asctime_s(buffer, 32, &newtime);
                    if (error)
                        printf("Invalid Argument to asctime_s\n");
                    else
                        /* asctime_s returns the string terminated by \n\0 */
                        printf("%s", buffer);
                }
            } else
                printf("\tDHCP Enabled: No\n");
            if (pAdapter->HaveWins) {
                printf("\tHave Wins: Yes\n");
                printf("\t  Primary Wins Server:    %s\n",
                       pAdapter->PrimaryWinsServer.IpAddress.String);
                printf("\t  Secondary Wins Server:  %s\n",
                       pAdapter->SecondaryWinsServer.IpAddress.String);
            } else
                printf("\tHave Wins: No\n");
            pAdapter = pAdapter->Next;
            printf("\n");
        }
    } else {
        printf("GetAdaptersInfo failed with error: %d\n", dwRetVal);
    }
    if (pAdapterInfo)
        FREE(pAdapterInfo);
    return 0;
}
 
code很簡短 主要就是GetAdaptersInfo() 調用iphelpapi後就可使用 其中
PIP_ADAPTER_INFO pAdapterInfo 這結構struct 中紀錄我們local端的網路資訊 這就是我們有的啦
若不懂info.是什麼或是對不對的話 可以打開命令提示字元 或是 開始=>程式集=>執行 鍵入 cmd
然後鍵入 ipconfig /all 就會列出來啦 可以對照看看
 
另外再介紹幾個func. 這都可以在msdn上查到 也有sample參考
AddIPAddress() 加入ip address 這要注意一點 若是已有ip 再用的話 就會一張網卡多個IP
DeleteIPAddress() 篩除IP address 若已無ip 會return fail
IpRenewAddress() renew 網路連線 必須有DHCP
IpReleaseAddress() release 已有的連線
 
 
2007/5/31

收聽民視MLB大聯盟現場轉播

許多的人可能無法守在電視機前收看電視 像是上班族
為我們台灣之光王建民加油打氣
要連上有轉播的網路電視 可能礙於網路頻寬又或者公司網管限制
所以收聽民視現場轉播應該是上班族最佳選擇
可能有些連民視網站都上不去 塞爆 什麼的
所以我就用簡單的批次檔寫了可直接連結的批次檔方便使用
什麼是批次檔 簡單就是說 可以縮減重複動作執行的程式 是很簡單的程式應用
廢話不多說 它執行起來就像下圖mlb.cmd

程式會呼叫兩種播放程式
1是windows內建的播放軟體windows media player
2是media player classic 要安裝像影音風暴這種播放程式才有

按右鍵另存目標 按我download

將其下載到桌面後 更改檔名
mlb.cmd.bmp --> 將後面.bmp刪除 --> 改為 mlb.cmd 改名後會有一確定視窗按確定
這樣就可以直接點它執行

2007/5/21

加速ADSL通訊協定的連線速度

加速ADSL通訊協定的連線速度
開始 --> 執行 --> regedit
打開 登錄檔編輯程式
修改以下資料
HKEY_LOCAL_MACHINE\System\CurrentControlSet\Services\Ndiswan\Parameters
新增機碼 Protocols 後再
新增機碼 0
新增以下DWORD值
ProtocolType 2048(十進位)
ProtocolMTU 1480(十進位)
PPPProtocolType 33(十進位)
 
建好後重開機就可以優化PPPoE通訊協定 加快ADSL上網速度
 
2007/5/17

OCX版本及自動更新功能

OCX版本及自動更新功能(由於是使用 ActiveX 方式, 故僅支援 IE 的瀏覽器.)

使用網頁部署程式是最方便的, 因為每台電腦都有 web browser, 利用 ocx 的方式更是好用的更新方式, 然而, 版本檢查更新是該部署方式最好用的地方.
如何利用 ocx 部署應用程式, 並且自動偵測使用者端的版本及現在要部署的版本新舊狀況後, 再進行更新呢? 因為 ocx 在 build 時, 可以放入版本資訊, 例如 1.0.0.0, 其中 4個代碼分別為:

major.minor.build.revision
 
簡單說就是版本啦
 
放到 ocx 裡的資訊, 會在安裝於客戶端電腦時, 記錄於 %windir%\downloaded program files 裡, 這樣一來, 系統就會知道目前的 ocx 版本, 但是變成 client 都要 download 才會知道版本, 若是 ocx 過大, 不就會有要先下載才能比對的問題?
 
其實不然, 在的語法中, 有個 codebase 的屬性, 該屬性可以指定該 ocx 的版本 利用這個資訊, web browser 將會自動帶出已安裝於客戶端的同 guid 的 ocx 版本, 一但比較出來, web 上的 #x,x,x,x 的版本較新於已安裝於客戶端的 ocx 版本時, 將會提示使用者是否下載, 由於是全部信任 web 上的版本屬性, 所以一旦寫錯了, 將會有一些問題, 當然也可以加以利用, 主要就是版本比對機制的功能, 所以最好部署的 ocx 就和頁面上的版本屬性一致, 才能節省部署的資源(頻寬, 使用者安裝時間).
以下為完整的 ocx 的語法, 重要的是版本屬性是使用 "," (逗號) 做區隔, 而不是使用 "." (點號) 做區隔!


width=0 height=0 id=XNAME codebase="http://url/mycontrol.ocx#1,0,0,0">
如此一來, 就能使用方便又好用的 ocx 版本比對部署功能囉!
PS. ocx 檔案本身若沒有數位簽章時, 將會依 web browser 本身的安全性設定而有不同的表現方式, 如限制或提示, 但有數位簽章時, web browser 會提示使用者是否要下載安裝, 可以大大減低部署 ocx 的困難!
(註一)就只是用來描述用的, 並非是真的 ocx 的版本, 所以 mycontrol.ocx 和 1,0,0,0 不見得要相同, 但若不同, 就會有使用者要一直下載的問題, 因為真的安裝到客戶端電腦的 download ocx 版本, 一定是會讀到該 ocx 本身寫的版本號.
 
以上ocx的部屬使用者不一定會在網頁中看見相關的code 因為可能放在隱藏頁中 就跟病毒一樣 好恐怖
不過現在ie是有提高他的安全性 所以上面所說數位簽章就會過濾是否為合法軟體
因為有在寫相關的東西 才在整理一下
以下就要多注意怎樣檢查說有ocx在電腦裡
 
所以可以自行檢查有裝了哪些的ocx在電腦裡 在%windir%\downloaded program files 資料夾裡
不懂%windir%的意思 其實就是C:\WINDOWS 若你系統是裝在C槽的話
若是不知也沒關係 按 開始 --> 執行 --> [鍵入]%windir%
跳出的視窗就是你的windir 就可以找到downloaded program files
ocx其實是很危險的程式 若是植入後 網頁就可以對你電腦予取予求 要小心
一般若是沒做什麼是不會安裝什麼ocx 常用就是flash的程式他是Adobe的 可以檢查看看
其他若是有玩股票用線上下單 在電腦也會安裝ocx作為驗證密碼安全用
還有其他的 就要注意他是否有數位簽章 以及是否為合法軟體 這樣電腦才安全

msn 中 I'm 圖示是什麼

Mircosoft i'm 網站
http://im.live.com/
 
如何加入贊助?
點開網站之後呢,左邊有個Join now,點入。
然後選擇你所居住的國家。
接著輸入你的WLM (MSN)登入帳號,包含@後面的網域位置。
 (ex:
abcdefg@hotmail.com)
點Sign up (註冊) 就可以了!
[若出現目前服務僅支援美國地區,一樣可以捐助。只是代碼目前只有美國或國際的慈善組織]
然後進入你的WLM (MSN)
修改你的標題列,像加入表情符號一樣加入你想贊助的組織代碼
*red+u American Red Cross 美國紅十字會
*bgca Boys & Girls Club 兒童群益會
*naf National AIDS Fund 美國國家愛滋基金
*mssoc National Multiple Sclerosis Society 國家多發性硬化症學會
*9mil ninemillion.org 國際兒童難民援助組織
*sierra Sierra Club 山巒協會/地球環境協會
*help StopGlobalWarming.org 停止全球暖化公共組織
*komen Susan G. Komen for the Cure 乳癌基金會
*unicef The US fund for UNICEF 美國地區聯合國兒童基金會
*wwf World Wildlife Fund for Nature 世界自然基金會
*oxfam The Oxford Committee for Famine Relief 樂施會
↑ (協助解決當時世界各地饑荒及貧窮問題)
*care 國際關懷協會
*hsus The Humane Society of the United States 美國人道協會
*acs American Cancer Society 美國癌症協會
*one The One Campaign (
www.one.org)
↑(是一個由世界各地信仰團體參與的全球性運動,探討教會在對抗愛滋病、貧窮等發展問題)

聊越多!捐越多!聊天次數越多,微軟幫你捐助的越多!
可是到底有沒有捐我也不知道 且台灣好想也沒列入範圍不是很清楚 我只是覺得暱稱多一個圖示酷酷的好看而已
※要參加此活動必須使用Windows Live Messenger 8.1之後的版本。

顯示卡按右鍵後畫面會閃黑屏幾秒???

顯示卡按右鍵後會閃黑屏幾秒 很討厭
有許多人有這樣問題 就算是重灌也沒用
這其實是 NV 驅動程式的問題
解決辦法如下
開始-->執行-->[鍵入]regedit
or
[windows鍵+R]-->[鍵入]regedit
 
在登錄檔的視窗中 找尋以下資料刪除

至KEKY_CLASSES_ROOT\
找AVIFile
  MPGFile
  WMVFile
        \shellex\ContextMenuHandlers
PlayOnMyTV鍵值刪除
至KEKY_CLASSES_ROOT\
找.avi
  .mpg
  .wmv
        \ShellEx\
刪除PlayOnMyTV並繼續搜尋撲殺之
 
總言之 把PlayOnMyTV殺光光 就好了
記得最好先備份登錄檔喔
 
2007/5/7

網路報稅更有利 刷VISA還是Mastercard也要比

網路報稅更有利 刷VISA還是Mastercard也要比
為了推廣網路報稅,台灣省北區國稅局推出「網路報稅最Easy‧3車中獎更Happy」抽獎活動,為了網路報稅的方便更為了試手氣,還在人工申報或二維條碼你就遜掉啦!而刷卡組織也各自推出活動來嘉惠顧客,要ipod還是刷卡金?看表格挑一下吧!


刷卡繳所得稅 哪家銀行「尚感心」?
手上有匯豐卡的可以謝天謝地一番先,免手續費又給紅利最阿殺力的就是匯豐了。雖紅利上限三千點也就是稅金七萬五就爆了,但稅金繳到七萬五的大概是年薪超過一百四五十萬的「大戶」,一般小小白領受薪階級,匯豐這三千點也就綽綽有餘了。而日盛的方案也很適合小編這種稅金不超過五萬的;新光、復華銀不收手續費,但都有給點數的限制,想刷卡繳稅還賺點數的卡友得衡量衡量囉。


不收手續費也不給點數的銀行


級距式收取手續費 提供紅利


收取固定趴數手續費 提供紅利


收手續費也不給點數的銀行

FF掛線上代理

最近為了抓以前的DVD 可是空間使用的是FF
無奈只好去尋找PROXY來掛
可是每抓一二個檔案PROXY就要換一次 實在很麻煩OTZ
所以就去找了其他方法@@
其中我發現掛線上代理還蠻快速的@@
只是不能排程 適合抓單檔 or 少檔 而已
說了這麼多 還是來介紹一下線上代理吧
 
http://www.msnvip.com/
上面的線上代理網站
據說有人用了 下載速度可以高達 500K/s以上@@
下面略說明使用方法~
 
1.進入網站後 填入要進入的網站網址
www.msnvip.com_01
 
2.代理網站會有一連結 連結會以代理方式連結該網址 連結有2個皆可連結
visit 即連結該網址
www.msnvip.com_02
 
Click Here to Continue即為連結
www.msnvip.com_03
 填入網址可繼續使用代理
 
http://www.freegroup.org/category/free-proxy/
另外附上一個網站
內有幾個線上代理的介紹
希望這個資訊對你有幫助囉~

NEGiES 免費網路流量限速軟體

Netlimiter更省資源的免費網路流量限速軟體 NEGiES 1.57 ()

 

免費的頻寬限速軟體:Negies現在有兩台以上電腦的家庭越來越多 了,多台電腦共用一條ADSL,結果其中一台超愛下載東西,把所有頻寬都霸佔了,其他人慢得跟烏龜一樣;偏偏又想不到方法可以控制那台電腦的頻寬,實在很 頭大!來來來,只要在那台電腦上安裝Negies,然後將最佔頻寬的程式軟體作限速,就不怕互搶頻寬的情況再度發生囉!negies_main


【軟體名稱】 NEGiES
【軟體版本】 1.57
【語言界面】 繁體中文
【檔案大小】 265 KB
【作業系統】 Windows(XP)
【試用限制】
【官方網站】 http://hp.vector.co.jp/authors/VA036210/
【個人評等】 ★★★
【個人評語】

這個軟體是在網路學習誌上看到的,可以限制軟體上傳及下載的頻寬,更重要的是他是免費軟體。

由於FOXY對頻寬沒有限制,所以這個軟體可以稍稍控制一下被過度使用的頻寬,主要是用來限制上傳的頻寬,對ADSL用戶而言,上傳頻寬被吃掉就會造成塞車的情形。

另外,這是比較舊的版本,官網上已到NEGiES version 2.0.0 Beta8(日文版)

【軟體簡介】

簡介 :

這次要介紹的是日本網友設計的綠色限流軟體「Negies」,由PTT的網友rexx中文化。它能夠像Netlimiter一樣獨立限制每個程式的流量,只是不會自動去搜尋執行中的程式,使用者必須自行新增限制對象,雖然有點小小麻煩,但是在功能上沒有太大的差異,而且還有三大優點:免費免安裝體積小(只有將近700K的大小).


NEGiES
允許我們在電腦上限制 IP 位址、連接埠、應用程式上的上傳或下載頻寬,甚至是完全阻擋封鎖。它沒有很複雜的操作設定,可以很快的上手,最重要的是它還是一個免費而且免安裝的軟體。雖然它是日文軟體,語言介面造成了極大困擾,但值得慶幸的是有網友為它製作了中文化。

軟體說明
【中文化說明】
解壓縮後覆蓋舊有檔案即可。


有些程式像Foxy,沒辦法從程式裡面設定上傳速限,這時候就只能靠外部限速程式來協助。介紹一個日本網友做的「Negies」綠色限速程式,它就能夠限制各程式連線的速度,不過原來的程式是日文介面,台大PTT站上有位熱心的rexx網友,把這程式做了中文化。

Step

1.
首先到http://tinyurl.com/y2t6gz Negies主程式回來解壓縮,

再到 http://tinyurl.com/umjf2 抓中文化檔案,

然後解壓縮到Negies主程式存放的資料夾,覆蓋原來的執行檔。



2.
執行Negies程式檔,進入主畫面後按下〔新增〕,等「過濾器編輯」視窗出現後,在「過濾器名」空格內填上欲限速程式的名字。

3.
再來到「網路介面卡」方塊內,選擇上網用的網路卡,然後按下下方的〔瀏覽〕,選擇欲限速的程式檔。

4.
最後在左方的「方向」部份,點選「UP」表示要限制上傳速度,然後勾選右下角的「頻寬限制」,並在旁邊輸入限制的速度。輸入完畢按下〔確定〕。

5.
回到主畫面後再開啟Foxy,就會看到Negies已經開始對Foxy限速,還會顯示Foxy目前上傳的速度,與全部的上傳傳輸量。

6
如果要暫時取消限速,在欲取消的項目上按下右鍵,選擇【有效無效】就能開關限速功能,如果要永久取消限速,選擇【刪除】就可以了。

使用教學
解壓縮後執行NEGiES.exe,按下「新增」
negies_01


依下圖說明依序設定
negies_02


1.
過濾器名:自行設定,建議輸入欲限制的「程式名稱」
2.
網路介面卡:設定為正在上網的網路卡
3.
方向:設定限制流量的通行方向,Up表示限制上傳流量;Down表示限制下載流量
4.
指定程序名:指定要限制流量的程式,按下「瀏覽」選擇
5.
將「頻寬限制」打勾,設定右邊的最大流量
6.
確認設定無誤後按下「確定」

完成後Negies就會開始針對所指定的程式進行限制流量,畫面上還會顯示目前程式的流速和總傳輸量。

若要暫時取消流量限制或刪除設定,只要在該欄位上按右鍵就可以看到相關的功能選單了
negies_03

所有資源來自網路