最新消息

[公告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)失效導致頁面載入變慢,目前已做調整,請多見諒。

2013年12月30日 星期一

VC6建立OpenSSL AES加密專案

在前一篇Windows下使用VC2010編譯OpenSSL文章中已介紹如何將OpenSSL環境安裝於系統中,這裡將介紹透過VC6建立OpenSSL AES加密專案。

2013年12月25日 星期三

Windows下使用VC2010編譯OpenSSL

OpenSSL是一套提供許多免費加密函數的開放程式碼,因應需要這裡簡單介紹如何在Windows環境下透過Visual Studio編譯OpenSSL.exe

2013年11月30日 星期六

Python抓取個股財務比率合併財報季表

抓取"個股財務比率合併財報季表",我們以台泥1101來作範例。

python print函數取消\n -自動換行

python print 句末會自動換行,而其它的程式設計語言中,如C是print 轉義字元 \n 實現換行;然而有些時候並不想讓它自動換行,如

2013年11月13日 星期三

VC Build DLL在Linking階段,出現warning LNK4070的處理方式

VC Build DLL在Linking階段,出現以下訊息時的處理
Linking...
   Creating library Debug/Time1.lib and object Debug/Time1.exp
Time1.exp : warning LNK4070: /OUT:Time.dll directive in .EXP differs from output filename "Debug/Time1.dll"; ignoring directive

Time1.dll - 0 error(s), 1 warning(s)

2013年11月3日 星期日

VC6編譯出現的警告訊息LINK : warning LNK4089: all references to “ODBC32.dll” discarded by /OPT:REF

VC6編譯時Debug版本下沒問題,release版本下出現如下警告:
LINK : warning LNK4089: all references to “ODBC32.dll” discarded by /OPT:REF
LINK : warning LNK4089: all references to “ADVAPI32.dll” discarded by /OPT:REF
LINK : warning LNK4089: all references to “SHELL32.dll” discarded by /OPT:REF
LINK : warning LNK4089: all references to “comdlg32.dll” discarded by /OPT:REF

2013年11月2日 星期六

直接Debug DLL

開發DLL時,Debug時可能會常使用印log的方法,但其實VC裡有可以直接Debug,不需要管使否有EXE的原始碼的方法,以下將介紹這樣的方法。

2013年11月1日 星期五

2013年9月19日 星期四

用Windbg建置Debug環境

Windbg是微軟一個好用的Debug工具,它可以用在User mode與kernel mode進行Debug,最常見用它來找出Windows發生藍屏的時候。

2013年9月15日 星期日

VC使用Delay Load dll操作MFC100.dll

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

2013年9月8日 星期日

用VBA與3、5、10日均線向上找出多頭排列的上市股票

好久沒沒針對股票在找出一些相關的內容了,將我手邊可用的觀念來寫成一個利用VBA計算股票的3日、5日及10日均線的方法,來找出目前呈現多頭排列的上市股票,讓我們繼續看下去。

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年8月25日 星期日

遠端偵錯(Remote Debug) --- VC2010 與Winpe 3.0 x86

根據前一篇文章遠端偵錯(Remote Debug) --- VC6與Winpe 3.0 x86所述,可看出用VC6來做Remote Debug真的很會很費工,不過到了VC2010的Remote Debug相關環境設定就變得比較簡單了,讓我們繼續看下去。

遠端偵錯(Remote Debug) --- VC6與Winpe 3.0 x86

開發程式時最常在實際發生問題的電腦上執行除錯,才能抓到真正Bug的Root cause。程式設計師常見的偵錯方式就是在有問題的程式碼中加入偵錯紀錄,這樣的做法往往是最沒有效率,但最也能達到除錯的效果。

2013年8月14日 星期三

Intel chipset的GPIO 找法

一直想整理有關GPIO的內容,近期又有機會用到,心血來潮順道整理一下,給有需要的人參考,順便也記錄一下相關知識重點,以便未來複習用。

