Search Google

Showing posts with label ms note. Show all posts
Showing posts with label ms note. Show all posts

Wednesday, September 03, 2008

Another Thing That M$ Pissed Me Off

今天有兩件事情值得慶祝:

  1. 我退伍了!
  2. Google Chrome Beta is on the market :-)

但是有一件事情令人賭濫:

  1. NBWindows Xp居然不能upgradeSP2以上的版本!

為什麼我會發現我NBWindows Xp無法upgradeSP2以上的版本呢?完全要感謝Google Chrome!當我回到家裡裝Google Chrome的時候忽然出現無法安裝的錯誤訊息
當我執行Windows Update的時候卻又得到安裝失敗的訊息,仔細追根究底終於發現原因。

我只是因為之前NB的硬碟與光碟機壞掉拿去修理所以將系統回復到出廠的樣子而已就跟我說不能再更新至SP2以後的版本,這是怎麼回事?OSbug,有security issue,廠商不是應該有義務負責修補嗎?要強迫推銷Vista或之後的Windows 7也不是這樣子的吧?這時候真應該套用一下最近的流行語 – 這真是太超過了!

看來只好自己手動下載更新了。

Tuesday, July 29, 2008

Another way of debugging

最近在寫windows service的時候依舊採用老舊的debug方式 --> 把msg寫到文字檔中,然後再開啟文字檔檢查。如果service持續將msg寫入文字檔中,我們就必須要將文字編輯器關閉然後重新開啟文字檔,十分麻 煩。我今天很幸運地發現其實可以用DebugView1取代文字檔的功能即時檢視除錯訊息!
使用方法則是用OutputDebugString2函式取代原本使用的fopen,fpritnf函式。



1 http://technet.microsoft.com/en-us/sysinternals/bb896647.aspx
2 http://msdn.microsoft.com/en-us/library/aa363362(VS.85).aspx

Monday, July 28, 2008

Create Native Windows Service In C -- supplementary

我在上個星期五花了一點篇幅紀錄目前研究windows service的進度1,今天下午測試後發現有些功能完全沒有作用,經過google的幫忙後在CodeProject上找到一篇不錯的tutorial2,文中剛好講到我之前疏忽的重點:

我們利用RegisterServiceCtrlHandlerEx函式註冊service control handler時所輸入的第二個參數正影響著handler的prototype。

若是將handler cast成為(LPHANDLER_FUNCTION_EX)則handler的prototype將會是:
handler(DWORD dwOpcode,DWORD evtype, PVOID evdata, PVOID Context);

