Login  

Blog Stats

News

隨筆分類

每月文章


男丁格爾s 脫殼

記錄一些常見的Javascript及CSS問題,及分享一些自制的小程式。

Tuesday, October 09, 2007 #

說明:
CreateSolidBrush 函式可建立一支具有指定顏色的實心畫刷(Brush)

引用函式庫:
GDI32

適用系統:
Windows NT 3.1 或 Windows 95以上

函式原型:
Declare Function CreateSolidBrush Lib "gdi32" Alias "CreateSolidBrush" ( _
    ByVal crColor As Long _
    ) As Long

參數型態及說明:
crColorLong 指定畫刷(Brush)的顏色

回傳值:
Long 呼叫成功的話,將會回傳畫刷(Brush)的代碼;若呼叫失敗的話,則回傳 0

VB範例:

RB範例:

posted @ 8:56 AM | Feedback (0)

說明:
GetWindowDC 函式可取得整個視窗(包括邊框、標題列及選單)的裝置環境代碼(Device Context)

引用函式庫:
User32

適用系統:
Windows NT 3.1 或 Windows 95以上

函式原型:
Declare Function GetWindowDC Lib "user32" Alias "GetWindowDC" ( _
    ByVal hwnd As Long _
    ) As Long

參數型態及說明:
hwndLong 要取得整個視窗的裝置環境代碼(Device Context)的視窗代碼(Handle)

回傳值:
Long 呼叫成功的話,將會回傳非零的數值;若呼叫失敗的話,則回傳 0

VB範例:

RB範例:

註釋:
RB 中用 GetDC(0) 也可以取得個視窗的裝置環境代碼(Device Context)

posted @ 8:54 AM | Feedback (0)

說明:
MoveWindow 函式可變更指定視窗的位置與大小

引用函式庫:
User32

適用系統:
Windows NT 3.1 或 Windows 95以上

函式原型:
Declare Function MoveWindow Lib "user32" Alias "MoveWindow" ( _
    ByVal hwnd As Long, _
    ByVal x As Long, _
    ByVal y As Long, _
    ByVal nWidth As Long, _
    ByVal nHeight As Long, _
    ByVal bRepaint As Long _
    ) As Long

參數型態及說明:
hwndLong 要移動或是改變大小的視窗代碼(Handle)
x
Long 視窗左上方的新 X 座標
yLong 視窗左上方的新 Y 座標
nWidthLong 調整後視窗的寬
nHeightLong 調整後視窗的高
bRepaintLong 調整後視窗是否重繪,若要重繪則設為 True;反之則設為 False

回傳值:
Long 呼叫成功的話,將會回傳非零的數值;若呼叫失敗的話,則回傳 0

VB範例:

RB範例:

posted @ 8:52 AM | Feedback (0)

說明:
Rectangle 函式會在指定的裝置環境代碼(Device Context)上繪製矩形

引用函式庫:
GDI32

適用系統:
Windows NT 3.1 或 Windows 95以上

函式原型:
Declare Function Rectangle Lib "gdi32" Alias "Rectangle" ( _
    ByVal hdc As Long, _
    ByVal X1 As Long, _
    ByVal Y1 As Long, _
    ByVal X2 As Long, _
    ByVal Y2 As Long _
    ) As Long

參數型態及說明:
hdcLong 要繪製矩形的裝置環境代碼(Device Context)
X1
Long 矩形的左上方 X 座標
Y1
Long 矩形的左上方 Y 座標
X2
Long 矩形的右下方 X 座標
Y2
Long 矩形的右下方 Y 座標

回傳值:
Long 呼叫成功的話,將會回傳非零的數值;若呼叫失敗的話,則回傳 0

VB範例:

RB範例:

posted @ 8:49 AM | Feedback (0)

說明:
ReleaseDC 函式可將指定的裝置環境代碼(Device Context)做清除及釋放

引用函式庫:
User32

適用系統:
Windows NT 3.1 或 Windows 95以上

函式原型:
Declare Function ReleaseDC Lib "user32" Alias "ReleaseDC" ( _
    ByVal hwnd As Long, _
    ByVal hdc As Long _
    ) As Long

參數型態及說明:
hwndLong 要釋放裝置環境代碼(Device Context)的視窗代碼(Handle)
hdcLong 要釋放的裝置環境代碼(Device Context)

回傳值:
Long 呼叫成功的話,將會回傳非零的數值;若呼叫失敗的話,則回傳 0

VB範例:
 

RB範例:

註釋:
若是透過 GetDC 函式來取得的話,不用時要用 ReleaseDC 函式來釋放它;但若是使用 CreateDC 函式所建立的話,則要用 DeleteDC 函式

posted @ 8:47 AM | Feedback (0)

說明:
GetDC 函式可用來取得指定視窗工作區的裝置環境代碼(Device Context)

引用函式庫:
User32

適用系統:
Windows NT 3.1 或 Windows 95以上

函式原型:
Declare Function GetDC Lib "user32" Alias "GetDC" ( _
    ByVal hwnd As Long _
    ) As Long

參數型態及說明:
hwndLong 要取得裝置環境代碼(Device Context)的視窗代碼(Handle)

回傳值:
Long 呼叫成功的話,將會回傳指定視窗工作區的裝置環境代碼(Device Context);若呼叫失敗的話,則回傳 0

VB範例:

RB範例:

註釋:
若是透過 GetDC 函式來取得的話,不用時要用 ReleaseDC 函式來釋放它

posted @ 8:45 AM | Feedback (0)

Wednesday, June 27, 2007 #

有時寫程式時,若不小心沒判斷好或是寫到無窮迴圈時,可能會讓整個程式當掉,系統的記憶體被耗光。所以若能取得程式的記憶體使用量的話,就能更方便的了解程式是不是吃資源的怪物!

其實我們可以透過 Windows 工作管理員來取得執行中程式的記憶體使用量

除此之外,在 REALbasic 中也提供了一個 Runtime物件,可以經由 Runtime物件來取得執行階段的一些狀態訊息,方便我們來除錯用。

讓我們來動手試看看 Runtime物件要怎樣使用!執行 REALbasic 2006 R4 後,先開啟一個新的專案,然後把一個 EditField 控制項StaticTex 控制項及 Timer控制項放在 Window1 上,預設的 NameEditField1StaticText1Timer1

為了讓程式看起來看像樣一點,再把 StaticText1 Text 屬性值設成記憶體使用量:

Runtime物件中的 MemoryUsed 屬性就是用來取得程式的記憶體使用量用的,傳回的值是用 Bytes 來表示。

所以,我們可以在 Timer1Action事件中加入取 Runtime物件MemoryUsed 屬性的程式碼

這邊要注意的是,因為取到的值是 Bytes,所以我多除以 1024 來轉成 KB。若沒問題的話,就能執行看看結果了

不過,若跟 Windows 工作管理員所顯示的記憶體使用量來相比較的話,根本就差太多啦!

怎麼會這樣咧?讓我換用 REALbasic 2007 R2 來執行同樣的程式

執行用 REALbasic 2007 R2 所編譯的程式,其中所顯示的記憶體使用量Windows 工作管理員所顯示的是一模一樣啊!看來這應該是 REALbasic 2006 R4 的另一個 Bug 吧!?

而用相同的程式碼來比較 REALbasic 2006 R4REALbasic 2007 R2 所編譯出來的程式的記憶體使用量時,發現是 REALbasic 2007 R2 略勝一籌!

因此,建議用 REALbasic 2006 版的使用者,若可以的話就更新到 REALbasic 2007 版,除了解決了舊版的問題外,還新增了其它方便的東西。像是 REALbasic 2007 版中已加入了 Code Folding 的功能:

其它更多的更新內容可以到REALbasic 官網去取得。

posted @ 8:45 AM | Feedback (1)

Thursday, June 07, 2007 #

最近在寫一個透過 Skype 來傳送訊息的 Skype 訊息發送器時,會需要用到同時開啟多個 Skype 的帳號來測試,申請多個帳號並不是問題,麻煩的是 Skype 一次只能開一個。所以,我就要在多台電腦間跑來跑去的看訊息是否有傳送出去或是有沒有接收到!

Skype 好像沒有類似 Windows Live Messenger 或是 Yahoo! Messenger 之類的多開修改程式,因此要多開 Skype 這件事就變的很棘手了!

