ชุมชนคนรักภาษาเบสิค - Visual Basic Community

 ลืมรหัสผ่าน
 ลงทะเบียน
ค้นหา
ดู: 497|ตอบกลับ: 0

[VB.NET] การล็อคและปลดล็อคโฟลเดอร์

[คัดลอกลิงก์]

311

กระทู้

502

โพสต์

6066

เครดิต

ผู้ดูแลระบบ

ทองก้อน ทับทิมกรอบ

Rank: 9Rank: 9Rank: 9

เครดิต
6066

โค้ดชุดนี้เป็น Demostrate เพื่อทำการทดสอบ การล็อคและปลดล็อคโฟลเดอร์ ในการแสดงผลของไฟล์ภาพออกมา โดยการใช้ Namespace System.Security ลักษณะการทำงาน คือเป็นการตั้งค่า Permission ด้วยโค้ดโปรแกรม ในการโหลดไฟล์ภาพมาแสดงผลจะต้องปลดล็อคโฟลเดอร์ก่อน จากนั้นก็ทำการล็อคโฟลเดอร์ใหม่อีกครั้ง ทำให้ไม่สามารถเปิดเข้าไปดูไฟล์ต่างๆในโฟลเดอร์ได้นั่นเอง ...



มาดูโค้ดกันเถอะ ...
  1. Imports System.IO
  2. Imports System.Security.AccessControl

  3. Public Class frmLockUnlockFolder

  4.     Dim strPath As String = Application.StartupPath.ToLower.Replace("bin\debug", "").Replace("bin\release", "") & "Images"

  5.     '// START HERE
  6.     Private Sub frmLockUnlockFolder_Load(sender As Object, e As System.EventArgs) Handles Me.Load
  7.         Label1.Text = ""
  8.         With PictureBox1
  9.             .SizeMode = PictureBoxSizeMode.StretchImage
  10.             .Image = Image.FromFile(strPath & "people.png") '\\ Initialize to show sample image.
  11.         End With
  12.         '// Start Lock or set permission with code.
  13.         Call LockFolder()
  14.     End Sub

  15.     '// Browse any folder.
  16.     Private Sub btnFolderBrowse_Click(sender As System.Object, e As System.EventArgs) Handles btnFolderBrowse.Click
  17.         Dim dlgFolderBrowse As New FolderBrowserDialog
  18.         dlgFolderBrowse.SelectedPath = strPath
  19.         '// If users select cancel then exit sub.
  20.         If dlgFolderBrowse.ShowDialog() = Windows.Forms.DialogResult.Cancel Then Exit Sub
  21.         '//
  22.         If Microsoft.VisualBasic.Right(dlgFolderBrowse.SelectedPath, 1) <> "" Then dlgFolderBrowse.SelectedPath = dlgFolderBrowse.SelectedPath & ""
  23.         strPath = dlgFolderBrowse.SelectedPath
  24.         Try
  25.             '// Create ImageList dynamically.
  26.             Dim img As New ImageList
  27.             With img
  28.                 .ImageSize = New Point(128, 128)
  29.                 .ColorDepth = ColorDepth.Depth32Bit
  30.             End With

  31.             '// Before displaying the image, the folder must be Unlock first.
  32.             Call UnlockFolder()

  33.             Dim itemFolder As New List(Of ListViewItem)
  34.             For Each imgFile In Directory.GetFiles(dlgFolderBrowse.SelectedPath.ToString())
  35.                 If imgFile.Contains(".png") Or imgFile.Contains(".jpg") Or imgFile.Contains(".bmp") Or imgFile.Contains(".gif") Then
  36.                     img.Images.Add(Image.FromFile(imgFile))
  37.                     itemFolder.Add(New ListViewItem(Path.GetFileName(imgFile)) With {.ImageIndex = img.Images.Count - 1})
  38.                 End If
  39.             Next
  40.             With ListView1
  41.                 .Items.Clear()
  42.                 .View = View.LargeIcon
  43.                 .LargeImageList = img
  44.                 .Items.AddRange(itemFolder.ToArray())
  45.             End With

  46.         Catch ex As Exception
  47.             MessageBox.Show(ex.Message, "Report Status", MessageBoxButtons.OK, MessageBoxIcon.Exclamation)
  48.         End Try
  49.         '// When the image is displayed then Lock the folder again.
  50.         Call LockFolder()
  51.     End Sub

  52.     Private Sub ListView1_MouseClick(sender As Object, e As System.Windows.Forms.MouseEventArgs) Handles ListView1.MouseClick
  53.         Dim item As ListViewItem = ListView1.HitTest(e.Location).Item
  54.         If item IsNot Nothing Then
  55.             Me.PictureBox1.Image = Image.FromFile(strPath & item.Text)
  56.             Label1.Text = "Image : " & strPath & item.Text
  57.         End If
  58.     End Sub

  59.     Private Sub ListView1_SelectedIndexChanged(sender As Object, e As System.EventArgs) Handles ListView1.SelectedIndexChanged
  60.         'For Each item As ListViewItem In ListView1.SelectedItems
  61.         'MessageBox.Show(item.Text)
  62.         'Next
  63.     End Sub

  64.     ' / ------------------------------------------------------------------------------------------
  65.     '// Set Permission for lock/unlock folder with code.
  66.     Private Sub LockFolder()
  67.         Dim fs As FileSystemSecurity = File.GetAccessControl(strPath)
  68.         fs.AddAccessRule(New FileSystemAccessRule(Environment.UserName, FileSystemRights.FullControl, AccessControlType.Deny))
  69.         File.SetAccessControl(strPath, fs)
  70.     End Sub

  71.     Private Sub UnlockFolder()
  72.         Dim fs As FileSystemSecurity = File.GetAccessControl(strPath)
  73.         fs.RemoveAccessRule(New FileSystemAccessRule(Environment.UserName, FileSystemRights.FullControl, AccessControlType.Deny))
  74.         File.SetAccessControl(strPath, fs)
  75.     End Sub
  76.     ' / ------------------------------------------------------------------------------------------

  77.     Private Sub frmLockUnlockFolder_FormClosed(sender As Object, e As System.Windows.Forms.FormClosedEventArgs) Handles Me.FormClosed
  78.         Call UnlockFolder()    '// Unlock before the end of the program.
  79.         Me.Dispose()
  80.         GC.SuppressFinalize(Me)
  81.         Application.Exit()
  82.     End Sub

  83.     Private Sub btnExit_Click(sender As System.Object, e As System.EventArgs) Handles btnExit.Click
  84.         Me.Close()
  85.     End Sub
  86. End Class
