본문 바로가기

Developer/VB.net

[VB.net] 바로가기 아이콘 만들기

요래 저래 회사에서 이것저것 일을 하고있었는데, 뜸금없는 일이 추가가 되었습니다.

프로젝트라고 하기에는 너무 작고, 오랫만에 VB를 잡자니 너무 오랜시간동안 쉬었고...

C로 해야하나 Java로 해야하나.. 하다가 역시 개발하기가 쉬운건 VB인지라..


이번에는 바로가기 아이콘을 만들어볼 예정입니다.

개발을 하다보니 걸리는게 두가지였는데, 아이콘과, 관리자 권한이었습니다.


웹사이트 바로가기 아이콘을 만드는 부분이었는데..

사이트 주소로만 가져오자니 원하는 아이콘을 받아 올 수가 없는 점이 있었다라는 것

C:\ 드라이브에 폴더를 생성시키고, 아이콘 파일을 다운로드했을 때 운영체제에 따라 권한 제약이 걸리는건 아닐지..


요리조리 머리를 굴리다가..


C:\Users\CurrentUserName 안에다가 폴더를 생성하고 받음 되지 않을까 하고...


☆ 설정

 메뉴 > 프로젝트 > 참조추가 > COM > Micorsoft Scripting Runtime 추가


☆ 선언부

Option Explicit On

Imports Scripting
Imports System.IO
Imports System.Net

Public Class Main

    Private Declare Function fCreateShellLink Lib "STKIT432.DLL" (ByVal _
       lpstrFolderName As String, ByVal lpstrLinkName As String, ByVal _
       lpstrLinkPath As String, ByVal lpstrLinkArgs As String) As Long


☆ 현재 로그인한 사용자 이름 구하기

        Dim userName As String
        userName = System.Security.Principal.WindowsIdentity.GetCurrent().Name
        Dim startPoint As Integer = userName.IndexOf("\") + 1, endPoint As Integer = (userName.Length - startPoint)
        userName = userName.Substring(startPoint, endPoint)


☆ 아이콘을 받을 폴더 생성

    Public Function makeFolder(ByVal userName)
        Dim path As String = "C:\Users\" & userName & "\FolderName"
        Dim exists As Boolean
        exists = System.IO.Directory.Exists(path)

        If (Not exists) Then
            System.IO.Directory.CreateDirectory(path)
        End If

        Return path

    End Function


☆ 아이콘 다운로드

    Public Function getFavicon(ByVal dirPath)

        Dim exists As Boolean
        Dim iconPath As String = dirPath & "\favicon.ico"
        exists = System.IO.Directory.Exists(iconPath)

        If (Not exists) Then
            Dim httpclient = New WebClient
            AddHandler httpclient.DownloadFileCompleted, AddressOf Downloaded
            httpclient.DownloadFileAsync(New Uri("http://iconURL"), (iconPath))
        End If

        Return iconPath
    End Function


☆ 바로가기 아이콘 만들기

     Public Sub CreateShortCut(ByVal folderPath, ByVal iconPath)

        Dim WshShell As Object
        Dim strDesktop As Object
        Dim oUrlLink As Object

        WshShell = CreateObject("WScript.Shell")
      
        Dim CheckFile As New FileSystemObject
        Dim target As String = siteURL ''ex) http://moelcano.tistory.com

        strDesktop = WshShell.SpecialFolders("Desktop")
        If (folderPath = "Desktop") Then
            strDesktop = WshShell.SpecialFolders("Desktop")
        End If

        If (folderPath = "Favorites") Then
            strDesktop = WshShell.SpecialFolders("Favorites")
        End If

        oUrlLink = WshShell.CreateShortcut(strDesktop & "\FileName.lnk")
        oUrlLink.TargetPath = target
        oUrlLink.WindowStyle = 1
        'oUrlLink.Hotkey = "CTRL+SHIFT+F"
        oUrlLink.IconLocation = iconPath
        oUrlLink.Description = "Description"
        oUrlLink.WorkingDirectory = strDesktop
        oUrlLink.TargetPath = target
        oUrlLink.Save()
      
        oUrlLink = Nothing
        
    End Sub


와 같이 작성하시면 원하는 바로가기 아이콘을 만드실 수 있습니다.

기타 궁금사항은 댓글 부탁드립니다~