雖然很棘手,不過還是有方法的,我們可以透過 Windows 中不同的使用者帳戶來達到多開的效果,讓我們來一步一步動手試試看:

我們先開啟控制台中的使用者帳戶

這邊可看到目前 Windows 中所設的使用者帳戶(不包括 Administrator 的),為了測試的關係,我們先建立一個新的使用者帳戶

這邊我先輸入新的帳戶名稱為 Skyper,若輸入好後就能按下一步來選擇帳戶的權限類型

我先把 Skyper 的帳戶先設為電腦系統管理員,若要設成受限制的也是可以的。

選擇好後只要按下建立帳戶即可

建立好新的帳戶後,我們還要替新帳號建立密碼,不然也會有安全性及權限上的問題

建立好密碼後,我們就可以開始來多開 Skype 囉!

先用正常的方式來登入 Skype,然後到 Skype 的安裝目錄中找 Skype 的執行程式,預設是 C:Program FilesSkypePhone 中的 Skype.exe

對著 Skype.exe 點右鍵時,應該會看到一個叫執行身份(A)...的選項

點擊執行身份(A)...後會看到一個執行身份的視窗

可以看到的是,目前是使用 Administer 這帳號來登入且執行各種動作,但因為已經執行一個 Skype 了,所以會無法再執行第二個以上的 Skype。因此我們就要使用其它使用者來執行第二個以上的 Skype

點選下列使用者後,輸入或是從下拉清單中找到剛剛建立的新帳戶密碼

按下確定後就會開啟一個新的 Skype 囉!

若要開N個的話,就可以用這方法來做。雖不方便,但當需要時還蠻管用的

posted @ 4:55 PM | Feedback (5)

Sunday, May 20, 2007 #

在其它語言中要動態添加控制項時,都是先 New 出來後,再 Add 進去即可。不過若是 REALbasic 中要做到這樣的話,則要用另一種特別的方式!

讓我們執行來動手做一下吧!先開啟一個新的專案,然後把一個 EditField 控制項放在 Window1 上,預設的 NameEditField1

接著我把它的 Name 改成 myText ,再來關鍵的地方是,把它的 Index 屬性值設為 0

為什麼要把它設為 0 呢?是因為要把它當做控制項陣列來用,在 REALbasic 中要動態添加控制項的話,就要用控制項陣列的方式來產生。當然 Index 不一定是要設成 0 啦,只要是正整數都可以!

再來我們在 Window1 Open事件中加入動態產生一個新的 EditField 控制項的程式碼

輸入好後執行看看成果囉

嘿~果然添加了一個新的 EditField 控制項,且它的 Text 值是我們剛剛在 Window1Open事件中所設定的值!

如果一開始連 myText 都不要出現的話,就只要把它的 Visible 值設為 False 就好了,但要注意在 New 時就要把新的控制項的 Visible 值設為 True

動態添加控制項的用意就是要用,所以要能存取控制到才是我們的目的。存取動態添加出來的控制項有數種:一種是用變數的方式;另一種可以用控制項陣列的方式。

讓我們再多添加一個新的 EditField 控制項,然後用不同的方法來秀出 Text

執行後就能看到

看完如何在 REALbasic 中添加新的控制項後,是不是覺得跟其它語言的方法比起來還有加強的空間呢?!

posted @ 12:34 AM | Feedback (1)

Saturday, May 12, 2007 #

Hinet 的 ADSL用戶可以申請 Hinet 所提供的 100MB 網頁空間,雖然蠻多人都用來放檔案分享,不過還是有少數人是用來放自己的網頁的。但是,如果是網頁的話(html或htm),開啟網頁時會有彈出式的廣告出來。

網頁有這種彈出式的廣告是蠻討厭的,因此就有人會想盡各種辦法來防止廣告的出現。在說怎樣防止 Hinet 廣告之前先說個標籤的用法。

noscript 標籤,這組標籤是用來給不支援 JavaScript 的瀏覽器用的,當瀏覽器不支援或是沒啟用 JavaScript 時,就會看到 noscript 標籤中的內容。

因此若是輸入下列的語法時:

在支援或啟用 JavaScript 的瀏覽器中就只能看到沒用 noscript 標籤包起來的部份。

