Senza categoria

visual basic II parte le API

[MiMMuZ] si esalta presentandovii:

TANTA BELLE FUNZIONI PER IL VB

#############################-Disclaimer Legale-#############################
Tutto il materiale qui presente è stato scritto a puro scopo didattico, l’autore non si assume nessuna responsabilità per le informazioni qui riportate. Questo materiale può essere divulgato, modificato e chi vuole può pure metterci il prorpio nome, la gloria non fa per me!
#############################################################################

COSA è RICHIESTO:

-una conoscenza di base del VB
-il compilatore per VB

Eccomi qui pronto a far fronte ad alcune richiste di API per visual basic. In questo file troverete semplicemente un elenco di API utili nel VB per diversi scopi. Cercherò di spiegravi l’impiego delle API e dove potrò suggerirò alcune funzioni facili facili. Tutto il materiale qui presente è facilmente reperibile nel Web quindi non limtitavi alle minime info che troverete qui dentro.

1-SAPERE LA DIRECTORY DI WINDOWS

Spesso se vogliamo fare un riferimento ad un file presente nella cartella default di Windows dimentichiamo che non in tutti i pc è chiamata Windows dato che all’installazione è possibile deciderne il nome. Ecco come ricavarla inequivocabilmente:

Declare Function GetWindowsDirectory Lib “kernel32.dll” Alias “GetWindowsDirectoryA” _
(ByVal lpBuffer As String, ByVal nSize As Long) As Long

‘lpBuffer conterrà il path e nSize ne conterrà la lunghezza in caratteri

Public Function WinDir() As String
Dim sLength As Long
WinDir = Space(255)
sLength = GetWindowsDirectory(WinDir, 255)
WinDir = Left(WinDir, sLength)
End Function

Questa funzione ritorna una stringa contenete la directory di Windows prima inizializzando un buffer che conterrà la stringa (sLength) e poi utilizzando l’API. Si possono anche ottenere le dir System e Temp semplicemente cambiando l’API da chiamare:

Declare Function GetSystemDirectory Lib “kernel32.dll” Alias “GetSystemDirectoryA” (ByVal lpBuffer As String, ByVal nSize As Long) As Long

per la dir System

Declare Function GetTempPath Lib “kernel32.dll” Alias “GetTempPathA” _
(ByVal nBufferLength As Long, ByVal lpBuffer As String) As Long

per la dir Temp

2-OTTENERE INFORMAZIONI DAL SISTEMA

Vi potrebbe essere utile ottenere informazioni sul sitema. Ecco alcune funzioni che aiutano a farlo.
Per scoprire il nome del computer:

Declare Function GetComputerName Lib “kernel32.dll” Alias “GetComputerNameA” _
(ByVal lpBuffer As String, nSize As Long) As Long

‘utilizzate una funzione così:

Funtion ComputerName () As String

Dim retval As Long

ComputerName = Space(255)  ‘imposta il solito buffer
retval = GetComputerName(ComputerName, 255)  ‘ottiene il nome del pc
ComputerName = Left(ComputerName, InStr(ComputerName, vbNullChar) – 1) ‘toglie i caratteri NULL

End Function

Per sapere il nome dell’utente:

Declare Function GetUserName Lib “advapi32.dll” Alias “GetUserNameA” (ByVal lpBuffer As String, nSize As Long) As Long

Adesso fatevi da voi la funzione!

Per scoprire aunto più potete sull’ hard disck usate questa:

Declare Function GetDiskFreeSpaceEx Lib “kernel32.dll” Alias _
“GetDiskFreeSpaceExA” (ByVal lpDirectoryName As String, _
lpFreeBytesAvailableToCaller As ULARGE_INTEGER, lpTotalNumberOfBytes _
As ULARGE_INTEGER, lpTotalNumberOfFreeBytes As ULARGE_INTEGER) As Long

Dove lpDirectoryName indica il driver su cui cercare informazioni (es “c:\”), lpFreeBytesAvailableToCaller sarà lo spazio disponibile per l’utente in byte, lpTotalNumberOfBytes lo spazio totale in byte, lpTotalNumberOfFreeBytes lo spazio disponibile.
ULARGE_INTEGER è una struttura che conterrà valori integer a 4 bit e s dichiara così:

