史萊姆論壇

史萊姆論壇 (http://forum.slime.com.tw/)
-   程式語言討論區 (http://forum.slime.com.tw/f76.html)
-   -   一些VB問題 (http://forum.slime.com.tw/thread252168.html)

sob790717b 2009-08-31 11:41 AM

一些VB問題
 
開發環境:VB6


1.如何解決一個程式視窗多開後都按右上角X鈕關閉時 程式實際上還在運作
但視窗已不可見

2.如果要寫一個檢查程式有沒有更新的機制 有沒有方法是對於新手較易學的
程式的更新檔是放在 http 協定的空間裡



請各位程式高手大大教導

飛行船大大 2009-08-31 03:20 PM

引用:

作者: sob790717b (文章 2186973)
開發環境:VB6


1.如何解決一個程式視窗多開後都按右上角X鈕關閉時 程式實際上還在運作
但視窗已不可見

2.如果要寫一個檢查程式有沒有更新的機制 有沒有方法是對於新手較易學的
程式的更新檔是放在 http 協定的空間裡



請各位程式高手大大教導

ans1. 程式實際上還在運作 , 有好幾種情形都會引起有這 情況. (至少有3~4種)
在不同情況有不同修改寫法 還得看源碼, 因為源碼必須調整, 所以你提問的不清楚 !
病人問:" 我發燒了, 請問我該吃?藥"
醫生: "發燒是症狀 , 無法反推你到底是生?病 ,不能用猜的 "

ans2. 網路上有些範例, 你可以去抓下來參考 , 檢查更新版本號, 這一類又可區分2大類
你問 的是第1類 ,大至寫法是 如此 (這已經是最簡單的了)
1.從某固定的網址(http://.... ) ,下載後 檔名(例如 a.htm)
2.分析a.htm 得到網路上的版本號bbb.xxx.xxx 和 下載的網址( http://xxx.....)
3 與 .exe 的版本號 進行比較
4. 若 a.htm 版本號bbb.xxx.xxx 比較新,就 依 (http://xxx.....) 下載 , 下載後 檔名(例如 temp.exe)
5. (a)提示 user 結束目前程式. 重新執行安裝新版temp.exe
(b)如果要寫的比較好一點 , 就 不必結束目前程式. 直接重新執行安裝新版temp.exe 進行換版


ps :A.下載程序大都是用inet 比較易寫易維護 (winsock也可 )
B.你還要注意一點 : 放a.htm 的網站千奇百怪 .經常都會 對你上傳的a.htm 寫入一些有的沒有的資料.
所以 過了一陣子,若網頁有變 . 所以會引起網址分析出錯變成無法下載到.exe , 你就得重新改寫你的源碼 and 重link 來配合. 切要!

第2類 ,是用網路激活 ,方式雖類似 但是設計困難度較高 , 此法可以有效防止軟體被破解.
就算軟體被修改, 正確的註冊資料仍舊在設計師指定的網路位置. 軟體一比對 若發現不符合就拒絕執行了. 防毒軟體大都採取此種設計.( 我上次貼的人脈名片管理也屬此種)

sob790717b 2009-09-01 12:57 AM

引用:

作者: 飛行船大大 (文章 2187023)
ans1. 程式實際上還在運作 , 有好幾種情形都會引起有這 情況. (至少有3~4種)
在不同情況有不同修改寫法 還得看源碼, 因為源碼必須調整, 所以你提問的不清楚 !
病人問:" 我發燒了, 請問我該吃?藥"
醫生: "發燒是症狀 , 無法反推你到底是生?病 ,不能用猜的 "

ans2. 網路上有些範例, 你可以去抓下來參考 , 檢查更新版本號, 這一類又可區分2大類
你問 的是第1類 ,大至寫法是 如此 (這已經是最簡單的了)
1.從某固定的網址(http://.... ) ,下載後 檔名(例如 a.htm)
2.分析a.htm 得到網路上的版本號bbb.xxx.xxx 和 下載的網址( http://xxx.....)
3 與 .exe 的版本號 進行比較
4. 若 a.htm 版本號bbb.xxx.xxx 比較新,就 依 (http://xxx.....) 下載 , 下載後 檔名(例如 temp.exe)
5. (a)提示 user 結束目前程式. 重新執行安裝新版temp.exe
(b)如果要寫的比較好一點 , 就 不必結束目前程式. 直接重新執行安裝新版temp.exe 進行換版


ps :A.下載程序大都是用inet 比較易寫易維護 (winsock也可 )
B.你還要注意一點 : 放a.htm 的網站千奇百怪 .經常都會 對你上傳的a.htm 寫入一些有的沒有的資料.
所以 過了一陣子,若網頁有變 . 所以會引起網址分析出錯變成無法下載到.exe , 你就得重新改寫你的源碼 and 重link 來配合. 切要!

第2類 ,是用網路激活 ,方式雖類似 但是設計困難度較高 , 此法可以有效防止軟體被破解.
就算軟體被修改, 正確的註冊資料仍舊在設計師指定的網路位置. 軟體一比對 若發現不符合就拒絕執行了. 防毒軟體大都採取此種設計.( 我上次貼的人脈名片管理也屬此種)

第一個問題我提供原始碼給您查看喔..

自行編譯後執行程式 然後點那個關於 開啟新視窗

然後都點右上X鈕關閉視窗

http://www.funp.net/127961

sob790717b 2009-09-01 01:58 AM

http://img19.imageshack.us/img19/9494/96345501.th.jpg

INET 無法使用:on_77:
我是使用VB6普及版的
跟這問題有關聯嗎

mini 2009-09-01 02:19 PM

關於第一個問題
你可以在 Form1 的 Unload事件 ( Private Sub Form_Unload )
加上一句
Unload Form10
程式碼
(也可試試 使用 End)

因為你的程式是由
Form10當進入點
之後
只是把 Form10視窗隱藏起來而已 ( Form10.Hide)
所以
當你關閉 Form1時
Form10其實還在執行


而你製作的按鈕 [離開程式(&X)]

使用了 End,其描述如下
End 陳述式可以強制程式碼終止,無須經過 Unload、QueryUnload,或 Terminate 事件,或任何其它的 Visual Basic 程式碼。Unload、QueryUnload,表單與物件類別模組的 Terminate 事件都不會執行。由物件類別模組所建立的物件會被破壞、以 Open 陳述式開啟的檔案會被關閉,程式所佔用的記憶體空間也會被釋放。

End 陳述式是一種強制程式停止執行的方式。一般要結束 Visual Basic 程式前,都必須先載出所有表單,確定沒有其它程式引用到其中的物件,且沒有執行中的程式碼,才能結束。

==========
總之 End 陳述式 是一種懶人用法就對了

飛行船大大 2009-09-01 04:32 PM

引用:

作者: sob790717b (文章 2187185)
http://img19.imageshack.us/img19/9494/96345501.th.jpg

INET 無法使用:on_77:
我是使用VB6普及版的
跟這問題有關聯嗎

mini大已 說明的很清楚.

既然你在主選單 要想直接用結束
那你form10 中改成以下2行 (這樣即可)
語法:

Private Sub Timer1_Timer()
  Unload Me
  Form1.Show
End Sub

其實在實際設計中我幾乎沒使用end,因系統設計大的時候 很容易發生bug
下面這個送你ㄅ, 改用CloseAllForms Me
語法:

Public Sub CloseAllForms(frmCaller As Form)
  ' 程式功能 : 關應用程式中 所有的forms . 目前的form最後才關
  ' 傳入參數 : frmCaller - 最後才關的form名稱
  ' 傳出    : 無
  ' 使用範例 :
  '        CloseAllForms Me
  Dim Frm As Form
 
  On Error GoTo PROC_ERR
  For Each Frm In Forms
      If Not Frm Is frmCaller Then
        Unload Frm
      End If
  Next
  Unload frmCaller
 
  Exit Sub
PROC_ERR:
  MsgBox "Error: " & Err.Number & ". " & Err.description, , "CloseAllForms"
End Sub

-
ps:普及版功能有限制. 上網找專業版的 bt種子ㄅ !

sob790717b 2009-09-02 02:52 AM

那INET 元件的問題我無法使用...

有沒有winsocket的範例呢:on_08:
另外關於飛行船大大說的下載ex.htm然後進行分析
藉此判斷是否版本不一樣
如果不一樣就提示使用者...

請問是著樣子的分析法?

因為我有一個 程式
要經常修正程式碼
想強迫使用者進行更新的動作

飛行船大大 2009-09-04 09:28 AM

引用:

作者: sob790717b (文章 2187382)
那INET 元件的問題我無法使用...

有沒有winsocket的範例呢:on_08:
另外關於飛行船大大說的下載ex.htm然後進行分析
藉此判斷是否版本不一樣
如果不一樣就提示使用者...

請問是著樣子的分析法?

因為我有一個 程式
要經常修正程式碼
想強迫使用者進行更新的動作

大陸網站範例比較多, 但你的普及版可能 mswinsck shdocvw msinet 全都沒辦法用.
所以你只剩1個方式 就是用API ,上網搜 "URLDownloadToFile" 就可以了.

sob790717b 2009-09-05 10:51 PM

有請A大或版主大大通融一下
我最近不能很常上史版... 程式撰寫問題也還沒完全搞定


有請幫忙留著文章
問題解決以後我會按已解決的:on_79:


所有時間均為台北時間。現在的時間是 01:09 PM

Powered by vBulletin® 版本 3.6.8
版權所有 ©2000 - 2025, Jelsoft Enterprises Ltd.

『服務條款』

* 有問題不知道該怎麼解決嗎?請聯絡本站的系統管理員 *


SEO by vBSEO 3.6.1