所以,我們就可以把 noscrip 標籤拿來運用在擋各種廣告的用途上!

大多數的廣告語法都是附加在網頁的最後面,因此我們可以直接在網頁的後面加上 noscript 標籤,但是要注意的是,若是直接加入了整個 noscript 是無效的,因為廣告語法是在這 noscript 標籤外

因此就不要關閉 noscript 標籤,把 noscript 後面全部都當做是不要的部份,這樣才能有效的防止廣告的語法。

可是這招流傳太久了,現在 Hinet 學聰明了,既然大家都用 noscript 標籤來防它,它就在它廣告語法前面先多加一個 noscript 標籤來關閉這個標籤,因此~廣告又會再度的彈出來啦!

雖然還是有其它標籤可以用來防掉 Hinet 等的廣告語法,例如:xml 標籤、comment 標籤或是其它有同等效果的標籤,不過 FireFox 瀏覽器是不支援的

不過難保 Hinet 那天會把它們一一的關閉起來,所以這邊要用個比較能治本的方法!

彈出式的廣告視窗大多是用 window.open() 函式,因此我們只要覆寫 window.open() 函式就能有效的防止這類的彈出式廣告:

這樣做的話,基本上廣告就無法開啟新網頁了,不過在 Hinet 的廣告語法中還加入的每秒會檢查廣告是否有被關閉,因此就有可能會出現 JavaScript 的錯誤:

所以我們再把 window.open() 函式再改一下:

讓用 window.open() 函式時會順便回傳 window 本身,這樣 window 本身也是網頁,要做任何檢查都不會產生錯誤。

可是當其它地方有需要用到 window.open() 函式來開新視窗時,會發現到都已經沒有任何作用了,這下代誌大條了!

因為 window.open() 函式已經被我們覆寫了,所以也就失去原有的功能,這邊為了要保有 window.open() 函式的功能,我們就拿另一個新的物件來當做它的替代函式。

這邊我用了一個 Open 物件來替代 window.open() 函式,所以使用 Open() 就等同於使用 window.open() 函式。要注意的是,JavaScript 是區分大小寫的,所以 Open() 不等於 open() 唷

因此,若原本自己網頁中有用到 window.open() 函式的地方都要改成用 Open()

另外還有一種比較 Hack 的方法是先破壞掉網頁最後面語法的正確性,讓網頁的最後面因語法的不正確而無法執行其它廣告語法,只要在網頁的最後面加上<script type=就可以了:

這樣<script type=後面的部份就會無任何動作,這方法在FireFox也有效

綜合以上的幾種方法,各位可以找最方面、最簡單使用的方法來做。若不管其它瀏覽器的支援度的話,可以選用 xml 標籤或是 comment 標籤;若是要都適用的話,可以用<script type=的方式,當然最好是覆寫 window.open() 函式。

範例瀏覽:

 http://abgne.myweb.hinet.net/Teacher/0010/0010_1.html(使用comment標籤)

 http://abgne.myweb.hinet.net/Teacher/0010/0010_2.html(使用xml標籤)

  http://abgne.myweb.hinet.net/Teacher/0010/0010_3.html(使用覆寫 window.open() 函式)

  http://abgne.myweb.hinet.net/Teacher/0010/0010_4.html(使用<script type=)

posted @ 4:07 PM | Feedback (15)

Skype 目前應該也是蠻多人使用的線上語音聊天軟體,因此也出現了相關的外掛。大部份的外掛都是要透過 Skype 本身才能運作的,所以 Skype 就有一個管理 API 存取控制的功能。

為什麼要管理 API 存取控制呢?這是為了避免一些惡意程式自動執行的關係,所以當有其它非允許的程式要來存取 Skype 時就會出現存取設定的視窗,就像防火牆一樣的作用。

讓我們實際來看看 Skype 是如何管理 API 存取控制

先啟動會存取到 Skype 的程式,這邊用來測試的是我自己寫的 Skype 訊息發送器,一連結到 Skype 時就馬上出現存取設定的視窗。

當出現存取設定時,我們有三個選項可以選擇:

永久開放此程式使用 Skype
這次開放此程式使用 Skype,但在未來同像情況下請再詢問我
請勿開放此程式使用 Skype

