Как получить ифнормацию о файле из listBox'а...

Программирование на Visual Basic, главный форум. Обсуждение тем программирования на VB 1—6.
Даже если вы плохо разбираетесь в VB и программировании вообще — тут вам помогут. В разумных пределах, конечно.
Правила форума
Темы, в которых будет сначала написано «что нужно сделать», а затем просьба «помогите», будут закрыты.
Читайте требования к создаваемым темам.
Юджин
Обычный пользователь
Обычный пользователь
 
Сообщения: 90
Зарегистрирован: 26.10.2005 (Ср) 12:49

Как получить ифнормацию о файле из listBox'а...

Сообщение Юджин » 13.01.2006 (Пт) 17:53

(время создания) и прописать это время в файл txt :shock: ?

Kiryusha
Бывалый
Бывалый
Аватара пользователя
 
Сообщения: 216
Зарегистрирован: 30.08.2005 (Вт) 10:56
Откуда: УР, Ижевск

Сообщение Kiryusha » 13.01.2006 (Пт) 17:58

API рулит FindFirstFile
Судебно-медицинское вскрытие показало, что чукча умер в
результате судебно-медицинского вскрытия.

Odrick
Постоялец
Постоялец
Аватара пользователя
 
Сообщения: 503
Зарегистрирован: 28.09.2003 (Вс) 2:04

Сообщение Odrick » 13.01.2006 (Пт) 18:12

GetFileTime
То, что для одних константа, для других только переменная...

Юджин
Обычный пользователь
Обычный пользователь
 
Сообщения: 90
Зарегистрирован: 26.10.2005 (Ср) 12:49

Сообщение Юджин » 13.01.2006 (Пт) 18:20

подробнее

Kiryusha
Бывалый
Бывалый
Аватара пользователя
 
Сообщения: 216
Зарегистрирован: 30.08.2005 (Вт) 10:56
Откуда: УР, Ижевск

Сообщение Kiryusha » 13.01.2006 (Пт) 18:25

'объявляешь вот это вот в модуле

Public Type WIN32_FIND_DATA
dwFileAttributes As Long
ftCreationTime As FILETIME ' - это то что тебе нужно :!:
ftLastAccessTime As FILETIME
ftLastWriteTime As FILETIME
nFileSizeHigh As Long
nFileSizeLow As Long
dwReserved0 As Long
dwReserved1 As Long
cFileName As String * MAX_PATH
cAlternate As String * 14
End Type

Public Declare Function FindFirstFile Lib "kernel32" Alias "FindFirstFileA" (ByVal lpFileName As String, lpFindFileData As WIN32_FIND_DATA) As Long
Судебно-медицинское вскрытие показало, что чукча умер в
результате судебно-медицинского вскрытия.

Юджин
Обычный пользователь
Обычный пользователь
 
Сообщения: 90
Зарегистрирован: 26.10.2005 (Ср) 12:49

Сообщение Юджин » 13.01.2006 (Пт) 20:18

ругается на
Код: Выделить всё
ftCreationTime As FILETIME ' - это то что тебе нужно
говорит, что
Код: Выделить всё
User-defined type not defined
может что подключить надо?

Odrick
Постоялец
Постоялец
Аватара пользователя
 
Сообщения: 503
Зарегистрирован: 28.09.2003 (Вс) 2:04

Сообщение Odrick » 13.01.2006 (Пт) 20:36

Объявить тип, наверное? ;)

Код: Выделить всё
Public Type FILETIME
        dwLowDateTime As Long
        dwHighDateTime As Long
End Type
То, что для одних константа, для других только переменная...

Odrick
Постоялец
Постоялец
Аватара пользователя
 
Сообщения: 503
Зарегистрирован: 28.09.2003 (Вс) 2:04

Сообщение Odrick » 13.01.2006 (Пт) 20:38

Так же как и константу, думаю:

Код: Выделить всё
Public Const MAX_PATH = 260
То, что для одних константа, для других только переменная...

Юджин
Обычный пользователь
Обычный пользователь
 
Сообщения: 90
Зарегистрирован: 26.10.2005 (Ср) 12:49