若是將handler cast成為(LPHANDLER_FUNCTION)則handler的prototype就會變成:
handler(DWORD dwOpcode;


至於要將handler cast成上述的哪一種,端看這支程式/service的功用為何。
如果只是想要執行簡單的控制然後在start, stop, pause, continue service的時候改變控制行為,那麼將handler cast成
(LPHANDLER_FUNCTION)即可,若是想要控制usb(舉例)勢必需要更多的資訊才能知道usb的狀態,因此就必須將handler cast成(LPHANDLER_FUNCTION_EX)。

有心人如果翻翻我上星期五貼出來的範例就會發現我在註冊service control handler的時候只有將handler cast成(LPHANDLER_FUNCTION)卻肖想handler的prototype為:
void ControlHandler(DWORD request, DWORD evtype, PVOID evdata, PVOID Context);
這麼一來,有功能沒有作用是再正常不過的事了!

以上仍為嘴泡理論,等我有時間測試的時候再來確認一下,如果到時候發現嘴泡有誤再上來訂正 ^^



1 Create Native Windows Service In C
2 http://www.codeproject.com/KB/system/Windows_Services.aspx

Monday, July 14, 2008

Mount drive in dosbox

1. 在terminal下執行dosbox指令
2. 在dosbox的console下執行mount指令,例如:

mount c /home/user/tmp
mount d /media/cdrom
PS. dosbox的mount指令只能接受完整路徑,因此在Linux環境下用~是行不通的。

Sunday, June 22, 2008

More on LXR -- The partial use of hosts file

今天再來討論一下有關LXR的議題。
當我們編輯lxrng.conf的時候會指定base_url,如果裡面填寫的是domain name則其他在同樣LAN的電腦可能會無法開啟LXR網頁,這時候我們需要在瀏覽端電腦上設定hosts檔案,hosts檔案在Linux與Winows下的路徑分別為:
Linux --> /etc/hosts
Windows --> C:\WINDOWS\system32\drivers\etc\hosts

在裡面加上:
LXR機器的IP1 LXR機器的domain name

如此一來不論瀏覽端電腦是否在LAN2都可以使用LXR機器的domain name開啟LXR頁面。



1 甚至"localhost"也可以
2 包括LXR本機

Thursday, May 15, 2008

NX server test drive


在8M/1M的連線環境中速度還不錯,比X-Forwarding快多了!
NX方案開firefox之後開啟router設定port forwarding時畫面更新的速度大約一至二秒
用X-forwarding方案常常需要至少半分鐘更新畫面,有時候signal根本沒有傳到server等了幾分鐘還是同一個畫面。
因此我認為若是在區網環境使用的話效果應該在本機上使用差不多 ^^

感覺上NX是Windows遠端桌面與VNC的合體,因為可以在任何時候繼續之前關閉的連線,也可以像XDMCP一樣每次連線都建立新session,還可以將桌面分享給多個連線,同時分享client端的硬碟與印表機給server,這是一篇來自www.linux.com的介紹

最後要提醒一下該更新ssh囉,詳情請洽本文開頭的那張圖。

Saturday, January 19, 2008

TcpNumConnections

話說最近在做網頁,不知道是不是因為邊測試邊下載的關係,讓我的windows事件簿上面出現TCP/IP連線數超過限制的訊息,google之後(是的,又是google。。。)找到兩個方法:
1.下載工具軟體更改設定,但是怕中毒所以不敢用
2.直接更改機碼:

HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Services\Tcpip\Parameters
DWORD --> TcpNumConnections
value --> 想開的連線數

目前使用第二個方法,但是因為還沒有重新開機,因此也無從得知到底有沒有效,當做是另一筆可能有用的紀錄吧。

word檔案損毀

用WORD開啟檔案的時候赫然看到檔案損毀,要我使用文字轉換工具的訊息,
我試了兩種方法都OK

1.使用windows內建的wordpad開啟檔案,再另存新檔,只是這樣子新檔的體積有可能非常龐大(eg.從8M變成200M),再來就是文章的格式會跑掉。

2.這是google到的解法,用regedit新增機碼值後重開機,機碼值如下:

HKEY_CURRENT_USER\Software\Microsoft\Office\11.0\Word\Options
DWORD --> BulletProofOnCorruption
value --> 1


按照第二個方法做完之後果然能使用WORD順利開啟檔案,之後存檔關閉再開啟就沒有遇到同樣的問題了。

Monday, November 26, 2007

Visual Studio 2008 Setup - Part1

最近與VS2005奮戰許久之後依舊無法克服部份WinAPI的困擾讓我決定啟用VS2008,沒想到一裝好之後之前遇到的問題通通不見了!
只是愈到了一個新的問題,那就是不知道該如何debug(以前都用gdb),稍微摸索之後終於讓我找到解決之道,下面是一些設定的screenshots。



[1] & [2]記得填寫


Sunday, November 11, 2007

完成第一支使用win32 api的程式

今天完成了我生平第一支使用win32 api的程式,我叫他做autop2p
他的作用是控制滑鼠、鍵盤讀取檔案中的關鍵字,一一丟進p2p軟體的搜尋欄位後按下搜尋紐進行搜尋,過程中家齊學長在尋找適合的API方面幫了我很大的忙。
同時學到window handle與process handle雖然都是HWND type,但是是兩碼子事。
也在msdn上看到使用fscanf()一次scan一整行的方法:

fscanf(fIn, "%[^\n]%*c", keyWordBuf)

總體來說,autop2p的功能算是automate的一個小subset,使用automate多年之後總算也知道它是怎做出來的了!

Thursday, November 08, 2007

command for removing windows messenger

RunDll32 advpack.dll,LaunchINFSection %windir%\INF\msmsgs.inf,BLC.Remove

Tuesday, November 06, 2007

mingw + winapi

古人云:小人恆立志
果然一點也沒錯!
今天學長告知隊上使用的p2p不只一種的同時也建議研究一下winapi
這樣只需要寫一個程式就可以控制多個p2p clients讓他們自動搜尋,
於是乎,我將改寫使用Java的LimeWire計畫置一旁,開始研究起winapi來,
又因為手上這台電腦的記憶體實在太少(256MB - 內建顯卡 = 240MB),
安裝VS系列可能會跑到死,所以決定走cygwin/mingw路線。
這個連結就是使用mingw編出呼叫winapi的執行檔introduction~
沒想到最後還是要碰以前打死都不想看的winapi@@

Saturday, November 03, 2007

Use mget without answering Y/N

使用FTP的文字介面(eg. MS內建的ftp)抓多個檔案時就要使用mget指令,
但是要如何跳過回答Y/N而直接抓取檔案呢?
答案就是先輸入prompt將互動模式關掉,eg.

open [ip]
[login]
[passwd]
bin
prompt
mget *
quit

太久沒用都忘了@@

debug.exe

MS內建的debug.exe只支援到64KB大小的檔案,當檔案超過64KB的時候該怎麼辦呢?
很簡單,利用split之類的工具將binary file切割成多個64KB的檔案再使用debug.exe將這些檔案以hex格式dump出來,透過console傳到(眉角在此)目標主機上之後再利用debug所提供的db指令在debug將hex格式還原成binary file的時候把多個64KB檔案重新組合成為單一binary file(我知道有點繞口)。

主要的幾個步驟:
1. 將debug script餵給debug產生出第一個bin file, eg. debug < a.txt > a.bin
2. 使用debug開啟bin file, eg. debug a.bin
3. 在debug內移到a.bin的結尾
4. 使用db將其他幾個檔案的hex data倒到a.bin的後面,完成後記憶體中的內容就與原來的bin file一模一樣了!
5. 利用(1)的debug script中寫入檔案的指令將所有資料寫入b.bin
6. 完成
目前不確定(2)~(6)是否能夠寫到script讓debug自動執行,需要再做實驗&研究,eg.

debug a.bin < 3_to_6.script

以下幾個links有debug的相關資訊:
http://kipirvine.com/asm/debug/Debug_Tutorial.pdf
http://www.moon-soft.com/program/bbs/readelite553716.htm
http://www.itepub.net/html/kaifawendang/C__/wenjian_mulu_ziyuan/2006/0429/6758.html

Something about DOS and BAT

1. 在Dos下搜尋某個檔案並顯示full path的方式有幾種:

$ dir /s "file_name"
$ [drive: or path_2_folder\] && dir /s "file_name"
$ dir /s/b [drive: or path_2_folder\] | findstr "file_name"


2. BAT file中的每個statement必須寫在同一行,eg.
if ... () else ()
for %%i in () do ()

ps. ()等同C中的{}
%1~%9是input argument
%%x代表變數,x可為任何legal identifier
細節這裡有。

Friday, August 24, 2007

hotmail硬起來了

今天好不容易用了一次hotmail,突然發現hotmail真的是下定決心要跟google爭天下!
首先,hotmail的容量由原先的1G/2G大幅提昇至5G。

Hotmail首次大手筆提供5G容量

再來就是維持了一貫的"設定優先權"功能,這是本人覺得比較方便的部份,想要強迫對方先開你的email時,set priority to highest是個好方法。
Set priority是個好用的功能

相較於google提供的2.8G空間,hotmail可是吃了秤坨鐵了心呢!
Gmail的空間種於"長"到2.8G了

不知不覺gmail也被我塞超過一半的空間

Monday, August 20, 2007

msn messenger疑似在做置入性行銷

今天華航又燒錢了,所幸無人罹難,如圖:

錢太多,我可以幫忙花阿!

剛好今天有個朋友他跟家人到日本玩,在msn上遇到他的時候馬上問他是不是上新聞了!
還好他們今天是到東京,跟這起意外一點關係也沒有 :-)

隨後我們小聊了一下,但是今天總覺得哪裡怪怪的,問題就出在msn messenger,如圖(again):
被抓包不是用正港msn messenger

一開始我以為那一串日文是我朋友把日本的新聞報導copy & paste給我,詢問他之後才發現他根本看不懂日文,而且他除了聊天的msg之外沒有再多傳東西過來。
仔細觀察後發現每當他傳msg來的時候總是會辦隨著一篇一模一樣的日文,後來點入連結才知道是msn messenger的網頁。
看來msn messenger越來越聰明了(?!),會在偵測出對方使用非正港msn messenger的時候發出廣告訊息~
這樣算是置入性行銷嗎?

Wednesday, August 01, 2007

re-initiate my no-ip

今天把ftp架好之後馬上把no-ip(service由http://www.no-ip.com提供,client端軟體目前已經可以在ubuntu的repository中找到)跑起來,請chtasi測試之後發現並沒有辦法從外部ping到我的機器,才發現忘了在router設定port forward。
設定完port forwarding之後我的$0 no-ip machine馬上生龍活虎!
目前只開了ftp (custom port)與ssh的port而已。

所以在此叮嚀在router後面使用no-ip的朋友千萬記得要幫router設定port forwarding。

Tuesday, July 17, 2007

在Visual Studio 2005中browse code

最近在使用VS2005的時候始終覺得不太方便,因為沒有發現code navigation/browsing的功能。
以前在Linux下寫程式的時候習慣使用vim + cscope,這樣的結合讓我可以很容易的在原始碼當中穿梭自如,於是興起了我替VS寫這麼一個plugin的念頭。
花費兩天研究VS extensibility,準備著手進行的時候,非常因緣際會的發現原來VS早就支援code browsing功能!
特此抓了兩張screenshots加以說明:
(1) 移至定義
在想看的function/variable上按右鍵便會出現下面的選單,點選移至定義就可以跳到function body code的位置,如果有兩個一樣的function name,則可以點選尋找所有參考

(2) 向後巡覽
當看完function body code之後可以使用toolbar上的向後巡覽回到原本正在看的程式碼。如果需要來回切換的話可以使用向後巡覽右邊的向前巡覽做快速切換。


讓我現在完全沒有寫plugin的理由了 @.@