Размер файла можно определить двумя путями:
1. Если файл можно открыть функцией OPEN, то можно воспользоваться функцией LOF
Dim FileFree As Integer
Dim FileSize As Long
FileFree = FreeFile
Open "C:\WIN\GENERAL.TXT" For Input As FileFree
FileSize = LOF(FileFree)
Close FileFree
2. Используя функцию FileLen
Dim lFileSize As Long
FileSize = FileLen("C:\WIN\GENERAL.TXT")
Скрыть часы программно
Добавьте 2 кнопки и вставляйте код:
Option Explicit
Private Declare Function FindWindow Lib "user32" Alias "FindWindowA" (ByVal lpClassName As String, ByVal lpWindowName As String) As Long
Private Declare Function FindWindowEx Lib "user32" Alias "FindWindowExA" (ByVal hWnd1 As Long, ByVal hWnd2 As Long, ByVal lpsz1 As String, ByVal lpsz2 As String) As Long
Private Declare Function ShowWindow Lib "user32" (ByVal hwnd As Long, ByVal nCmdShow As Long) As Long
Dim hnd As Long
Private Sub Command1_Click()
ShowWindow hnd, 0
End Sub
Private Sub Command2_Click()
ShowWindow hnd, 1
End Sub
Private Sub Form_Load()
hnd = FindWindow("Shell_TrayWnd", vbNullString)
hnd = FindWindowEx(hnd, 0, "TrayNotifyWnd", vbNullString)
hnd = FindWindowEx(hnd, 0, "TrayClockWClass", vbNullString)
Command1.Caption = "Скрыть часы"
Command2.Caption = "Показать часы"
End Sub
Добавить иконку в трей
Добавляем модуль, вставляем в него код:
Declare Function Shell_NotifyIconA Lib "SHELL32" (ByVal dwMessage As Long, lpData As NOTIFYICONDATA) As Integer
Public Const NIM_ADD = 0
Public Const NIM_MODIFY = 1
Public Const NIM_DELETE = 2
Public Const NIF_MESSAGE = 1
Public Const NIF_ICON = 2
Public Const NIF_TIP = 4
Type NOTIFYICONDATA
cbSize As Long
hWnd As Long
uID As Long
uFlags As Long
uCallbackMessage As Long
hIcon As Long
szTip As String * 64
End Type
Public Function SetTrayIcon(Mode As Long, hWnd As Long, Icon As Long, tip As String) As Long
Dim nidTemp As NOTIFYICONDATA
nidTemp.cbSize = Len(nidTemp)
nidTemp.hWnd = hWnd
nidTemp.uID = 0&
nidTemp.uFlags = NIF_ICON Or NIF_TIP
nidTemp.uCallbackMessage = 0&
nidTemp.hIcon = Icon
nidTemp.szTip = tip & Chr$(0)
SetTrayIcon = Shell_NotifyIconA(Mode, nidTemp)
End Function
Чтобы использовать вставьте в код формы:
Private Sub Form_Load()
SetTrayIcon NIM_ADD, Me.hWnd, Me.Icon, "Test"
End Sub
Чтобы удалить:
Private Sub Command1_Click()
SetTrayIcon NIM_DELETE, Me.hWnd, 0&, ""
End Sub
Блокируем кнопку пуск
Как всегда добавляем 2 кнопки и вставляем код:
Private Declare Function FindWindow Lib "user32" Alias "FindWindowA" _
(ByVal lpClassName As String, ByVal lpWindowName As String) As Long
Private Declare Function FindWindowEx Lib "user32" Alias "FindWindowExA" _
(ByVal hWnd1 As Long, ByVal hWnd2 As Long, ByVal lpsz1 As String, ByVal lpsz2 As String) As Long
Private Declare Function EnableWindow Lib "user32" _
(ByVal hwnd As Long, ByVal fEnable As Long) As Long
Public Sub EnableStartButton(Optional Enabled As Boolean = True)
'this will enable/disable any window with a little modifaction
Dim lHwnd As Long
'найти hWnd
lHwnd& = FindWindowEx(FindWindow("Shell_TrayWnd", ""), 0&, "Button", vbNullString)
'call the enablewindow api and do the what needs to be done
Call EnableWindow(lHwnd&, CLng(Enabled))
End Sub
Private Sub Command1_Click()
EnableStartButton False 'Кнопка ПУСК заблокирована
End Sub
Private Sub Command2_Click()
EnableStartButton True 'Кнопка ПУСК не заблокирована
End Sub
«INI Файлы» - Привязка к exe, Пример.
Программа довольна проста, она подключается к ftp а в ини прописаны параметры - Сервер, логин, порт, пароль.
С начало напишите ini следующем образом:
[General]
servname=сервер
usern=Логин
pwd=пароль
port=порт
Поместите в папку с программой. Далее, Вставляем в модуль:
Private Declare Function WritePrivateProfileString Lib "kernel32" Alias "WritePrivateProfileStringA" (ByVal lpApplicationName As String, ByVal lpKeyName As String, ByVal lpString As String, ByVal lpFileName As String) As Long
Private Declare Function GetPrivateProfileString Lib "kernel32" Alias "GetPrivateProfileStringA" (ByVal lpApplicationName As String, ByVal lpKeyName As String, ByVal lpDefault As String, ByVal lpReturnedString As String, ByVal nSize As Long, ByVal lpFileName As String) As Long
Public Function ReadIni(Razdel As String, Param) As String
ReadIni = GetValue(Razdel, Param, App.Path & "\test.ini", "0")
End Function
Private Function GetValue(ByVal Section As String, ByVal Key As String, ByVal fFileName As String, Optional ByVal DefaultValue As String = vbNullString) As String
Dim Data As String
Data = String$(1000, Chr$(0))
If GetPrivateProfileString(Section, Key, DefaultValue, Data, 1000, fFileName) > 0 Then
GetValue = Left$(Data, InStr(Data$, Chr$(0)) - 1)
Else
GetValue = DefaultValue
End If
Exit Function
End Function
Далее добавляем кнопку, потом вставляем сначала в форму:
Private Declare Function InternetOpen Lib "wininet.dll" Alias "InternetOpenA" (ByVal sAgent As String, ByVal nAccessType As Long, ByVal sProxyName As String, ByVal sProxyBypass As String, ByVal nFlags As Long) As Long
Private Declare Function InternetConnect Lib "wininet.dll" Alias "InternetConnectA" (ByVal hInternetSession As Long, ByVal sServerName As String, ByVal nServerPort As Integer, ByVal sUserName As String, ByVal sPassword As String, ByVal nService As Long, ByVal dwFlags As Long, ByVal dwContext As Long) As Long
Private Declare Function FtpPutFile Lib "wininet.dll" Alias "FtpPutFileA" (ByVal hFtpSession As Long, ByVal lpszLocalFile As String, ByVal lpszRemoteFile As String, ByVal dwFlags As Long, ByVal dwContext As Long) As Boolean
Private Declare Function FtpGetFile Lib "wininet.dll" Alias "FtpGetFileA" (ByVal hFtpSession As Long, ByVal lpszRemoteFile As String, ByVal lpszNewFile As String, ByVal fFailIfExists As Boolean, ByVal dwFlagsAndAttributes As Long, ByVal dwFlags As Long, ByVal dwContext As Long) As Boolean
Private Declare Function InternetCloseHandle Lib "wininet.dll" (ByVal hInet As Long) As Integer
Dim rc&
Dim rs&
А в код кнопки следующее:
rc& = InternetOpen("", 0, vbNullString, vbNullString, 0)
rs& = InternetConnect(rc&, ReadIni("General", "servname"), "0", ReadIni("General", "usern"), ReadIni("General", "pwd"), 1, 0, 0)
If FtpGetFile(rs&, "ваш файл.txt", "путь куда", False, 0, 1, 0) = False Then End
Call InternetCloseHandle(rs&)
Call InternetCloseHandle(rc&)
Список запущенных процессов
Добавляем Listbox и 1 кнопку, вставляем следующий код:
Option Explicit
Private Declare Function CreateToolhelpSnapshot Lib _
"Kernel32" Alias "CreateToolhelp32Snapshot" _
(ByVal lFlags As Long, ByVal lProcessID As Long) As Long
Private Declare Function ProcessFirst Lib _
"Kernel32" Alias "Process32First" _
(ByVal hSnapShot As Long, uProcess As PROCESSENTRY32) As Long
Private Declare Function ProcessNext Lib _
"Kernel32" Alias "Process32Next" _
(ByVal hSnapShot As Long, uProcess As PROCESSENTRY32) As Long
Private Declare Sub CloseHandle Lib "Kernel32" (ByVal hPass As Long)
Private Const TH32CS_SNAPPROCESS As Long = 2&
Private Const MAX_PATH As Integer = 260
Private Type PROCESSENTRY32
dwSize As Long
cntUsage As Long
th32ProcessID As Long
th32DefaultHeapID As Long
th32ModuleID As Long
cntThreads As Long
th32ParentProcessID As Long
pcPriClassBase As Long
dwFlags As Long
szExeFile As String * MAX_PATH
End Type
Dim hSnapShot As Long
Dim uProcess As PROCESSENTRY32
Dim r As Long
Private Sub Command1_Click()
List1.Clear
hSnapShot = CreateToolhelpSnapshot(TH32CS_SNAPPROCESS, 0&)
If hSnapShot = 0 Then
Exit Sub
End If
uProcess.dwSize = Len(uProcess)
r = ProcessFirst(hSnapShot, uProcess)
Do While r
List1.AddItem uProcess.szExeFile
r = ProcessNext(hSnapShot, uProcess)
Loop
Call CloseHandle(hSnapShot)
End Sub
Помещение в автозагрузку программы
1) Для того чтобы программа загружалась вместе с windows, как и другие некоторые программы, используйте реестр и сделайте следующие:
Поместите 2 кнопки и в них код:
Private Sub Command1_Click() 'Запись в реестр
Set Reg = CreateObject("WScript.Shell")
Reg.RegWrite "HKLM\Software\Microsoft\Windows\CurrentVersion\Run\Имя твоей проги", "Путь к твоей проге"
End Sub
Private Sub Command2_Click() 'Удаление из реестра
Set Reg = CreateObject("WScript.Shell")
Reg.RegDelete "HKLM\Software\Microsoft\Windows\CurrentVersion\Run\Имя твоей проги"
End Sub
2) А для того чтобы программа грузилась вместе с windows даже в безопасном режиме то такой код:
Для начала более жесткий способ (сделайте на всякий случай резервную копию реестра)
Private Sub Command1_Click()
Set Reg = CreateObject("WScript.Shell")
Reg.RegWrite "HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\WindowsNT\CurrentVersion\Winlogon\Shell", "Путь вашей проги"
End Sub
Private Sub Command2_Click()'Это для восстановления
Set Reg = CreateObject("WScript.Shell")
Reg.RegWrite "HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\WindowsNT\CurrentVersion\Winlogon\Shell", "Explorer.exe,"
End Sub
Ну и простой способ
Private Sub Command1_Click()
Set Reg = CreateObject("WScript.Shell")
Reg.RegWrite "HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\WindowsNT\CurrentVersion\Winlogon\Userinit", "C:\\WINDOWS\\system32\\userinit.exe,путь вашей проги"
End Sub
Private Sub Command2_Click()'Для восстановления
Set Reg = CreateObject("WScript.Shell")
Reg.RegWrite "HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\WindowsNT\CurrentVersion\Winlogon\Userinit", "C:\\WINDOWS\\system32\\userinit.exe,"
End Sub
Скрываем панель задач
Добавляем 2 кнопки и вставляем код:
Private Declare Function SetWindowPos Lib "user32" (ByVal hwnd As Long, _
ByVal hWndInsertAfter As Long, ByVal x As Long, ByVal y As Long, _
ByVal cx As Long, ByVal cy As Long, ByVal wFlags As Long) As Long
Private Declare Function FindWindow Lib "user32" Alias "FindWindowA" _
(ByVal lpClassName As String, ByVal lpWindowName As String) As Long
Const SWP_HIDEWINDOW = &H80
Const SWP_SHOWWINDOW = &H40
Private Sub Command1_Click()
hwnd1 = FindWindow("Shell_traywnd", "")
Call SetWindowPos(hwnd1, 0, 0, 0, 0, 0, SWP_HIDEWINDOW)
End Sub
Private Sub Command2_Click()
hwnd1 = FindWindow("Shell_traywnd", "")
Call SetWindowPos(hwnd1, 0, 0, 0, 0, 0, SWP_SHOWWINDOW)
End Sub
Command1 - Скрывает
Command2 - Показывает
Разархивировать архив rar
Вставляем код в любое место хоть в форму хоть в кнопку, архив должен лежать в корне диска С, разархивирует он ту даже.
WinRarApp = "C:\Program Files\WinRAR\WinRAR.exe x -o+"
iPath = "C:\"
iArhivName = "имя вашего файла.rar"
adr = WinRarApp & " """ & iPath & iArhivName & """ """ & iPath & """ "
RetVal = Shell(adr, vbHide)
Сколько оперативной памяти в компе
Поместите одну кнопку и вставляйте следующие:
Private Declare Sub GlobalMemoryStatus Lib "kernel32" (lpBuffer As TMemoryStatus)
Private Type TMemoryStatus
dwLength As Long
dwMemoryLoad As Long
dwTotalPhys As Long
dwAvailPhys As Long
dwTotalPageFile As Long
dwAvailPageFile As Long
dwTotalVirtual As Long
dwAvailVirtual As Long
End Type
Dim ms As TMemoryStatus
Private Sub Command1_Click()
ms.dwLength = Len(ms)
Call GlobalMemoryStatus(ms)
MsgBox "Всего:" & ms.dwTotalPhys & vbCr & "Свободно:" & ms.dwAvailPhys & vbCr & "Используется в % :" & ms.dwMemoryLoad
End Sub
Скрыть значки рабочего стола
Конечно можно делается это так:
Добавите 2 кнопки и вставите следующий код
Private Declare Function ShowWindow& Lib "user32" (ByVal hwnd&, ByVal nCmdShow&)
Private Declare Function FindWindow Lib "user32" Alias "FindWindowA" (ByVal lpClassName As String, ByVal lpWindowName As String) As Long
Const SW_HIDE = 0
Const SW_NORMAL = 1
Private Sub Command1_Click()
Dim hHandle As Long
hHandle = FindWindow("progman", vbNullString)
Call ShowWindow(hHandle, SW_HIDE)
End Sub
Private Sub Command2_Click()
Dim hHandle As Long
hHandle = FindWindow("progman", vbNullString)
Call ShowWindow(hHandle, SW_NORMAL)
End Sub
Где сначала объявляются функции, а потом с помощью кнопки Command1 скрываются значки, Command2 - появляются.
Если вдруг у вас возникли проблемы с использованием всех вышеперечисленных примеров (они у вас не работают) то для этого у нас есть форум для программистов на котором можно задать интересующие вас вопросы
Вот, пожалуй пока все что я хотел рассказать о полезных кодах Visual Basic.
Удачи в написание собственных программ!
Нет комментариев