คัดลอกไปที่คลิปบอร์ด

ดาวน์โหลดโค้ดต้นฉบับ VB.NET (2010) ได้ที่นี่ ...

ขออภัย! โพสต์นี้มีไฟล์แนบหรือรูปภาพที่ไม่ได้รับอนุญาตให้คุณเข้าถึง

คุณจำเป็นต้อง ลงชื่อเข้าใช้ เพื่อดาวน์โหลดหรือดูไฟล์แนบนี้ คุณยังไม่มีบัญชีใช่ไหม? ลงทะเบียน

x
สิ่งที่ดีกว่าการให้ คือการให้แบบไม่มีที่สิ้นสุด
ขออภัย! คุณไม่ได้รับสิทธิ์ในการดำเนินการในส่วนนี้ กรุณาเลือกอย่างใดอย่างหนึ่ง ลงชื่อเข้าใช้ | ลงทะเบียน

รายละเอียดเครดิต

ข้อความล้วน|อุปกรณ์พกพา|ประวัติการแบน|G2GNet.com  

GMT+7, 2024-5-3 01:42 , Processed in 0.251782 second(s), 4 queries , File On.

Powered by Discuz! X3.4, Rev.62

Copyright © 2001-2020 Tencent Cloud.

ตอบกระทู้ ขึ้นไปด้านบน ไปที่หน้ารายการกระทู้