2012年2月1日 星期三

[VB.net]控制項的繼承

先建立一個新的表單,然後"專案"→"加入新項目"→選擇"類別",
建立一個Class1.vb

以下是範例原始碼:
Class1.vb
Public Class Class1
    Inherits TextBox '繼承TextBox
    Public Sub msg(ByVal x As String) '建立一個Class1的方法
        MsgBox(x) '顯示MsgBox
    End Sub
End Class
 
 
Form1.vb
Public Class Form1
    Private Sub Button1_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button1.Click
        Dim Class11 As New Class1
        Class11.Text = "Hello! VB2005." '在Class1顯示文字
        Dim x As String = Class11.Text
        Class11.msg(x) '會跑出MsgBox(新增的方法,並非TextBox原本有的方法)
    End Sub
End Class
 
正常情況下,先輸入完所有程式碼之後,
你會在工具箱的最上面找到Class1元件,把他拉到表單。還要拉個Button元件。
原本Textbox控制項並沒有自動跑出MsgBox的方法,
但是建立Class1物件後,繼承自TextBox,所以可以當成TextBox用,
又有了Class1的新增功能,所以當按下Button1之後,就會跑出MsgBox囉!
(不過到底要怎麼讓工具箱裡面會自動出現Class1元件阿...
有的時候他不會自動出現....)

轉載:

[教學] [VB.net]控制項的繼承


2012年1月31日 星期二

WINDOWS XP 的重新封裝



如果要以 Ghost 來製作備份影像檔是需要先執行一個在 Windows XP 上名為系統準備工具』( SYSPREP ) 的程式因為在每一部安裝 Windows XP 系統的電腦上均需要有一個獨一無二的安全性識別碼 ( SID )如用一般 Ghost 備份方式製作出來的備份影像檔是無法為每部被複製還原的電腦各自製作一個安全性識別碼所以在建立備份影像檔前應先執行 Windows XP 上的 SYSPREP 工具程式把 Windows XP 重新封裝
而在欲建立備份影像檔的 Windows XP 電腦上開啟進入 Windows XP 光碟片中的 \SUPPORT\TOOLS 資料夾,把當中的 DEPLOY.CAB 檔案解壓縮至新建的C:\sysprep 資料夾內





解壓縮後應該有十個檔案,執行當中的 sysprep.exe 檔案,啟動進入『系統準備工具』程式。
 接下來

 接著按上方的『重新封裝』結束程式。此時會出現警告視窗,按確定後電腦便會自動關機,關機後大家便可以使用一般 Ghost 備份方式來進行備份工作。

不過以上是一般網路流傳的方式,真正的作法應該先執行 setupmgr.exe,並按精靈一步一步即可完成。
  
選擇建立新的回應檔案
  
選擇sysprep安裝

 選擇您的xp版本

 選擇完全自動化安裝

 輸入名稱、顯示設定、時區


 輸入正確序號
 

 看自己是否加入密碼
 自已修改群組、選擇語言






 完成自動回應檔的設定


 最後您再執行sysprep.exe進行winxp的重新封裝即可


 

 重新開機,執行ghost進行xp的備份,再燒成光碟即可,如此您做出來的備份光碟在完成還原的時候便會自動完成MiniSetup PnP 的動作,透過封裝還原的好處,就不必提了,還原後只需安裝該台電腦的驅動程式即可,原本的軟體依然健在

PS.封裝前一定要用 類似keyfinder的軟體將產品金鑰記下,封裝後還需輸入金鑰及安裝驅動。



VB.NET多國語言程式 - 已開啟表單的語系切換範例

今天實做Form在開啟狀態下切換語系,如下面兩張圖。
我所使用的讀檔方式是採用ini的讀取方式,並建立兩個ini檔,分別為中文test.CHT與英文test.ENG
當我按中文時,從中文檔讀入
當我按英文時,從英文檔讀入
 