2013年8月1日 星期四

解決"無法顯示網頁"的CHM檔案

你是否有過在網路上下載一份附檔名為CHM電子書檔,打開後卻顯示"無法顯示網頁"情況呢?

2013年7月25日 星期四

Winpe 加入Audio service所需的service --- Hdaudaddservice

Hdaudaddservice是一個一拍兩瞪眼的service,如果HdAudBus.inf沒有成功安裝對的driver,將無法成功將hdaudio.inf安裝,hdaudio.inf無法安裝,導致Hdaudaddservice顯示的資訊不完整,也無法順利啟動Hdaudaddservice。

2013年7月19日 星期五

Winpe 加入Audio service所需的service --- AudioEndpointBuilder、Audiosrv

AudioEndpointBuilder全名為Windows Audio Endpoint Builder,Audiosrv全名為Audio Service,在winpe下並未加入以上兩個service,若要加入以上兩個service,可參考以下作法。

2013年7月18日 星期四

Winpe 加入Audio service所需的service --- MMCSS

MMCSS 全名 Multimedia Class Scheduler Service,在Pure winpe中是被移除的service之一,它扮演的角色為啟動Audio service所必需的service之一,所以如果想在winpe中加入MMCSS ,可以參考以下的作法。

2013年7月1日 星期一

Batch讀檔案的行數

近期需要以Batch來取得檔案的總行數,找了一些範例測試可以work順便記錄下來。

2013年6月23日 星期日

WMI取得OS所有相關資訊

最近寫batch需要取得OS資訊,想了想不知用什麼方法,最後找到一個我覺得最適合的方法,就是用WMI取得OS資訊,果然不負眾望可以列出我想要的關鍵資訊。

製作Winpe x86與x64二合一的開機選單 (3)

由前面 製作Winpe x86與x64二合一的開機選單 (1)製作Winpe x86與x64二合一的開機選單 (2) 兩篇文章的介紹,最後來介紹如何讓開機選單顯示我們要的中文字。

2013年6月22日 星期六

製作Winpe x86與x64二合一的開機選單 (2)

前一篇文章製作Winpe x86與x64二合一的開機選單 (1) 介紹使用BCDedit來製作多重開機選單,使用Winpe 3.0的BCD檔,不知是否有發現多了一個"Windows Setup [EMS Enable]"的選單呢?

製作Winpe x86與x64二合一的開機選單 (1)

常見到網路上有人可以將x86與x64的Winpe合併在同一份USB或DVD中,花點時間整理一蝦有關設定開機選單的方法。

2013年6月20日 星期四

Batch對字串編碼進行轉換與新增字串

最近要對大量registry檔案進行字串調整,但一個個開檔、整理再關檔,真的很麻煩,鑑於此想說使用batch來完整這些手動的流程。
由Batch指令reg export導出的檔案*.reg檔為Unicode的格式,所以在使用batch指令處理檔案內容時,將會遇到無法開啟檔案存取的問題,如上一篇文章 Batch指令Findstr無法存取Unicode編碼的檔案 所提,需要藉由Type進行Unicode與Ascii的轉檔動作,以上這些還不是主要的困難,困難點在如何插入字串,如HKEY_LOCAL_MACHINE\SYSTEM要變成HKEY_LOCAL_MACHINE\PE3-SYSTEM,這才是要花時間思考,花了點時間想了一下要使用Batch現有的指令來完成這項任務還真不容易,順便將這部分的程式碼記錄下來,以便日後了解。

2013年6月17日 星期一

2013年6月16日 星期日

REG_SZ、REG_MULTI_SZ與REG_EXPAND_SZ的區別

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

2013年6月12日 星期三

UEFI LocateProtocol、HandleProtocol 與OpenProtocol 說明

熟悉uefi的人一定不陌生LocateProtocol、HandleProtocol 與OpenProtocol ,但真的要清楚分別每個用法還真的不難,以下將介紹三中不同的用法

2013年5月25日 星期六