Сообщение Юджин » 13.01.2006 (Пт) 21:57

откапал код
Код: Выделить всё
Public Type OFSTRUCTREC


     cBytes As Byte
     fFixedDisk As Byte
     nErrCode As Integer
     Reserved1 As Integer
     Reserved2 As Integer
     szPathName(OFS_MAXPATHNAME) As Byte

End Type
Public Type FILETIMEREC


     dwLowDateTime As Long
     dwHighDateTime As Long

End Type
Public Type FILETIME


     wYear As Integer
     wMonth As Integer
     wDayOfWeek As Integer
     wDay As Integer
     wHour As Integer
     wMinute As Integer
     wSecond As Integer
     wMilliseconds As Integer

End Type

   Public Declare Function FileTimeToSystemTime Lib "kernel32" _
     (lpfileTime As FILETIMEREC, lpSystemTime As FILETIME) As Long
   Public Declare Function GetFileTime Lib "kernel32" (ByVal _
     hFile As Long, lpCreationTime As FILETIMEREC, lpLastAccessTime _
     As FILETIMEREC, lpLastWriteTime As FILETIMEREC) As Long
   Public Declare Function OpenFile Lib "kernel32" (ByVal lpFileName As _
     String, lpReOpenBuff As OFSTRUCTREC, ByVal wStyle As Long) As Long
  Public Declare Function hread Lib "kernel32" Alias "_hread" _
     (ByVal hFile As Long, lpBuffer As Any, ByVal lBytes As Long) As Long
   Public Declare Function lclose Lib "kernel32" Alias "_lclose" (ByVal _
     hFile As Long) As Long
'в модуль
Sub Form_Load()
     Command1.Caption = "&Get file access time"
     Text1.Text = "C:\AUTOEXEC.BAT"
   End Sub

   Private Sub Command1_Click()
     Dim sInpFile As String
     Dim hFile As Integer
     Dim FileStruct As OFSTRUCTREC
     Dim iRC As Integer
     Dim CreationTime As FILETIMEREC
     Dim LastAccessTime As FILETIMEREC
     Dim LastWriteTime As FILETIMEREC
     Dim SystemTime As SYSTEMTIMEREC
     sInpFile = Trim(Text1.Text)
     ' check that the file exists
     If Len(Dir(sInpFile)) = 0 Then
       MsgBox "Can't find the file", vbExclamation
       Exit Sub
     End If

     ' Open it to get a stream handle
     hFile = OpenFile(sInpFile, FileStruct, OF_READ Or OF_SHARE_DENY_NONE)
     If hFile = 0 Then
       MsgBox "Can't open the file", vbExclamation
       Exit Sub
     End If

     If GetFileTime(hFile, CreationTime, _
         LastAccessTime, LastWriteTime) Then
           ' massage time into format that we can use
       If Not FileTimeToSystemTime(LastAccessTime, SystemTime) Then
         Print "Year of file  :" & SystemTime.wYear
         Print "Month of File :" & SystemTime.wMonth
         Print "Day of File   :" & SystemTime.wDay
       Else
         MsgBox "FileTimeToSystemTime Failed"
       End If
     Else
       MsgBox "GetFileTime Failed"
     End If

     iRC = lclose(hFile)
   End Sub
'в форму
только показвает системное время, а надо - время файла???

Kostyan
Постоялец
Постоялец
 
Сообщения: 439
Зарегистрирован: 20.09.2002 (Пт) 4:14
Откуда: Россия, Уссурийск

Сообщение Kostyan » 14.01.2006 (Сб) 10:03

Ты-б хоть пример повнимательней изучил. Тебе показывают не системную дату, а LastAccessTime. Если поставишь CreationTime, покажет время создания файла.

Держи код, надеюсь больше вопросов не возникнет.
Код: Выделить всё
Private Type FILETIME
    dwLowDateTime As Long
    dwHighDateTime As Long
End Type

Private Type SYSTEMTIME
    wYear As Integer
    wMonth As Integer
    wDayOfWeek As Integer
    wDay As Integer
    wHour As Integer
    wMinute As Integer
    wSecond As Integer
    wMilliseconds As Integer