程式如下:
程式中透過按鈕設定路徑,並透過副程式的呼叫執行檔案的讀取,範例如下

Imports System.Text
Imports System.Runtime.InteropServices
Public Class Form1

    Dim pathA As String = ""


    Public Declare Function GetPrivateProfileString Lib "kernel32" _
     Alias "GetPrivateProfileStringA" ( _
     <MarshalAs(UnmanagedType.LPStr)> ByVal lpApplicationName As String, _
     <MarshalAs(UnmanagedType.LPStr)> ByVal lpKeyName As String, _
     <MarshalAs(UnmanagedType.LPStr)> ByVal lpDefault As String, _
     <MarshalAs(UnmanagedType.LPStr)> ByVal lpReturnedString As StringBuilder, _
     ByVal nSize As UInt32, _
     <MarshalAs(UnmanagedType.LPStr)> ByVal lpFileName As String) As UInt32
    Public Declare Function WritePrivateProfileString Lib "kernel32" _
     Alias "WritePrivateProfileStringA" ( _
     <MarshalAs(UnmanagedType.LPStr)> ByVal lpApplicationName As String, _
     <MarshalAs(UnmanagedType.LPStr)> ByVal lpKeyName As String, _
     <MarshalAs(UnmanagedType.LPStr)> ByVal lpReturnedString As StringBuilder, _
     <MarshalAs(UnmanagedType.LPStr)> ByVal lpFileName As String) As UInt32
    Dim sKeyValue As New StringBuilder(1024)
    Dim nSize As UInt32 = Convert.ToUInt32(1024)
    Dim sinifilename As String = Application.StartupPath & pathA    '讀檔檔名位置

    Public Sub renew()

        GetPrivateProfileString("City", "City_1", "", sKeyValue, nSize, Application.StartupPath & pathA)
        Label1.Text = sKeyValue.ToString
        GetPrivateProfileString("City", "City_2", "", sKeyValue, nSize, Application.StartupPath & pathA)
        Label2.Text = sKeyValue.ToString
        GetPrivateProfileString("City", "City_3", "", sKeyValue, nSize, Application.StartupPath & pathA)
        Label3.Text = sKeyValue.ToString
        GetPrivateProfileString("City", "City_4", "", sKeyValue, nSize, Application.StartupPath & pathA)
        Label4.Text = sKeyValue.ToString
        GetPrivateProfileString("City", "City_5", "", sKeyValue, nSize, Application.StartupPath & pathA)
        Label5.Text = sKeyValue.ToString

    End Sub

    Private Sub Button1_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button1.Click
        pathA = "\\test.CHT"
        Call renew()
    End Sub

    Private Sub Button2_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button2.Click
        pathA = "\\test.ENG"
        Call renew()
    End Sub
End Class


 



2012年1月12日 星期四

VB.Net-如何以程式設計方式隱藏及取消隱藏 Windows 工作列(分享)

網路上找到的可以消除工作列的一種方式


Dim handleW1 As Long

Private Declare Function FindWindowA Lib "user32" _
   (ByVal lpClassName As String, _
   ByVal lpWindowName As String) As Long

Private Declare Function SetWindowPos Lib "user32" _
   (ByVal handleW1 As Long, _
   ByVal handleW1InsertWhere As Long, ByVal w As Long, _
   ByVal x As Long, ByVal y As Long, ByVal z As Long, _
   ByVal wFlags As Long) As Long

Const TOGGLE_HIDEWINDOW = &H80
Const TOGGLE_UNHIDEWINDOW = &H40

Function HideTaskbar()
   handleW1 = FindWindowA("Shell_traywnd", "")
   Call SetWindowPos(handleW1, 0, 0, 0, 0, 0, TOGGLE_HIDEWINDOW)
End Function

Function UnhideTaskbar()
   Call SetWindowPos(handleW1, 0, 0, 0, 0, 0, TOGGLE_UNHIDEWINDOW)
End Function