若不是因自己去啟動某程式的話,很有可能就是惡意程式,因此就可以禁止它來存取 Skype

選擇好要如何進行後,就可以按下確認鈕來執行此次的動作。

選擇第1個及第2個的選項的話,程式是可以順利的存取 Skype。但是第1個是永久都可以,第2個選項是只有這一次才可以,下次要在存取時會再度出現警告:若是選擇第3個選項時,就會禁止此程式來存取 Skype

這邊我先選擇第1個選項-永久開放此程式使用 Skype。這時我程式就能順利的去對 Skype 做各種的存取控制。

但是想要取消程式的存取的話,那要怎樣去設定呢?其實我們可以開啟管理 API 存取控制的視窗來做變更及移除的設定。

 先開啟 Skype,然後看視窗的左下角有個雙向箭頭

用滑鼠左鍵單點一下那個雙向箭頭,接著就會開啟管理 API 存取控制的視窗了

這邊就能看到那些所管理的程式列表,若該程式的右邊也有雙向箭頭的話,表示此程式目前正在存取 Skype

若要變更程式的存取時,可以先點選要變更的程式,然後按下變更鈕,接著就能進行此程式的存取設定。

若是要移除某程式的存取的話,也只要點選該程式後,再按下移除鈕就可以了。

還有另一種情況是,若已經把某程式加入允許存取控制的列表中的,不過當執行卻還是一樣出現管理 API 存取控制的話,這時可能表示該程式有被重新編譯過,除非是有更新程式,不然就很有可能是被動過手腳。

當有這種情況發生時,管理 API 存取控制還會特別加註一行紅色的警告字樣:**警告!!**某個異常程式正試圖操縱 Skype!

類似這樣的時候就要特別小心是否要允許該程式來存取控制 Skype 了。

所以若是在外面網咖使用 Skype 時,就可以先來檢查管理 API 存取控制中是否有其它不明的程式,以免帳號密碼及其它資料被木馬給外洩了。

posted @ 2:07 PM | Feedback (9)

Sunday, March 25, 2007 #

最近剛在學REALbasic,在使用ContextualMenu控制項時,卻遇到一個蠻莫名其妙的問題。不知道各位REALbaisc的使用者有沒有遇到過。

問題如下:

先開啟一個新的專案,然後把一個ContextualMenu控制項放在Window1上,預設的NameContextualMenu1

接著在ContextualMenu1Open事件中加入三個選項

然後,在ContextualMenu1Action事件中加入當ContextualMenu1的選項被點選時,所要反應的動作

再來,在Window1MouseDown事件中加入判斷是否點了滑鼠右鍵;若是的話,則顯示剛剛加入的ContextualMenu1

最後直接運行程式,正常的話,在程式中點右鍵時,會出現一個有三個選項的選單

接著問題來了,當點了某一個選項時,理應會觸發ContextualMenu1Action事件中的其中一項才對,不過...事實上並沒有任何反應

難道是ContextualMenu1Action事件中的If..ElseIf...都沒有被觸發到嗎?為了確認Action事件是否有被觸發,我直接在其中顯示出被點選的選項字串及其字串的長度

執行後,點右鍵後並點第一個選項後,接下來顯示的結果更是讓我嚇到啊~~~

疑~怎麼沒有顯示出字串的長度咧?是我寫錯的嗎?為了再確認,我把它拆開來顯示看看

執行後,點右鍵後並點第一個選項後,第一個顯示的是所點選的Menu 1字串

沒錯~這是我剛點的選項,按下確定後,出現的應該是Menu 1字串的長度6吧~

哇~顯示的是12耶,這是怎麼一回事...長度變兩倍了!再試其它的選項,也都是這樣,難道這是ContextualMenu控制項bug嗎?找了一些討論區的文章來看,也沒看到解法。而ContextualMenu控制項新版的REALbasic 2007 Release 1中也被棄用了,看來真的是有問題吧!

REALbasic官網ReleaseNote裡有這麼一段:

官方建議我們使用WindowConstructContextualMenu事件ContextualMenuAction事件;或者使用MenuItem.Pupup()

目前手上沒有REALbasic 2007 Release 1,不過若不用控制項的話,就是要透過MenuItem類別來做到同樣的效果。一樣首先在Window1MouseDown事件中加入判斷IsContexnualClick()的動作