End Type

Private Const GENERIC_READ As Long = &H80000000
Private Const OPEN_EXISTING = 3

Private Declare Function CloseHandle Lib "kernel32.dll" (ByVal hObject As Long) As Long
Private Declare Function CreateFile Lib "kernel32" Alias "CreateFileA" (ByVal lpFileName As String, ByVal dwDesiredAccess As Long, ByVal dwShareMode As Long, lpSecurityAttributes As Long, ByVal dwCreationDisposition As Long, ByVal dwFlagsAndAttributes As Long, ByVal hTemplateFile As Long) As Long
Private Declare Function GetFileTime Lib "kernel32.dll" (ByVal hFile As Long, ByRef lpCreationTime As FILETIME, ByRef lpLastAccessTime As FILETIME, ByRef lpLastWriteTime As FILETIME) As Long
Private Declare Function FileTimeToSystemTime Lib "kernel32.dll" (ByRef lpFileTime As FILETIME, ByRef lpSystemTime As SYSTEMTIME) As Long

Private Sub Form_Load()
Dim hFile As Long, s As String
Dim CreationTime As FILETIME, LastAccessTime As FILETIME, LastWriteTime As FILETIME, SysTime As SYSTEMTIME

hFile = CreateFile("C:\autoexec.bat", GENERIC_READ, 0, ByVal 0, OPEN_EXISTING, 0, 0)
If hFile = -1 Then
  MsgBox "Ошибка доступа к файлу"
Else
  Call GetFileTime(hFile, CreationTime, LastAccessTime, LastWriteTime)
  Call CloseHandle(hFile)
  Call FileTimeToSystemTime(CreationTime, SysTime)
  s = "Файл создан: " & SysTime.wDay & "." & SysTime.wMonth & "." & SysTime.wYear & vbCr
  Call FileTimeToSystemTime(LastAccessTime, SysTime)
  s = s & "LastAccessTime: " & SysTime.wDay & "." & SysTime.wMonth & "." & SysTime.wYear & vbCr
  Call FileTimeToSystemTime(LastWriteTime, SysTime)
  s = s & "LastWriteTime: " & SysTime.wDay & "." & SysTime.wMonth & "." & SysTime.wYear
  MsgBox s
End If
End Sub


Никаких модулей не создавай, код кидай прямо в модуль формы.
Нет ничего невозможного для человека с интеллектом.

Саша_ОР
Обычный пользователь
Обычный пользователь
 
Сообщения: 66
Зарегистрирован: 08.01.2006 (Вс) 19:48

Сообщение Саша_ОР » 16.01.2006 (Пн) 20:21

-------------------------------------------------------------------------------------
:?: Кстати, вот еще вопрос к теме:

Как можно узнать:
:arrow: Дату создания файла .exe
:arrow: Производителя (Имя автора) файла .exe
:arrow: Версию файла .exe
но, только, желательно по проще... :wink:
-------------------------------------------------------------------------------------

Odrick
Постоялец
Постоялец
Аватара пользователя
 
Сообщения: 503
Зарегистрирован: 28.09.2003 (Вс) 2:04

Сообщение Odrick » 16.01.2006 (Пн) 20:27

См. выше - GetFileTime(hFile, CreationTime, LastAccessTime, LastWriteTime). По поводу инфы екзешника - где-то у меня был пример... Пороюсь.
То, что для одних константа, для других только переменная...

Kostyan
Постоялец
Постоялец
 
Сообщения: 439
Зарегистрирован: 20.09.2002 (Пт) 4:14
Откуда: Россия, Уссурийск

Сообщение Kostyan » 17.01.2006 (Вт) 6:01

Проще не бывает:
http://bbs.vbstreets.ru/viewtopic.php?t=11553
Нет ничего невозможного для человека с интеллектом.


Вернуться в Visual Basic 1–6

Кто сейчас на конференции

Сейчас этот форум просматривают: нет зарегистрированных пользователей и гости: 4

    TopList  
cron