kowala's home

kowala's home
這裡是我的學習筆記,陸續增加中。
http://kowala21.blogspot.com

2012-02-11

超級對對樂 Super Fun V1.2 統一發票對獎程式

來快速對發票吧,採取倒著輸入,由右向左,下方隨著輸入秀出候選號,每一按鍵都發出聲音提示,享受飆發票的樂趣,也可以清楚看到對了幾張,中獎幾張,金額累加,最適合大量比對,本程式是免費軟體,可以任意下載及散播,不可以販售及修改。

操作說明
◎號碼倒著輸入,由右向左輸入,對獎更快速!
◎自動顯示中獎候選號,採用音效辨識。
◎切換本期/上期、對獎模式。
◎自動下載開獎號碼或是手動輸入更新。
◎統計計算中獎率,金額。

s 設定畫面,0-9 號碼輸入,ESC 離開。

操作畫面


自動更新,先按s進入設定畫面,再選自動更新。

手動更新時,修改 info_1.txt 數字部分即可。

100年11-12月統一發票中獎號碼單
38032017 特別獎 1000萬元 同期統一發票收執聯8位數號碼與上列號碼相同者
38095343 特獎 200萬元 同期統一發票收執聯8位數號碼與上列號碼相同者
38583186 頭獎1 20萬元 同期統一發票收執聯8位數號碼與上列號碼相同者
87541883 頭獎2 20萬元 同期統一發票收執聯8位數號碼與上列號碼相同者
03658286 頭獎3 20萬元 同期統一發票收執聯8位數號碼與上列號碼相同者
******** 二獎 4萬元 同期統一發票收執聯末7位數號碼與頭獎中獎號碼末7位相同者
******** 三獎 1萬元 同期統一發票收執聯末6位數號碼與頭獎中獎號碼末6位相同者
******** 四獎 4千元 同期統一發票收執聯末5位數號碼與頭獎中獎號碼末5位相同者
******** 五獎 1千元 同期統一發票收執聯末4位數號碼與頭獎中獎號碼末4位相同者
******** 六獎 2百元 同期統一發票收執聯末3位數號碼與頭獎中獎號碼末3位相同者
680 增開六獎1 2百元 同期統一發票收執聯末3位數號碼與上列號碼相同者
618 增開六獎2 2百元 同期統一發票收執聯末3位數號碼與上列號碼相同者
領獎期間自101年2月6日起至101年5月7日止

財政部網站查詢開獎號碼  http://invoice.etax.nat.gov.tw/

 
本程式為綠色軟體,不需安裝,解壓縮後可以直接執行。

invoice1.2
Mediafire 免費空間下載  http://www.mediafire.com/?n1lua1w59u2a4sb 
SendSpace 免費空間下載 http://www.sendspace.com/file/ssgbmt
新版 1.3 修正自動更新開獎號碼問題

超級對對樂 Super Fun V1.3 統一發票對獎程式

通常免費空間會跳出廣告,把它關掉就可以了,歡迎提供建議留言,謝謝。
覺得不錯用的話,也請鼓勵一下吧^^

2012-02-10

Dev C++ 如何偵測作業系統版本

有時需要知道使用者的作業系統是甚麼,是XP還是Win7?
這就需要使用 OSVERSIONINFOEX structure [1]
它的定義是這樣的

typedef struct _OSVERSIONINFOEX {
  DWORD dwOSVersionInfoSize;
  DWORD dwMajorVersion;            //系統主版本
  DWORD dwMinorVersion;            //系統次版本
  DWORD dwBuildNumber;            //系統建構版本號
  DWORD dwPlatformId;            //系統平台ID
  TCHAR szCSDVersion[128];
  WORD  wServicePackMajor;
  WORD  wServicePackMinor;
  WORD  wSuiteMask;
  BYTE  wProductType;
  BYTE  wReserved;
} OSVERSIONINFOEX, *POSVERSIONINFOEX, *LPOSVERSIONINFOEX;

可以用系統主版本與系統次版本來簡單判斷 XP 跟 win7

win7 = 6.1
xp   = 5.1

其他的系統判定方法如下


作業系統 版本主版本次版本 其他條件
Windows 7 6.161 OSVERSIONINFOEX.wProductType == VER_NT_WORKSTATION
Windows Server 2008 R2 6.161 OSVERSIONINFOEX.wProductType != VER_NT_WORKSTATION
Windows Server 2008 6.060 OSVERSIONINFOEX.wProductType != VER_NT_WORKSTATION
Windows Vista 6.060 OSVERSIONINFOEX.wProductType == VER_NT_WORKSTATION
Windows Server 2003 R2 5.252 GetSystemMetrics(SM_SERVERR2) != 0
Windows Home Server 5.252 OSVERSIONINFOEX.wSuiteMask & VER_SUITE_WH_SERVER
Windows Server 2003 5.252 GetSystemMetrics(SM_SERVERR2) == 0
Windows XP Professional x64 Edition 5.252 (OSVERSIONINFOEX.wProductType == VER_NT_WORKSTATION) && (SYSTEM_INFO.wProcessorArchitecture==PROCESSOR_ARCHITECTURE_AMD64)
Windows XP 5.151 Not applicable
Windows 2000 5.050 Not applicable

系統測試結果



c++程式碼

#include <cstdlib>
#include <iostream>
#include <windows.h>

using namespace std;

int main(int argc, char *argv[]){
    int a,b;
    OSVERSIONINFO osvi;   
    ZeroMemory(&osvi, sizeof(OSVERSIONINFO));
    osvi.dwOSVersionInfoSize = sizeof(OSVERSIONINFO);
    GetVersionEx(&osvi);
    a=osvi.dwMajorVersion;    //主版本
    b=osvi.dwMinorVersion;    //次版本

    printf("作業系統: ");
    if(a==6&&b==1)printf("Windows 7 Ver:%d.%d\n",a,b);
    if(a==6&&b==0)printf("Windows Vista Ver:%d.%d\n",a,b);
    if(a==5&&b==0)printf("Windows 2000 Ver:%d.%d\n",a,b);
    if(a==5&&b==1)printf("Windows XP Ver:%d.%d\n",a,b);
    if(a==4&&b==0)printf("Windows NT Ver:%d.%d\n",a,b);
    if(a==4&&b==10)printf("Windows 98 Ver:%d.%d\n",a,b);
    if(a==4&&b==90)printf("Windows ME Ver:%d.%d\n",a,b);
   
    system("PAUSE");
    return 0;
}

參考資料:
[1].http://msdn.microsoft.com/en-us/library/windows/desktop/ms724833%28v=vs.85%29.aspx

[2].http://msdn.microsoft.com/zh-cn/library/ee663094.aspx