Парочка ОЧЕНЬ важных вопросов

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

Парочка ОЧЕНЬ важных вопросов

Сообщение SHAN » 18.08.2003 (Пн) 18:43

Тут у меня скопилось несколько вопросов:
1. Как узнать, когда был создан/изменен/открыт файл?
2. Как узнать, сколько места осталось на любом диске?
3. Как встроить меню в Проводник, как это делает, например WinRar - "Добавить файлы в архив", "Извлечь файлы" и т.д., причем в подменю и с иконками и при выделении нескольких файлов запускается прога и что-то делает?..

На счет MSComm (инициализировать модем умею) :
1. Как отправить текстовые данные ("Привет!", к примеру) на другой модем и делается ли это с помощью Input/Output? Можно ли также отправить файлы по кусочкам?
2. Можно ли "подключить" протокол Zmodem или на крайний случай Xmodem? А как?

Фу! Это все... Хотелось бы чтобы кто-нибудь ответил на все вопросы, но особенно жажду узнать на счет MSComm...
Заранее СПАСИБО!!!
$HAN

A.A.Z.
Член-корреспондент академии VBStreets
Член-корреспондент академии VBStreets
 
Сообщения: 3035
Зарегистрирован: 30.06.2003 (Пн) 13:38

Сообщение A.A.Z. » 18.08.2003 (Пн) 19:59

Насчёт MSComm не знаю.

1)

(Выдрал из API-Guide)

Код: Выделить всё
'This program needs a Dialog box, named CDBox1
'  (To add the Common Dialog Box to your tools menu, go to Project->Components (or press CTRL-T)
'   and select Microsoft Common Dialog control)
Private Type FILETIME
    dwLowDateTime As Long
    dwHighDateTime As Long
End Type
Private Type SHFILEOPSTRUCT
    hWnd As Long
    wFunc As Long
    pFrom As String
    pTo As String
    fFlags As Integer
    fAborted As Boolean
    hNameMaps As Long
    sProgress As String
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_WRITE = &H40000000
Private Const OPEN_EXISTING = 3
Private Const FILE_SHARE_READ = &H1
Private Const FILE_SHARE_WRITE = &H2
Private Const FO_DELETE = &H3
Private Declare Function CopyFile Lib "kernel32" Alias "CopyFileA" (ByVal lpExistingFileName As String, ByVal lpNewFileName As String, ByVal bFailIfExists As Long) As Long
Private Declare Function CreateDirectory Lib "kernel32" Alias "CreateDirectoryA" (ByVal lpPathName As String, lpSecurityAttributes As Long) As Long
Private Declare Function DeleteFile Lib "kernel32" Alias "DeleteFileA" (ByVal lpFileName As String) As Long
Private Declare Function GetFileSize Lib "kernel32" (ByVal hFile As Long, lpFileSizeHigh As Long) As Long
Private Declare Function GetFileTime Lib "kernel32" (ByVal hFile As Long, lpCreationTime As FILETIME, lpLastAccessTime As FILETIME, lpLastWriteTime As FILETIME) As Long
Private Declare Function MoveFile Lib "kernel32" Alias "MoveFileA" (ByVal lpExistingFileName As String, ByVal lpNewFileName As String) 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 CloseHandle Lib "kernel32" (ByVal hObject As Long) As Long
Private Declare Function SHFileOperation Lib "shell32.dll" Alias "SHFileOperationA" (lpFileOp As SHFILEOPSTRUCT) As Long
Private Declare Function FileTimeToSystemTime Lib "kernel32" (lpFileTime As FILETIME, lpSystemTime As SYSTEMTIME) As Long
Private Declare Function FileTimeToLocalFileTime Lib "kernel32" (lpFileTime As FILETIME, lpLocalFileTime As FILETIME) As Long
Private Sub Form_Load()
    'KPD-Team 1998
    'URL: http://www.allapi.net/
    'E-Mail: KPDTeam@Allapi.net
    Dim lngHandle As Long, SHDirOp As SHFILEOPSTRUCT, lngLong As Long
    Dim Ft1 As FILETIME, Ft2 As FILETIME, SysTime As SYSTEMTIME
    'Set the dialog's title
    CDBox.DialogTitle = "Choose a file ..."
    'Raise an error when the user pressed cancel
    CDBox.CancelError = True
    'Show the 'Open File'-dialog
    CDBox.ShowOpen
    'Create a new directory
    CreateDirectory "C:\KPD-Team", ByVal &H0
    'Copy the selected file to our new directory
    CopyFile CDBox.filename, "C:\KPD-Team\" + CDBox.FileTitle, 0
    'Rename the file
    MoveFile "C:\KPD-Team\" + CDBox.FileTitle, "C:\KPD-Team\test.kpd"
    'Open the file
    lngHandle = CreateFile("C:\KPD-Team\test.kpd", GENERIC_WRITE, FILE_SHARE_READ Or FILE_SHARE_WRITE, ByVal 0&, OPEN_EXISTING, 0, 0)
    'Get the file's size
    MsgBox "The size of the selected file is" + Str$(GetFileSize(lngHandle, lngLong)) + " bytes."
    'Get the fil's time
    GetFileTime lngHandle, Ft1, Ft1, Ft2
    'Convert the file time to the local file time
    FileTimeToLocalFileTime Ft2, Ft1
    'Convert the file time to system file time
    FileTimeToSystemTime Ft1, SysTime
    MsgBox "The selected file was created on" + Str$(SysTime.wMonth) + "/" + LTrim(Str$(SysTime.wDay)) + "/" + LTrim(Str$(SysTime.wYear))
    'Close the file
    CloseHandle lngHandle
    'Delete the file
    DeleteFile "C:\KPD-Team\test.kpd"
    With SHDirOp
        .wFunc = FO_DELETE
        .pFrom = "C:\KPD-Team"
    End With
    'Delete the directory
    SHFileOperation SHDirOp
    End
