none
vb6中,當出現error時,自動抓畫面是否可行? RRS feed

  • 問題

  • 在vb6中,我們常會在程式中加上on error,若遇到問題,user就會看到錯誤訊息,但有時會將畫面按掉,而錯誤狀況又未必能重演,

    我有個idea, 不知是否可行?

    就是: 在程式中設定類似如下:

    on error goto err1
    .....
    err1:
    RetVal = Shell("C:\抓畫面軟體.EXE", 1)
    MsgBox "訊息..., 請將錯誤畫面 c:\XXX.jpg 傳給MIS參考"

    -----------

    問題:

    1. 各位認為有沒有必要這樣做?

    2. 抓畫面軟體,必須一執行(或下參數)就能抓畫面,不必再按hot key, 且能自動存檔(取檔名), 不知有沒有這種軟體?

    3. vb執行外部程式我沒寫過,不知是否用shell()即可? 

    網上找了一下,若shell()可行,又為何會有更複雜的方式?

    如: http://blog.blueshop.com.tw/hammerchou/articles/24316.aspx

     

    請教各位高手,thanks!
    2008年4月10日 上午 05:55

解答

所有回覆

  • 我是覺得錯誤發生除了跳出訊息框之外,加上輸出log,輸出到文字檔就可以了,可以輸出錯誤訊息,發生錯誤的位址等等資訊,方便除錯;去抓畫面比較麻煩,而且感覺上效果是一樣的。

    2008年4月10日 上午 06:17
    版主
  • 感謝指教,我之所以要抓畫面,原因:

    1. 所謂一圖勝千文,有時可參考出錯處的其他相關地方,以利判斷

    2. MS的錯誤訊息有時會文不對題,易造成誤判!

    3. 抓畫面,並非要取代抓訊息,我是想要並行,err好像無法得知錯誤程式的列號,所以有人寫程式,乾脆不用on error, 出錯才能知道是哪一列程式。

    ----------

    我曾嘗試寫一程式去抓畫面,但無效,如下:

    難道一定要用API? 或用C寫一函式? (我還不會)
    請教高手,thanks!
    2008年4月11日 上午 03:20
  • 用了 On Error 就表示有錯誤捕捉常式,就不會跳出錯誤訊息盒。那你到底要抓啥畫面?

     

    你的邏輯怪怪的。

    2008年4月11日 上午 03:28
    版主
  • 感謝指教,所謂抓畫面,是指抓全螢幕的畫面,好像按print screen一樣。(見:所附程式)

    目的: 有時可參考出錯處和其他相關地方,以利判斷。或者有時無法還原第一現場(如:某些資料已處理完)
    2008年4月11日 上午 06:54
  •  璉璉 寫信:

    用了 On Error 就表示有錯誤捕捉常式,就不會跳出錯誤訊息盒。那你到底要抓啥畫面?

     

    你的邏輯怪怪的。

     

    璉璉說的沒有錯

    用On Error在發生錯誤的時候,會進到你的除錯步驟

    不過你可以在On Error的地方,先Show錯誤訊息盒,然後在用SendKeys "{%PRTSC}"將訊息變成圖片暫存在記憶體中。

    接著你在把記憶體內容轉成圖檔發送EMAIL就可以了

    給你參考用用。

    2008年4月14日 上午 09:08
  • 感謝指教!

    1. 既然有大大一直認為沒有必要用在on error, 那可否把題目改成: 純討論:如何抓畫面? 謝謝

    2. SendKeys "{%PRTSC}" 不能用,請見VB6 help:

    附註 您不能用 SendKeys 來送出按鍵訊息到一個並非設計在 Microsoft Windows 下執行的應用程式。Sendkeys 也無法送出 PRINT SCREEN 按鍵{PRTSC} 到任何應用程式。

    ----------

    覺得奇怪的是:既然說不能用,那為何help中的按鍵列表,又要列出:

    PRINT SCREEN {PRTSC}

     

    那是何時可用? 有點矛盾...

    2008年4月15日 上午 04:19
  • VB6的可以到VB入門網->個個擊破,用全文檢索搜尋關鍵字"Shot",就可以找到範例了

    VB入門網

    http://www.vbguide.com.tw/webback2.asp

     

    而.Net的版本有璉大的可以參考

    GetScreenShot

    http://tlcheng.twbbs.org/TLCheng/Net/NetList.aspx?Action=Function&Module=25&Function=202

    之前的討論

    http://forums.microsoft.com/msdn-cht/ShowPost.aspx?PostID=2456043&SiteID=14

    2008年4月15日 上午 04:58
    版主
  • 感謝bauann大大指點迷津! 真的可行。

    不過今天又碰到user反應一個錯誤訊息: 「執行階段錯誤'3704':當物件關閉時,不允許操作。」

    問題是第一次發生,刻意去測,又正常...苦惱啊!

    聽說是某個recordset.close以後,又去叫它做事,才會出現的。

    看程式,也看不出什麼碗糕問題。

    看來,用on error和抓畫面,都不能幫我抓到凶手,只有用絕招....

    在user client端裝VB, 叫她們用vb來run ap, 如果再出錯,就可以按Ctrl-Break看到底是哪一列程式了...

    哈...不會真要我這樣做吧...

    那要如何讓user點桌面上捷徑,就可以開ap.vbp ,並且執行呢?

    2008年4月15日 上午 05:58