最新消息

[公告2014/05/30] 如有需要將部落格中,任何一篇文章的程式碼使用在商業用途,請與我聯繫。

[公告2015/04/26] Line版的 iInfo程式與投資應用 群組已上線想加入的朋友們,請先查看 "入群須知" 再與我聯繫 Line : aminwhite5168,加入請告知身分與回答 "入群須知" 的問題。

[公告2018/04/22] 台北 Python + Excel VBA 金融資訊爬蟲課程,課程如網頁內容 金融資訊爬蟲班:台北班 Python 金融資訊爬蟲、EXCEL VBA 金融資訊爬蟲。

[公告2019/01/08] 請注意:我再次重申,部落格文章的程式碼,是要提供各位參考與學習,一旦網頁改版請自行修改,別要求東要求西要我主動修改,你們用我寫東西賺錢了、交差了,請問有分我一杯羹嗎?既然賺錢沒分我,請問有什麼理由要求我修改,如果沒能力改,就花錢來找我上課。

[公告2019/12/01] 若各位有 Excel VBA 案子開發需求,歡迎與我聯繫,可接案處理。

[公告2020/05/22] 頁面載入速度慢,起因為部分JS來源(alexgorbatchev.com)失效導致頁面載入變慢,目前已做調整,請多見諒。
顯示具有 WINAPI 標籤的文章。 顯示所有文章
顯示具有 WINAPI 標籤的文章。 顯示所有文章

2017年4月18日 星期二

判別Windows x86或x64

一些程式需求要判別Windows x86或x64,使用OS內建的Win API來做處理,其實這方法已經用很久了,為了方便,將該程式碼PO上來,大家可以參考。

2016年10月30日 星期日

Excel VBA清除剪貼簿內容

近期為了解決一個在Excel上進行大量複製時而發生記憶體空間不足的問題,想說要將清除剪貼簿內容,但始終不得其門而入,後來將程式改寫另一種優化方法克服。
這裡將先將找到清除剪貼簿內容先做一紀錄,等未來找到更好解法再行補充。

2015年12月31日 星期四

用Windows API取得系統SMBIOS table的資訊

在UEFI BIOS機器上已不像Legacy BIOS機器這麼容易取得SMBIOS Table的資訊,這時可以使用微軟提供的Windows API GetSystemFirmwareTable函數取得UEFI BIOS下的SMBIOS Table的資訊,想了解更多有關SMBIOS Table請至官網查詢,以下就用程式碼來說明。

2013年9月15日 星期日

VC使用Delay Load dll操作MFC100.dll

使用DLL會常遇到一些問題,就是相同名稱的DLL,分x86與x64版本時,如果用錯版本系統將丟出錯誤訊息框顯示,或是DLL中並沒有需要使用的函數。前者可用PE檔案格式可以抓出版本的問題,但後者就可能沒辦法順利抓出所需要的訊息。
如果真的想要抓出DLL錯誤的內容可以使用從VC6時就已經添加的功能Delay Load DLL來幫助我們達成目標,至於如何使用,就讓我們繼續看下去。

2013年9月3日 星期二

PE檔案格式抓出支援x86平台或x64平台

有時候想區分exe或dll檔是x86或x64時,往往不知道該怎麼做,最近剛好有個機會對PE文件格式作揖簡單的了解,接下來就點簡單說明相關內容。

2013年8月27日 星期二

控制螢幕解析度

在Winpe下的解析度預設為800*600,如果想調整解析度,第一個會想到就是要安裝顯卡Driver,可是安裝VGA Driver又需要Reboot,在這樣的情況下就會變得很麻煩,不過微軟有功有關VGA的相關設定,就讓我們繼續看下去。

2013年8月26日 星期一

VC上實現gotoxy()的作法

最近寫程式需要用到C語言的gotoxy()函數,來設定螢幕游標的位置,想說在VC應該有這個函數,結果竟然沒支援,不過微軟提供另外的方式可以做到跟gotoxy()函數的功能,使用了一下效果還不錯,不過就是寫了太多行程式碼,如果可以再更精簡會更好。

2013年6月16日 星期日

REG_SZ、REG_MULTI_SZ與REG_EXPAND_SZ的區別

近期為了修改Winpe的Registry,常弄錯REG_SZ、REG_MULTI_SZ與REG_EXPAND_SZ的意義,特別整理了一下,以便未來複習。

2013年5月8日 星期三

2013年4月17日 星期三

使用GetFileVersionInfo來取得程式的版本資訊

延續前一篇使用VC6與VC2010在Resource欄位的差異,透過GetFileVersionInfo來取得程式中,有關版本資訊,就可以比較出VC6與VC2010在Resource檔的差異。

2013年4月16日 星期二

VC++ CTime使用

今天需要用到VC++ CTime函數,整理一下之前使用的經驗,順道記錄起來,有興趣的可以參考下面程式碼。

2013年4月15日 星期一

#pragma pack(1)表示的意義

程式中#pragma pack(1)的用途,但不知道它所代表的意義呢?以下將進行解說

取得GetLastError()錯誤訊息的文字敘述

寫微軟程式常會遇到,當發生程式或系統錯誤時會有需要將錯誤訊息輸出,因此藉由::GetLastError()將錯誤代碼回傳來偵錯。

2012年9月15日 星期六

VC++, JavaScript的日期函數使用

因工作要使用VC++時間處理函數,加上近期在研究Highstock也需要使用到JavaScript時間處理函數,所以將兩者處理時間的方法一起列出

以下是一個使用VC++時間處理類別CTime的範例
int main(int argc, TCHAR* argv[])
{
 CTime cTime = CTime::GetCurrentTime(); 
 printf("Year : %d\n", cTime.GetYear());
 printf("Month : %d\n", cTime.GetMonth());
 printf("Day : %d\n", cTime.GetDay());
 printf("Hour : %d\n", cTime.GetHour());
 printf("Minute : %d\n", cTime.GetMinute());
 printf("Second : %d\n", cTime.GetSecond());
 printf("Time : %d\n", cTime.GetTime());
 return 1;
}
執行結果

以下是一個使用JavaScript時間處理函數的範例
<html>
  <head>
  <title>JavaScript Test Date Function</title>
  <script type="text/javascript">
    function run() {
      var CurrentTime = new Date();
      document.write("Year : " + (CurrentTime.getYear() + 1900) + "<br>")
      document.write("Month : " + (CurrentTime.getMonth() + 1) + "<br>")
      document.write("Date : " + CurrentTime.getDate() + "<br>")
      document.write("Hours : " + CurrentTime.getHours() + "<br>")
      document.write("Minutes : " + CurrentTime.getMinutes() + "<br>") 
      document.write("Seconds : " + CurrentTime.getSeconds() + "<br>")
      document.write("Time : " + CurrentTime.getTime() + "<br>")
    }
  </script>
  </head>
  <body onload = run();>
  </body>
</html>
執行結果

兩者的差異

VC++
JavaScript
Time
Second
Millisecond
Year
不加1900
需加1900
Month
以1為起點,範圍1~12
以0為起點,範圍0~11