這邊的DoContextualMenu()是一個自設的方法,要用來建立並加入MenuItem用的

MenuItem.PopUp()時會回傳一個被點選的MenuItem,因此就能直接來比對看是點到了那一個。這樣就能正常的使用ContextualMenu的功能了。

不過我目前能用的是REALbasic 2006 R4,總覺得不能直接用ContextualMenu控制項還蠻惋惜的!在我試了幾次後,發現了一種較有效的方法來順利的使用ContextualMenu控制項

我使用的方法是用InStr()來比對選項字串,若所點選的選項字串跟比對的是一樣的,就表示點選了這一個選項

Window1MouseDown事件中的程式不變

ContextualMenu控制項Open事件中的程式也不變

只要修改ContextualMenu控制項Action事件的程式碼即可

這樣改用InStr()來比對後,果然能順利的使用ContextualMenu控制項。雖然ContextualMenu控制項中在REALbasic 2007 Release 1中被棄用了,不過舊版的就可以使用InStr()來避免掉這bug

posted @ 9:36 PM | Feedback (2)

Thursday, March 08, 2007 #

現在很多線上播放的影片都是屬於 Flash 視訊的 FLV 格式,這類的服務基本上是只提供線上觀看用的,不過有些人會想辦法下載到電腦來保存,不過若沒安裝正確的編碼或是使用專用的播放軟體的話,是無法正常的播放觀賞的。

所以這邊提供幾種方法,來讓下載的 FLV 影片可以播放。

1‧FLV Player

官方網站:http://www.martijndevisser.com/

檔案下載位置:http://applian.com/flvplayer/index_martijn.php

FLV Player 是一個專門播放 FLV 影片用的播放軟體,它是免費的,下載安裝後就能使用了。

而使用方法很簡單,只要把要播放的 FLV 影片拖曳FLV Player 視窗後,醬子就會開始播放了。拖拉右下角可以調整視窗的大小,同時也會調整到影片播放的尺寸

2‧Riva FLV Player

官方網站:http://rivavx.de/

檔案下載位置:http://www.download.com/Riva-FLV-Player/3000-2194-10435953.html

Riva FLV Player 也是一個專門播放 FLV 影片用的播放軟體,除了跟 FLV Player 都是免費的之外,Riva 還有另一套免費FLV 轉檔軟體 - Riva FLV ENCODER

Riva FLV Player 的使用方式跟 FLV Player 一樣都能透過拖曳的方式來載入影片並播放。唯一差別是在 Riva FLV Player 無法改變影片播放時的尺寸大小

3‧VLC Media Player Portable

官方網站:http://portableapps.com/

檔案下載位置:http://portableapps.com/apps/music_video/vlc_portable

VLC Media Player Portable 是一套支援多平台的免費軟體,能直接播放各種類型的串流影片(線上直接播放),連像是用 P2P 下載未完成的影片都能播放

從官網下載後的 EXE 檔可用 WinRAR 來解開,醬就是綠色免安裝版。若要播放影片時,可以用檔案開啟的方式來選擇,它也能調整視窗的尺寸大小來改變影片的尺寸

不過,當我要直接拖拉時間軸時,影片就無法播放了,不知道這是不是Bug

4‧Wimpy Standalone FLV Player

官方網站:http://www.wimpyplayer.com/

檔案下載位置:http://www.wimpyplayer.com/products/wimpy_standalone_flv_player.html

Wimpy Standalone FLV Player 是一個免費免安裝綠色播放軟體

使用的方法跟前幾個差不多,都只要把要播放的 FLV 影片拖曳到視窗中或是用開啟檔案的方式都可以。它也能透過調整視窗大小來改變影片播放的尺寸

不過就這四個播放軟體來說的話,Wimpy Standalone FLV Player 是唯一個能用全螢幕(視窗放到最大)的方式來播放的

這邊也老王賣瓜一下,若要找出線上影片 FLV 的真實路徑的話,可以參考FLV Video Parser - Web 版FLV Video Parser 原始路徑解碼器這兩篇文章。

posted @ 11:05 AM | Feedback (15)

Monday, March 05, 2007 #

