個(gè)性化你的Windows 7 Taskbar Thumbnail
昨天看到How To Geek里的一篇文章, 里面有個(gè)小程序做得覺(jué)得挺有意思, 那個(gè)程序可以改變Windows 7的縮略圖大小, 縮略圖與縮略圖之間的距離, 以及上下左右的邊距, 甚至還可以設(shè)置鼠標(biāo)放到任務(wù)欄上多久顯示出縮略圖, 系統(tǒng)默認(rèn)的是400ms, 感覺(jué)有點(diǎn)慢, 我把它調(diào)成了1, 鼠標(biāo)一放上去就冒出縮略圖, 感覺(jué)非常的爽. 當(dāng)然這些都是靠更改注冊(cè)表完成的.
我把那個(gè)程序下載下來(lái), 用Reflector看一下那個(gè)程序, 終于知道是什么原理, 又花了好幾個(gè)小時(shí)實(shí)現(xiàn)了一遍, 當(dāng)然我寫的代碼肯定沒(méi)人家好, 人家是美國(guó)的MVP, 我只是個(gè)菜鳥(niǎo):)在這里把實(shí)現(xiàn)過(guò)程跟大家分享一下, 有哪些寫的不好的地方, 歡迎指教.
改變縮略圖后的大小(可以在這里面看電影了, 呵呵):
更改縮略圖的X-Spacing和Y-Spacing后(可以看到效果還是很明顯的):
程序的核心步驟:
在注冊(cè)表目錄HKEY_CURRENT_USER/Software/Microsoft/Windows /CurrentVersion/Explorer/Taskband下新建幾個(gè)鍵:MaxThumbSizePx, MinThumbSizePx, ThumbSpacingXPx, ThumbSpacingYPx, TopMarginPx, BottomMarginPx, LeftMarginPx, RightMarginPx 分別用于控制縮略圖尺寸, 兩個(gè)縮略圖直接的邊距, 還有縮略圖中內(nèi)容的上下左右邊距
在注冊(cè)表目錄HKEY_CURRENT_USER/Software/Microsoft/Windows/CurrentVersion/Explorer/Advanced下新建一個(gè)鍵: ExtendedUIHoverTime
它用于控制縮略圖顯示的延遲時(shí)間(單位是ms)
每次更改完注冊(cè)表的信息后, 要看到效果不需要重新開(kāi)機(jī), 只需要關(guān)閉explore.exe, 再重新打開(kāi)即可.
Private Sub btnApplySettings_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles btnApplySettings.ClickMy.Computer.Registry.SetValue(path, 'MaxThumbSizePx', Convert.ToInt32(maxSizeTrackBar.Value), RegistryValueKind.DWord)My.Computer.Registry.SetValue(path, 'MinThumbSizePx', Convert.ToInt32(miniSizeTrackBar.Value), RegistryValueKind.DWord)My.Computer.Registry.SetValue(path, 'ThumbSpacingXPx', Convert.ToInt32(xsTrackBar.Value), RegistryValueKind.DWord)My.Computer.Registry.SetValue(path, 'ThumbSpacingYPx', Convert.ToInt32(ysTrackBar.Value), RegistryValueKind.DWord)My.Computer.Registry.SetValue(path, 'TopMarginPx', Convert.ToInt32(tmTrackBar.Value), RegistryValueKind.DWord)My.Computer.Registry.SetValue(path, 'BottomMarginPx', Convert.ToInt32(bmTrackBar.Value), RegistryValueKind.DWord)My.Computer.Registry.SetValue(path, 'LeftMarginPx', Convert.ToInt32(lmTrackBar.Value), RegistryValueKind.DWord)My.Computer.Registry.SetValue(path, 'RightMarginPx', Convert.ToInt32(rmTrackBar.Value), RegistryValueKind.DWord)My.Computer.Registry.SetValue('HKEY_CURRENT_USER/Software/Microsoft/Windows/CurrentVersion/Explorer/Advanced', 'ExtendedUIHoverTime', Convert.ToInt32(dtTrackBar.Value), RegistryValueKind.DWord)'修改注冊(cè)表后,重啟explore.exeDim Explorers() As Process = Process.GetProcessesByName('explorer')For Each Explorer As Process In ExplorersExplorer.Kill()NextProcess.Start('explorer.exe')Explorers = NothingEnd Sub
不用擔(dān)心的是, 如果你設(shè)置這個(gè)設(shè)置那個(gè), 搞的很亂, 你可以恢復(fù)系統(tǒng)默認(rèn)值:
Private Sub btnRestoreDefaults_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles btnRestoreDefaults.ClickMy.Computer.Registry.SetValue(path, 'MaxThumbSizePx', 200, RegistryValueKind.DWord)My.Computer.Registry.SetValue(path, 'MinThumbSizePx', 200, RegistryValueKind.DWord)My.Computer.Registry.SetValue(path, 'ThumbSpacingXPx', 16, RegistryValueKind.DWord)My.Computer.Registry.SetValue(path, 'ThumbSpacingYPx', 16, RegistryValueKind.DWord)My.Computer.Registry.SetValue(path, 'TopMarginPx', 16, RegistryValueKind.DWord)My.Computer.Registry.SetValue(path, 'BottomMarginPx', 16, RegistryValueKind.DWord)My.Computer.Registry.SetValue(path, 'LeftMarginPx', 16, RegistryValueKind.DWord)My.Computer.Registry.SetValue(path, 'RightMarginPx', 16, RegistryValueKind.DWord)My.Computer.Registry.SetValue('HKEY_CURRENT_USER/Software/Microsoft/Windows/CurrentVersion/Explorer/Advanced', 'ExtendedUIHoverTime', 400, RegistryValueKind.DWord)maxSizeTextBox.Text = '200'miniSizeTextBox.Text = '200'xsTextBox.Text = '16'ysTextBox.Text = '16'tmTextBox.Text = '16'bmTextBox.Text = '16'lmTextBox.Text = '16'rmTextBox.Text = '16'dtTextBox.Text = '400''修改注冊(cè)表后,重啟explore.exeDim Explorers() As Process = Process.GetProcessesByName('explorer')For Each Explorer As Process In ExplorersExplorer.Kill()NextProcess.Start('explorer.exe')Explorers = NothingEnd Sub
主要的代碼就是這樣, 下面是程序中所有的代碼:
Imports Microsoft.Win32
Public Class mainFormDim path As String = 'HKEY_CURRENT_USER/Software/Microsoft/Windows/CurrentVersion/Explorer/Taskband'Private Sub textBox_KeyPress(ByVal sender As Object, ByVal e As System.Windows.Forms.KeyPressEventArgs)'這個(gè)函數(shù)的功能是判斷按下的鍵是否為數(shù)字或者Backspace鍵If (e.KeyChar < '0' Or e.KeyChar > '9') Thene.Handled = TrueIf Convert.ToInt32(e.KeyChar).Equals(8) Thene.Handled = FalseEnd IfElsee.Handled = FalseEnd IfEnd Sub 'KeyPress函數(shù)Private Sub txtBox_TextChanged(ByVal txtBox As TextBox, ByVal trackBar As TrackBar)'TextBox里的值發(fā)生變化后'如果值不為空If txtBox.Text <> '' Then'滑動(dòng)條的值等于文本框內(nèi)的數(shù)值TrytrackBar.Value = txtBox.TextIf trackBar.Value > 512 Then '如果滑動(dòng)條的值超過(guò)512則拋出一個(gè)異常Throw New ExceptionEnd IfCatch ex As ExceptiontrackBar.Value = 512txtBox.Text = '512'End TryEnd If'如果值為空If txtBox.Text = '' Then'滑動(dòng)條的值置為0,文本框的值置為空trackBar.Value = 0txtBox.Text = ''End IfEnd Sub 'TextChanged函數(shù)Private Sub trackBar_ValueChanged(ByVal txtBox As TextBox, ByVal tracBar As TrackBar)'當(dāng)滑動(dòng)條數(shù)值變化時(shí),文本框里的數(shù)值始終和滑動(dòng)條值相等txtBox.Text = tracBar.ValueEnd Sub 'TrackBarValueChanged函數(shù)Private Sub btnApplySettings_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles btnApplySettings.ClickMy.Computer.Registry.SetValue(path, 'MaxThumbSizePx', Convert.ToInt32(maxSizeTrackBar.Value), RegistryValueKind.DWord)My.Computer.Registry.SetValue(path, 'MinThumbSizePx', Convert.ToInt32(miniSizeTrackBar.Value), RegistryValueKind.DWord)My.Computer.Registry.SetValue(path, 'ThumbSpacingXPx', Convert.ToInt32(xsTrackBar.Value), RegistryValueKind.DWord)My.Computer.Registry.SetValue(path, 'ThumbSpacingYPx', Convert.ToInt32(ysTrackBar.Value), RegistryValueKind.DWord)My.Computer.Registry.SetValue(path, 'TopMarginPx', Convert.ToInt32(tmTrackBar.Value), RegistryValueKind.DWord)My.Computer.Registry.SetValue(path, 'BottomMarginPx', Convert.ToInt32(bmTrackBar.Value), RegistryValueKind.DWord)My.Computer.Registry.SetValue(path, 'LeftMarginPx', Convert.ToInt32(lmTrackBar.Value), RegistryValueKind.DWord)My.Computer.Registry.SetValue(path, 'RightMarginPx', Convert.ToInt32(rmTrackBar.Value), RegistryValueKind.DWord)My.Computer.Registry.SetValue('HKEY_CURRENT_USER/Software/Microsoft/Windows/CurrentVersion/Explorer/Advanced', 'ExtendedUIHoverTime', Convert.ToInt32(dtTrackBar.Value), RegistryValueKind.DWord)'修改注冊(cè)表后,重啟explore.exeDim Explorers() As Process = Process.GetProcessesByName('explorer')For Each Explorer As Process In ExplorersExplorer.Kill()NextProcess.Start('explorer.exe')Explorers = NothingEnd Sub#Region 'KeyPress_Events'Private Sub maxSizeTextBox_KeyPress(ByVal sender As Object, ByVal e As System.Windows.Forms.KeyPressEventArgs) Handles maxSizeTextBox.KeyPresstextBox_KeyPress(maxSizeTextBox, e)End SubPrivate Sub miniSizeTextBox_KeyPress(ByVal sender As System.Object, ByVal e As System.Windows.Forms.KeyPressEventArgs) Handles miniSizeTextBox.KeyPresstextBox_KeyPress(miniSizeTextBox, e)End SubPrivate Sub xsTextBox_KeyPress(ByVal sender As System.Object, ByVal e As System.Windows.Forms.KeyPressEventArgs) Handles xsTextBox.KeyPresstextBox_KeyPress(xsTextBox, e)End SubPrivate Sub ysTextBox_KeyPress(ByVal sender As System.Object, ByVal e As System.Windows.Forms.KeyPressEventArgs) Handles ysTextBox.KeyPresstextBox_KeyPress(ysTextBox, e)End SubPrivate Sub tmTextBox_KeyPress(ByVal sender As System.Object, ByVal e As System.Windows.Forms.KeyPressEventArgs) Handles tmTextBox.KeyPresstextBox_KeyPress(tmTextBox, e)End SubPrivate Sub bmTextBox_KeyPress(ByVal sender As System.Object, ByVal e As System.Windows.Forms.KeyPressEventArgs) Handles bmTextBox.KeyPresstextBox_KeyPress(bmTextBox, e)End SubPrivate Sub lmTextBox_KeyPress(ByVal sender As System.Object, ByVal e As System.Windows.Forms.KeyPressEventArgs) Handles lmTextBox.KeyPresstextBox_KeyPress(lmTextBox, e)End SubPrivate Sub rmTextBox_KeyPress(ByVal sender As System.Object, ByVal e As System.Windows.Forms.KeyPressEventArgs) Handles rmTextBox.KeyPresstextBox_KeyPress(rmTextBox, e)End SubPrivate Sub dtTextBox_KeyPress(ByVal sender As System.Object, ByVal e As System.Windows.Forms.KeyPressEventArgs) Handles dtTextBox.KeyPresstextBox_KeyPress(dtTextBox, e)End Sub#End Region#Region 'TextBox_Changed'Private Sub miniSizeTextBox_TextChanged(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles miniSizeTextBox.TextChangedtxtBox_TextChanged(miniSizeTextBox, miniSizeTrackBar)End SubPrivate Sub maxSizeTextBox_TextChanged(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles maxSizeTextBox.TextChangedtxtBox_TextChanged(maxSizeTextBox, maxSizeTrackBar)End SubPrivate Sub xsTextBox_TextChanged(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles xsTextBox.TextChangedtxtBox_TextChanged(xsTextBox, xsTrackBar)End SubPrivate Sub ysTextBox_TextChanged(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles ysTextBox.TextChangedtxtBox_TextChanged(ysTextBox, ysTrackBar)End SubPrivate Sub tmTextBox_TextChanged(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles tmTextBox.TextChangedtxtBox_TextChanged(tmTextBox, tmTrackBar)End SubPrivate Sub bmTextBox_TextChanged(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles bmTextBox.TextChangedtxtBox_TextChanged(bmTextBox, bmTrackBar)End SubPrivate Sub lmTextBox_TextChanged(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles lmTextBox.TextChangedtxtBox_TextChanged(lmTextBox, lmTrackBar)End SubPrivate Sub rmTextBox_TextChanged(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles rmTextBox.TextChangedtxtBox_TextChanged(rmTextBox, rmTrackBar)End SubPrivate Sub dtTextBox_TextChanged(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles dtTextBox.TextChangedIf dtTextBox.Text <> '' Then'Delay Time最大值是9999TrydtTrackBar.Value = dtTextBox.TextIf dtTrackBar.Value > 9999 ThenThrow New ExceptionEnd IfCatch ex As ExceptiondtTrackBar.Value = 512dtTextBox.Text = '512'End TryEnd If'如果值為空If dtTextBox.Text = '' ThendtTrackBar.Value = 0dtTextBox.Text = ''End IfEnd Sub#End Region#Region 'TrackBar_Changed'Private Sub maxSizeTrackBar_ValueChanged(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles maxSizeTrackBar.ValueChangedtrackBar_ValueChanged(maxSizeTextBox, maxSizeTrackBar)End SubPrivate Sub miniSizeTrackBar_ValueChanged(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles miniSizeTrackBar.ValueChangedtrackBar_ValueChanged(miniSizeTextBox, miniSizeTrackBar)End SubPrivate Sub xsTrackBar_ValueChanged(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles xsTrackBar.ValueChangedtrackBar_ValueChanged(xsTextBox, xsTrackBar)End SubPrivate Sub ysTrackBar_ValueChanged(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles ysTrackBar.ValueChangedtrackBar_ValueChanged(ysTextBox, ysTrackBar)End SubPrivate Sub tmTrackBar_ValueChanged(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles tmTrackBar.ValueChangedtrackBar_ValueChanged(tmTextBox, tmTrackBar)End SubPrivate Sub bmTrackBar_ValueChanged(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles bmTrackBar.ValueChangedtrackBar_ValueChanged(bmTextBox, bmTrackBar)End SubPrivate Sub lmTrackBar_ValueChanged(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles lmTrackBar.ValueChangedtrackBar_ValueChanged(lmTextBox, lmTrackBar)End SubPrivate Sub rmTrackBar_ValueChanged(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles rmTrackBar.ValueChangedtrackBar_ValueChanged(rmTextBox, rmTrackBar)End SubPrivate Sub dtTrackBar_ValueChanged(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles dtTrackBar.ValueChangedtrackBar_ValueChanged(dtTextBox, dtTrackBar)End Sub#End RegionPrivate Sub btnRestoreDefaults_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles btnRestoreDefaults.ClickMy.Computer.Registry.SetValue(path, 'MaxThumbSizePx', 200, RegistryValueKind.DWord)My.Computer.Registry.SetValue(path, 'MinThumbSizePx', 200, RegistryValueKind.DWord)My.Computer.Registry.SetValue(path, 'ThumbSpacingXPx', 16, RegistryValueKind.DWord)My.Computer.Registry.SetValue(path, 'ThumbSpacingYPx', 16, RegistryValueKind.DWord)My.Computer.Registry.SetValue(path, 'TopMarginPx', 16, RegistryValueKind.DWord)My.Computer.Registry.SetValue(path, 'BottomMarginPx', 16, RegistryValueKind.DWord)My.Computer.Registry.SetValue(path, 'LeftMarginPx', 16, RegistryValueKind.DWord)My.Computer.Registry.SetValue(path, 'RightMarginPx', 16, RegistryValueKind.DWord)My.Computer.Registry.SetValue('HKEY_CURRENT_USER/Software/Microsoft/Windows/CurrentVersion/Explorer/Advanced', 'ExtendedUIHoverTime', 400, RegistryValueKind.DWord)maxSizeTextBox.Text = '200'miniSizeTextBox.Text = '200'xsTextBox.Text = '16'ysTextBox.Text = '16'tmTextBox.Text = '16'bmTextBox.Text = '16'lmTextBox.Text = '16'rmTextBox.Text = '16'dtTextBox.Text = '400''修改注冊(cè)表后,重啟explore.exeDim Explorers() As Process = Process.GetProcessesByName('explorer')For Each Explorer As Process In ExplorersExplorer.Kill()NextProcess.Start('explorer.exe')Explorers = NothingEnd SubPrivate Sub mainForm_Load(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles MyBase.LoadmaxSizeTextBox.Text = '200'miniSizeTextBox.Text = '200'xsTextBox.Text = '16'ysTextBox.Text = '16'tmTextBox.Text = '16'bmTextBox.Text = '16'lmTextBox.Text = '16'rmTextBox.Text = '16'dtTextBox.Text = '400'On Error Resume NextmaxSizeTextBox.Text = My.Computer.Registry.GetValue(path, 'MaxThumbSizePx', Nothing).ToStringminiSizeTextBox.Text = My.Computer.Registry.GetValue(path, 'MinThumbSizePx', Nothing).ToString()xsTextBox.Text = My.Computer.Registry.GetValue(path, 'ThumbSpacingXPx', Nothing).ToString()ysTextBox.Text = My.Computer.Registry.GetValue(path, 'ThumbSpacingYPx', Nothing).ToString()tmTextBox.Text = My.Computer.Registry.GetValue(path, 'TopMarginPx', Nothing).ToString()bmTextBox.Text = My.Computer.Registry.GetValue(path, 'BottomMarginPx', Nothing).ToString()lmTextBox.Text = My.Computer.Registry.GetValue(path, 'LeftMarginPx', Nothing).ToString()rmTextBox.Text = My.Computer.Registry.GetValue(path, 'RightMarginPx', Nothing).ToString()dtTextBox.Text = My.Computer.Registry.GetValue('HKEY_CURRENT_USER/Software/Microsoft/Windows/CurrentVersion/Explorer/Advanced', 'ExtendedUIHoverTime', Nothing).ToStringEnd SubEnd Class
程序界面:
出處:http://www.cnblogs.com/technology/
本文示例源代碼或素材下載
相關(guān)文章:
