設定Service相依性可以確保某一個Service只能在某個Service啟動後才能夠執行。
開始->執行regedit進入登錄編輯程式
HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Services\選擇所要設定的Service
新增多字串值->DependOnService
資料則填入欲相依的Service名稱(DisplayName)
重新啟動相依的Service,看是否設定的Service會先被終止再啟動。如果沒有生效,可以重開機試試。
2012年12月7日 星期五
2012年12月1日 星期六
C/C++計算檔案大小
常常不記得取得檔案長度該怎麼寫,所以先筆記下來。
C++
ifstream is; is.open ("test.txt", ios::binary)
is.seekg (0, ios::end);
length = is.tellg();
is.seekg (0, ios::beg);
C
FILE *fp = fopen(file, "r");
fseek(fp, 0, SEEK_END);
int size = ftell(fp);
fseek(fp, 0, SEEK_SET);
C++
ifstream is; is.open ("test.txt", ios::binary)
is.seekg (0, ios::end);
length = is.tellg();
is.seekg (0, ios::beg);
C
FILE *fp = fopen(file, "r");
fseek(fp, 0, SEEK_END);
int size = ftell(fp);
fseek(fp, 0, SEEK_SET);
2012年10月27日 星期六
IP_ADD_MEMBERSHIP FAIL
如果在setsockopt失敗,而WSAGetLastError()的值為10042,發生的原因可能就出在使用到不同版本的winsock library。
因為
winsock.h
#define IP_ADD_MEMBERSHIP 5
ws2tcpip.h
#define IP_ADD_MEMBERSHIP 12
詳細說明可參考此連結
2012年10月21日 星期日
2012年9月22日 星期六
花蓮二日遊(2012 08/31-09/02) Day 2
2012年9月11日 星期二
花蓮二日遊(2012 08/31-09/02) Day 1
2012年8月28日 星期二
2012年8月13日 星期一
DebugView
之前看寫Windows Driver的人要Debug時,一定會拿出DebugView這套工具,原本還沒能體會他的好處,不過現在有機會可以來體驗一下。
要用DebugView Debug很容易,只要把要Log的地方用PrintDebugString()來印出想得到的資訊,開啟DebugView時就可以很輕易的抓到這些資訊。
看起來步驟很簡單,不過今天一開始試的時候卻踢到鐵板,DebugView怎樣就是沒印出我的Log,後來才發現原來開著VC2008 Debug mode跑的時候,Log只會印在VC上,不會印在DebugView上,目前我只知道不要用VC去執行程式,DebugView就可以正確得到Log資訊。
DebugView可以從微軟官網下載
要用DebugView Debug很容易,只要把要Log的地方用PrintDebugString()來印出想得到的資訊,開啟DebugView時就可以很輕易的抓到這些資訊。
看起來步驟很簡單,不過今天一開始試的時候卻踢到鐵板,DebugView怎樣就是沒印出我的Log,後來才發現原來開著VC2008 Debug mode跑的時候,Log只會印在VC上,不會印在DebugView上,目前我只知道不要用VC去執行程式,DebugView就可以正確得到Log資訊。
DebugView可以從微軟官網下載
2012年8月2日 星期四
2012年7月26日 星期四
Redirect Background Program Ouput
要將一個背景程式的輸出Redirect到一個檔案去,如果是用以下的方法是沒用的。
# ./program & > log.txt
正確的方式應該是先Redirect後再丟到背景執行,如下:
# ./program > log.txt 2>&1 &
# ./program & > log.txt
正確的方式應該是先Redirect後再丟到背景執行,如下:
# ./program > log.txt 2>&1 &
2012年7月25日 星期三
MFC自訂Message
最近發生在按件事件觸發後,執行到某個Thread,然後此Thread會做更新UI的動作,結果悲劇就產生了,DeadLock....
解決方式可以用自訂Message的方式來解決,如果Thread要更新UI,可以用PostMessage來取代。自訂Message的方式如下:
1. 先在Header檔訂義自訂的Message
#define WM_MY_MSG (WM_USER+ N)
[註] N為一個整數,來區別不同自訂的訊息
2. 加入處理此訊息的Function宣告
afx_msg LRESULT OnMyMSG(WPARAM wPararm, LPARAM lParam);
3. 在CPP檔加入消息映射
BEGIN_MESSAGE_MAP(CFactoryAPDlg, CDialog)
ON_MESSAGE(WM_MY_MSG, OnMyMSG)
END_MESSAGE_MAP()
4. 實作OnMyMSG()
實作完後,就可以在Thread處理時,用PostMessage(WM_MY_MSG)來解決DeadLock的問題。
解決方式可以用自訂Message的方式來解決,如果Thread要更新UI,可以用PostMessage來取代。自訂Message的方式如下:
1. 先在Header檔訂義自訂的Message
#define WM_MY_MSG (WM_USER+ N)
[註] N為一個整數,來區別不同自訂的訊息
2. 加入處理此訊息的Function宣告
afx_msg LRESULT OnMyMSG(WPARAM wPararm, LPARAM lParam);
3. 在CPP檔加入消息映射
BEGIN_MESSAGE_MAP(CFactoryAPDlg, CDialog)
ON_MESSAGE(WM_MY_MSG, OnMyMSG)
END_MESSAGE_MAP()
4. 實作OnMyMSG()
實作完後,就可以在Thread處理時,用PostMessage(WM_MY_MSG)來解決DeadLock的問題。
2012年7月19日 星期四
2012年7月13日 星期五
2012年6月29日 星期五
Sleep in batch script
當我們在寫批次檔來完成某些事項時,如果需要暫停幾秒再執行某些指令,本來以為用sleep即可,不過實驗證明是沒用的。有以下兩種方法可以達成
- TIMEOUT /T 10
- ping 127.0.0.1 -n 10 -w 1000 > nul
訂閱:
文章 (Atom)