小弟寫了幾個論壇的查詢器,像是:微風查詢器、艾噹洛查詢器或是PLus查詢器,這原本是為了方便權限不夠的使用者來查詢文章用,不過發現蠻多人不知道如何使用(除了那些從微風查詢器 0.1 Beta一直用到現在的人...),所以索性就自己來寫個使用的教學文章。

原本是用VB來寫查詢器,而現在改用REALbasic來寫,因此整個程式的操作跟畫面都重新改寫了,以後也會都改成用REALbasic來寫,畫面也大概是會用新版程式的,所以教學就只針對新版的程式,舊版的會慢慢的更新淘汰掉。

程式的畫面說明如下:

目前程式的功能頁籤有:搜尋條件設定搜尋結果更新索引檔關於

而畫面中的版本檢查會自動檢查有無最新版本,若有的話則會以紅色字樣顯示說明有新版本,點擊這一塊的話,會開啟網頁連結到官方去;另外的訊息公告則只是跟程式相關的訊息顯示。

要注意的是,若索引資料檔中沒資料的話,在資料總筆數這邊會顯示0筆,當然也就查不到任何資料!

而使用查詢器最主要的步驟是:

先選擇要搜查範圍預設是查詢全部有開放的版塊,若不要查詢那麼多的版塊的話,可以自己點選要查詢的版塊,可多選N個。

接著在關鍵字輸入框中輸入要查詢的字,例如:window。若要查詢多個關鍵字的話,就用空格來隔開關鍵字,例如:window 查詢器。

輸入完關鍵字後,按下"ENTER"就會進行查詢了(數字鍵盤上的ENTER也可以),等查詢完後會自動切到搜尋結果畫面:

搜尋結果畫面會顯示此次查詢出來的相關資料有幾筆,並且把資料列在下方

搜尋結果的查閱可以一次複選多筆(使用shift或是ctrl)。若連點兩下某一筆資料時,會用使用者預設的瀏覽器來開啟到微風中該篇文章的連結。也可以對該筆資料點右鍵來顯示功能選項,選項中的開啟連結就跟連點兩下是一樣的;而當使用者沒有微風帳號或是權限不足時,可以用讀取內容來查看文章內容;若點選開啟連結(內)的話,就會用程式中內建的簡易瀏覽器來開啟(支援多頁籤)

要注意的是,若使用者的瀏覽器有支援頁籤時,當用開啟連結及讀取內容來開啟網頁時,可能會直接開在你已經有的瀏覽器中。

程式所開啟的瀏覽器是以使用者預設的為主,不管是IE 6IE 7或是FireFox都支援。若有問題的話,可以使用內建的瀏覽器來瀏覽資料。

若要更新索引檔的話,就切換頁籤到更新索引檔的畫面:

論壇天天都會有新發表的文章,也許新文章量不大,不過若要查詢新文章時,原先舊的索引檔就會查不到了。這時我們可以來更新索引檔

更新的步驟是:

選擇要更新的版塊,若要更新全部的話,就勾選全部的單選框;若只要更新某些版塊的話(平時可能就只查那幾個版塊),就只要選擇想要更新的版塊就可以了。

選擇好的話,接下來按下開始執行鈕就會開始進行更新了。

更新的速度會依使用者的網路速度等因素而有所影響。若某一版塊的索引檔更新中的話,會在其最後更新日中顯示更新中...;更新好的話,會顯示更新完成的訊息。

要停止更新的話,就按停止執行鈕即可。

若想了解程式的相關訊息的話,可以切到關於的頁籤:

這邊會顯示程式名稱程式版本,也有作者的名字及其官方Blog使用教學(點擊後會自動開啟網頁連結)。最下面的是製作此程式的緣由

整個查詢器的使用還算簡單,若有任何問題或意見的話,請直接留言吧!

posted @ 12:56 PM | Feedback (1)

軟體名稱:微風查詢器
版本編號:1.2
檔案大小:3.89MB
語言介面:繁體中文
官方網站:http://blog.xuite.net/abgne/diary1
預覽圖:

說明簡介:
微風論壇設了很高的權限,像很基本的查詢功能都無法使用,要使用的話就要有5000以上的積分,或者是贊助500元來成為他們的貴賓。但不是每個人都有能力負擔的,所以當要找某東西時,就會顯得困難麻煩。