End Sub


2)

(Выдрал из API-Guide)

Код: Выделить всё
'In general section
Private Declare Function GetDiskFreeSpace Lib "kernel32" Alias "GetDiskFreeSpaceA" (ByVal lpRootPathName As String, lpSectorsPerCluster As Long, lpBytesPerSector As Long, lpNumberOfFreeClusters As Long, lpTtoalNumberOfClusters As Long) As Long

Private Sub Form_Load()
    'KPD-Team 1998
    'URL: http://www.allapi.net/
    'E-Mail: KPDTeam@Allapi.net

    Dim Sectors as Long,Bytes as Long,FreeC as Long, TotalC as Long,Total as Long,Freeb as Long
    'Retrieve information about the C:\
    GetDiskFreeSpace "C:\", Sectors, Bytes, Freec, Totalc
    'Set graphic mode to persistent
    Me.AutoRedraw = True
    'Print the information to the form
    Me.Print " Path: C:\"
    Me.Print " Sectors per Cluster:" + Str$(Sector)
    Me.Print " Bytes per sector:" + Str$(Bytes)
    Me.Print " Number Of Free Clusters:" + Str$(Freec)
    Me.Print " Total Number Of Clusters:" + Str$(Totalc)
    Total = rTotalc& * rSector& * rBytes&
    Me.Print " Total number of bytes in path:" + Str$(Total)
    Freeb = rFreec& * rSector& * rBytes&
    Me.Print " Free bytes:" + Str$(Freeb)
End sub
Нет меня больше

SSecurity
Служба безопасности
Аватара пользователя
 
Сообщения: 1283
Зарегистрирован: 19.08.2003 (Вт) 1:11
Откуда: Россия, Мурманск

Сообщение SSecurity » 27.08.2003 (Ср) 13:50

Если я прально понял ...

То для того чтобы узнать когда создан файл используй функцию FileDateTime

Или используй FileSystemObject
Объект Drive.FreeSpace - свободное место :)
Объект FolderFile.DateCreated - дата создания :)
Объект FolderFile.DateLastAccessed - дата последнего использования :)
Объект FolderFile.DateLastModified - дата последнего изменения :)
Программист - это маленький Бог, а все его ошибки - это самостоятельные творения:)
Так задумано:)

amda
Продвинутый пользователь
Продвинутый пользователь
 
Сообщения: 134
Зарегистрирован: 11.09.2002 (Ср) 15:14
Откуда: Russia, Волгоградская обл., г. Волжский

Re: Парочка ОЧЕНЬ важных вопросов

Сообщение amda » 27.08.2003 (Ср) 15:25

SHAN писал(а):3. Как встроить меню в Проводник, как это делает, например WinRar - "Добавить файлы в архив", "Извлечь файлы" и т.д., причем в подменю и с иконками и при выделении нескольких файлов запускается прога и что-то делает?..


самый простой ответ :D :
открой реестр коммандой regedit.exe
найди там ветвь (в самом начале) \HKEY_CLASSES_ROOT.
там найди разделы .*, .rar и WinRAR. Вот там и посмотри, как этот рар вставляет в контекстное меню проводника свои команды.
Там есть ещё ссылки на другие разделы. Они отвечают за иконки. Там трудно что-нибудь понять...
Но просто добавить свою команду ты можешь легко, редактируя реестр или даже через файл *.reg (вручную на каждой машине :?

ZeroX
Бывалый
Бывалый
 
Сообщения: 207
Зарегистрирован: 29.04.2003 (Вт) 12:36
Откуда: Мой адрес не дом и не улица, мой адрес Советский Союз

Сообщение ZeroX » 27.08.2003 (Ср) 17:32

SSecurity писал(а):Объект Drive.FreeSpace - свободное место :)


А с этим будет большая трабла если винт больше 2Гб, насколько я знаю :(
Свободное место будет определяться неверно
Каждый warning мечтает стать error'om

SSecurity
Служба безопасности
Аватара пользователя
 
Сообщения: 1283
Зарегистрирован: 19.08.2003 (Вт) 1:11
Откуда: Россия, Мурманск

Сообщение SSecurity » 27.08.2003 (Ср) 22:36

До сих пор я был "М" а не "Жо" ...

А что косается сути ответа ... в чем там трабла у тебя???
Программист - это маленький Бог, а все его ошибки - это самостоятельные творения:)
Так задумано:)


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

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

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

    TopList