Type ULARGE_INTEGER
LowPart As Long
HighPart As Long
End Type

Se invece volte sapere che versione di Win gira su un pc usate

Declare Function GetVersionEx Lib “kernel32.dll” Alias “GetVersionExA” (lpVersionInformation As OSVERSIONINFO) As Long

sapendo che lpVersionInformation riceverà la versione del SO e che per dichiarare questa variabile vi serve un type speciale:

Type OSVERSIONINFO
dwOSVersionInfoSize As Long
dwMajorVersion As Long
dwMinorVersion As Long
dwBuildNumber As Long
dwPlatformId As Long
szCSDVersion As String * 128
End Type

Se poi vi interessa sapere da qunto tempo è avviato Windows usatela seguente funzione:

Declare Function GetTickCount Lib “kernel32” Alias “GetTickCount” () As Long

Una curiosità è che il valore si azzera se Win è in esecuzione da 49,7 giorni (impossibile che duri così tanto direte voi, ma pensate ad NT)

3-GIOCARE COL MOUSE

Se volete sposatre il mouse la cosa è molto facile da farsi:

Declare Function SetCursorPos Lib “user32.dll” (ByVal x As Long, ByVal y As Long) As Long

X e Y rappresentano le coordinaa, ma qusto lo spevate già vero?
Se invece vogliamo sapere dove si trova il mouse utilizziamo un’altr API.

Public Declare Function GetCursorPos Lib “user32” (lpPoint As POINTAPI) As Long

POINTAPI qui sarà un type che usereme in sostituzione a x e y, diverso modo ma stesso risultato;

Public Type POINTAPI
X As Long
Y As Long
End Type

Se poi creremo due funzioni GetX e GetY avremo troveremo i valori di X e Y separatamente:

Public Function GetX() As Long
Dim K As POINTAPI
GetCursorPos K
GetX = K.X
End Function

Public Function GetY() As Long
Dim K As POINTAPI
GetCursorPos K
GetY = K.Y
End Function

Se invece ci interesserà simulare i click del mouse ci rifaremo a qeust’altra API:

Public Declare Sub Mouse_Event Lib “user32” (ByVal dwFlags As Long, ByVal dx As Long, ByVal dy As Long, ByVal cButtons As Long, ByVal dwExtraInfo As Long)

Ci serviranno poi alcune costanti:

Public Const MOUSE_LEFTDOWN = &H2
Public Const MOUSE_LEFTUP = &H4
Public Const MOUSE_MIDDLEDOWN = &H20
Public Const MOUSE_MIDDLEUP = &H40
Public Const MOUSE_RIGHTDOWN = &H8
Public Const MOUSE_RIGHTUP = &H10
Public Const MOUSE_MOVE = &H1

A questo punto per simulare la pressino di un taso dovremmo simulare sia la pressione che il rilascio, così:

Public Sub LeftClick()
Mouse_Event MOUSE_LEFTDOWN, 0, 0, 0, 0
Mouse_Event MOUSE_LEFTUP, 0, 0, 0, 0
End Sub

Ovviamente se vorrete premere il tasto destro basterà cambiare le costanti utilizzate.
Sempre utilizzando Mouse_Event si può acneh muovere il mouse:

Public Sub MoveMouse(xMove As Long, yMove As Long)
Mouse_Event MOUSE_MOVE, xMove, yMove, 0, 0
End Sub

Funzione molto interessante sempre relativa al mouse è quella che permette di invertire i due tasti.

Declare Function SwapMouseButton& Lib “user32″(ByVal bSwap As Long)

Richiamando SwapMouseButton& (True) i tasti saranno invertiti, mentre con SwapMouseButton& (False) sarannno ripristinati.

Per questa olta termino qui l’elenco, se avrete bisogno di altre API fatemelo sapere e non esistate a criticare quello che ho scritto qui. Se ci sarà interesse provvederò a raccogliere altre API per voi.

Lascia un commento