因此小弟就做了一個可以自動查詢的小程式。查詢完後可以直接連點該項目兩下,則會開啟瀏覽器連結到該頁面去。

現在多了建立索引的功能,這會把某版面的文章全部寫到資料庫去(abgne.db),這樣在查詢時,速度會比直接在微風上查詢的還快。微風其實每天新增的主題量並不大,所以可以幾天再重新建立一次索引檔就可以了。

目前已經做到了不管你的權限是新加入的會員、乞丐,甚至根本不是會員,都能透過程式來看到所查詢後的內容,只要查詢出來後,先點選要觀看的項目,接著點右鍵的"讀取內容"的選項後,就會開啟網頁來顯示該篇的發文內容了。

微風的管理群可能覺得這程式不會減少它們的流量損耗,不過我想聰明人應該能自己判斷是不是能減少。

版本更新:

1.2:
          1.搜尋條件設定畫面中加入一個"進行查詢"的按鈕。
          2.查詢完後,右鍵選單中新增一個"複製文章網址"的選項,可以複製一筆或多筆選取文章的網址。
          3.新增設定面版,目前只有字型大小的設定。
          4.修正解析的語法,以適用其它版本的Discuz!。
          5.修正停止更新時,訊息未更改之問題。
1.1:
          1.加入一個瀏覽器,讓某些瀏覽器有問題的網友來透過內建的瀏覽器瀏覽文章。
          2.查詢結果的瀏覽可支援一次瀏覽多筆資料(讀取內容的部份暫時只能一次一筆)。
          3.修正在查詢時,數字鍵盤上的Enter無作用的問題。
          4.修正一些介面上的操作問題。
          5.更新索引檔時會紀錄此次更新日期。
          6.修正查詢時按數字鍵盤上的Enter無效的問題。
1.0:
          1.整個程式改由使用REALbasic來製作。
          2.可一次查詢全部版塊或是自選單一或多個版塊來做查詢。
          3.索引檔的儲存改為使用資料庫,因此每次查詢速度約1秒左右。
          4.加入了可讓使用者自己更新索引檔的功能。
          5.修正了有些使用者在使用程式時會顯示亂碼的問題。
          6.修正原先只能使用IE來開啟文章頁面的問題,現在不管是什麼瀏覽器都支援。
          7.修正讀取內容後的一些HTML解析。
          8.還有一些雜七雜八的也都修正了。
....其它版本更新訊息請參考內附的說明文件。

有鑑於有些網友不知道如何下載,所以特別上傳檔案到國外的免費空間,檔案請選擇一個下載點下載即可:(下面有更新過的索引檔)
http://rapidshare.com/files/18554308/wefong.rar.html
http://www.badongo.com/file/2332572

心得:
從開始寫這程式到現在,也已經過了9個月了。有使用過0.1 Beta版的網友應該能了解到這程式的改變,從一開始查詢要花個幾分鐘,接著又加強到後來幾秒內,這期間其實是很大的改變。現在,一改之前的方式,查詢只要1~2秒內就能有結果了,說真的,這樣實用性真的變高了。

原本的程式是用VB來寫的,但為了讓程式能有更好的功能及使用性,我改用REALbasic來寫。REALbasic製作出來的執行檔雖然大很多,但至少也算是單一的綠色軟體了。

不管怎樣,若各位在使用上有任何問題或建議的話,請大膽的留言吧。

話說微風現在又多了一些遊樂場及寵物等的功能,這些功能無非是想消耗掉會員的積分,只要會員積分一低,為了享有原有的權限,就有可能去付費當貴賓!請要玩的人要三思啊!

下載檔案裡面的abgne.db是個資料庫檔案,一開始是沒有任何資料的,使用者可以自己來更新索引檔,不過最新(2007/02/26)的索引檔我已經建好了,各位可以直接下載解開後,覆蓋過去就可以直接來查了。
http://rapidshare.com/files/18370144/abgne.rar.html
http://www.badongo.com/file/2322845

另外,因原本檢查版本的檔案是放在Hinet的空間上,不過該空間被收回去了,所以舊版本就無法檢查版本是否有更新。就請各位使用者順便告知一下親朋好友囉!

posted @ 9:06 AM | Feedback (9)