Visual Basic, .NET, ASP, VBScript
 

   
   
     

Форум - Общий форум

Страница: 1 |

 

  Вопрос: как получить путь к файлу из ссылки Добавлено: 26.02.09 17:21  

Автор вопроса:  Igor Rubas | Web-сайт: mechmagic.com | ICQ: 412444378 
есть папка, в которой лежат ссылки на файлы. как из ссылки (файл с расширением .lnk) получить путь к файлу, на который эта ссылка указывает?

Ответить

  Ответы Всего ответов: 1  

Номер ответа: 1
Автор ответа:
 Боцман



ICQ: 295725312 

Вопросов: 53
Ответов: 830
 Web-сайт: Rus-Skipper.narod.ru
 Профиль | | #1
Добавлено: 03.03.09 11:16
Ты уже ответ знаешь конечно, я дам просто чтобы небыло (ответов 0)
  1. Private Sub Form_Load()
  2. Form1.OLEDropMode = 1
  3. End Sub
  4.  
  5. Private Sub Form_OLEDragDrop(Data As DataObject, Effect As Long, Button As Integer, Shift As Integer, X As Single, Y As Single)
  6.     Dim i As Long
  7.     On Error GoTo errHandler
  8.         For i = 1 To Data.Files.Count
  9.             If UCase(Right(Data.Files(i), 4)) = ".LNK" Then
  10.                 MsgBox GetLNKTarget(Data.Files(i))
  11.             End If
  12.         Next i
  13. errHandler:
  14.     Exit Sub
  15. End Sub

в модуле
  1. Public Declare Function CreateFile Lib "kernel32" Alias "CreateFileA" (ByVal lpFileName As String, ByVal dwDesiredAccess As Long, ByVal dwShareMode As Long, lpSecurityAttributes As Any, ByVal dwCreationDisposition As Long, ByVal dwFlagsAndAttributes As Long, ByVal hTemplateFile As Long) As Long
  2. Public Declare Function CloseHandle Lib "kernel32" (ByVal hObject As Long) As Long
  3. Public Declare Function ReadFile Lib "kernel32" (ByVal hFile As Long, lpBuffer As Any, ByVal nNumberOfBytesToRead As Long, lpNumberOfBytesRead As Long, lpOverlapped As Any) As Long
  4. Public Declare Function SetFilePointer Lib "kernel32" (ByVal hFile As Long, ByVal lDistanceToMove As Long, lpDistanceToMoveHigh As Long, ByVal dwMoveMethod As Long) As Long
  5.  
  6. Public Const GENERIC_READ = &H80000000
  7. Public Const GENERIC_WRITE = &H40000000
  8. Public Const FILE_SHARE_READ = &H1
  9. Public Const OPEN_EXISTING = 3
  10. Public Const FILE_ATTRIBUTE_NORMAL = &H80
  11. Public Const INVALID_HANDLE_VALUE = -1
  12. Public Const FILE_END = 2
  13. Public Const FILE_BEGIN = 0
  14. Public Const FILE_CURRENT = 1
  15.  
  16. Public Function GetLNKTarget(filename As String) As String
  17.     Dim hFile As Long
  18.     Dim tmpbyte     As Byte
  19.     Dim tmpint      As Integer
  20.     Dim dword       As Long
  21.     Dim tmpPlace    As Long
  22.     Dim i As Long
  23.     hFile = CreateFile(filename, ByVal (GENERIC_READ Or GENERIC_WRITE), FILE_SHARE_READ, ByVal 0&, OPEN_EXISTING, FILE_ATTRIBUTE_NORMAL, ByVal 0)
  24.     
  25.     ReDim basebytes(75)
  26.     If hFile <> INVALID_HANDLE_VALUE Then
  27.         SetFilePointer hFile, &H4C, 0, FILE_BEGIN
  28.         ReadFile hFile, tmpint, 2, ret, ByVal 0&
  29.         tmpPlace = CLng(tmpint + &H10)
  30.         ret = SetFilePointer(hFile, tmpPlace, 0, FILE_CURRENT)
  31.         ReadFile hFile, dword, 4, ret, ByVal 0&
  32.         SetFilePointer hFile, &H4E + tmpint + dword, 0, FILE_BEGIN
  33.         i = 0
  34.         Do
  35.             ReadFile hFile, tmpbyte, 1, ret, ByVal 0&
  36.             If tmpbyte = &H0 Then Exit Do
  37.             GetLNKTarget = GetLNKTarget & Chr(tmpbyte)
  38.             i = i + 1
  39.             DoEvents
  40.         Loop Until tmpbyte = &H0
  41.     End If
  42.     CloseHandle hFile
  43. End Function

Ответить

Страница: 1 |

Поиск по форуму



© Copyright 2002-2011 VBNet.RU | Пишите нам