Winpe 4.0 製作

先到官網下載製作winpe4.0的ADK套件  Windows® 8 的 Windows 評定及部署套件 並安裝,將以下的batch指令另存成bat執行,即可得到一個Winpe 4.0

2013年5月24日 星期五

Winpe啟動過程

Winpe啟動過程找了好一陣子,終於有機會可以好好整理一下,相關說明可以直接在微軟官網找到。

Winpe 3.0 製作

何謂Winpe?可至微軟官網維基百科查詢,會有詳細的介紹,Winpe是一個精簡的Windows系統,Winpe有的功能,完整版的Windows OS 一定有,但Windows OS有的功能,Winpe不一定會有,就算有也是閹割版。

2013年5月23日 星期四

添加script到WinPE中

WinPE系統提供了三種方法啟動自訂腳本:Winpeshl.ini、Startnet.cmd 和 Unattend.xml。

2013年5月20日 星期一

2013年5月17日 星期五

jQuery觀念建立

久久沒碰jQuery就忘了該如何寫,花了點時間將基本的觀念再重新整理,以便未來好複習

2013年5月11日 星期六

取得系統中裝置例項路徑(Device Instance Path)

取得系統中裝置例項路徑(Device Instance Path)

使用Diskpart查看硬碟資訊

今天花了點時間找了一些跟Disk資訊的方法,意外收尋到可以使用Diskpart來查看Disk的資訊,順道整理起來,以便日後查看。

2013年4月17日 星期三

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

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

VC6與VC2010在Resource欄位的差異

你是否有過原本在VC6程式可以執行,但在VC2010修改Resource檔後,卻發生無法執行的錯誤呢?

2013年4月16日 星期二

VC++ CTime使用

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

2013年4月15日 星期一

#pragma pack(1)表示的意義

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

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

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

2013年4月13日 星期六

使用DLL連結並以WinIo.sys為Driver讀取CMOS資料

工作上遇到需要以WinIo來Debug一些問題,藉WinIo.sys以釐清是否跟工作用的Driver有相關,在網路上,WinIo已到了3.0版作者Yariv Kaplan,舉個簡單的程式碼透過WinIo.sys來讀取CMOS的資訊。

2013年4月12日 星期五

2013年3月29日 星期五

CreateMutex建立多線程互斥機制---解決行程同步問題

最近工作上需要修改單線程DLL讓成為多行程(Multi Processes)非多執行緒(Multi Thread),讓多執行檔對單一DLL同時進行存取,在可存取資源只有一個的情況下,又必須讓多行程(Multi Processes)同時執行且不相互衝突可用的資源,這就需要一個機制來達成,那就是使用互斥,讓多個執行檔在使用單一DLL時,只有一個行程可以使用。

2013年3月20日 星期三

QueryTable抓上櫃交易明細

這次透過QueryTable來抓取上櫃交易明細,資料在抓下進Excel後,需要再做資料剖析實在不是很方便,不過這也是最快的方法了,有需要全部上櫃明細,請自行修改。

2013年3月13日 星期三

2013年3月11日 星期一

建立在UEFI Shell上可安裝自定義的Protocol

UEFI中的中的Protocol有分內建與外部安裝兩種,以下為動態安裝且可自定義的Protocol,至於何謂UEFI Protocol?後續再陸續說明

2013年3月6日 星期三

VBA執行WMI

透過VBA執行WMI取得Windows 系統名稱,至於什麼是WMI以後再慢慢解釋,先看程式碼

透過Yahoo搜尋有多少網頁連結到自己的網站

想知道透過Yahoo搜尋有多少網頁連結到自己的網站嗎?可以用Yahoo! SEARCH Site Explorer來查看

2013年3月5日 星期二

UEFI Delay

在UEFI mode下要使用Delay的方法

近期寫UEFI shell application需要用到delay來延遲時間,找了一下有兩種可以使用的方法,分別是Stall與sleep,有興趣的可以參考一下