Ce prog est destiner à contrôler le temps que vous passezz connecté sur Internet.
Ce n''est qu'une première version, mais j'aimerai que ce soir la dernière en VB 6, autrement dit, j'aimerai continuer sur VB.NET.
Source / Exemple :
' IL FAUT : - UN TIMER : timer1
- UNE IMAGE : image1 contenant une icône, pour le systray (voir ZIP)
- UN MENU : Menu avec 2 éléments soujascents: MnuElement1 et MnuElement2
Option Explicit
Private Declare Function InternetGetConnectedStateEx Lib "wininet.dll" (ByRef lpdwFlags As Long, ByVal lpszConnectionName As String, ByVal dwNameLen As Integer, ByVal dwReserved As Long) As Long
Private Type IconeTray
cbSize As Long 'Taille de l'icône (en octets)
hWnd As Long 'Handle de la fenêtre chargée de recevoir les messages envoyés lors des évènements sur l'icône (clics, doubles-clics...)
uID As Long 'Identificateur de l'icône
uFlags As Long
uCallbackMessage As Long 'Messages à renvoyer
hIcon As Long 'Handle de l'icône
szTip As String * 64 'Texte à mettre dans la bulle d'aide
End Type
Dim IconeT As IconeTray
'Constantes nécessaires
Private Const AJOUT = &H0
Private Const MODIF = &H1
Private Const SUPPRIME = &H2
Private Const MOUSEMOVE = &H200
Private Const MESSAGE = &H1
Private Const Icone = &H2
Private Const TIP = &H4
Private Const DOUBLE_CLICK_GAUCHE = &H203
Private Const BOUTON_DROIT_LEVE = &H205
'API's nécessaire
Private Declare Function Shell_NotifyIcon Lib "shell32" Alias "Shell_NotifyIconA" (ByVal dwMessage As Long, pnid As IconeTray) As Boolean
Private Declare Sub Sleep Lib "kernel32" (ByVal dwMilliseconds As Long)
Dim Connected As Long, ConnectTime As Long, TotalConnectTime As Long
Dim RAZAuto As Boolean, RAZDay As Long, RAZConfirm As Boolean
Dim OldState As Long, StateChanged As Boolean
Dim BeginConnect As Long, EndConnect As Long
Private Sub Form_Load()
'Préparation de la variable IconeT
IconeT.cbSize = Len(IconeT) 'Taille de l'icône en octet
IconeT.hWnd = Me.hWnd 'Handle de l'application (pour qu'elle reçoive les messages envoyés lors d'un clic, double-clic...
IconeT.uID = 1& 'Identificateur de l'icône
IconeT.uFlags = Icone Or TIP Or MESSAGE
IconeT.uCallbackMessage = MOUSEMOVE 'Renvoyer les messages concernant l'action de la souris
IconeT.hIcon = Image1.Picture 'Mettre en icône l'image qui est dans le contrôle "Image1"
IconeT.szTip = "Contrôleur de temps passé sur Internet" & Chr$(0) 'Texte de la bulle d'aide
'Appel de la fonction pour mettre l'icône dans le système tray
Shell_NotifyIcon AJOUT, IconeT
Me.Hide
On Error Resume Next
Open App.Path & "\Time.dat" For Input As #1
Input #1, TotalConnectTime
Close 1
On Error GoTo 0
RAZAuto = False
RAZDay = 1
RAZConfirm = False
On Error Resume Next
Open App.Path & "Options.dat" For Input As #2
Input #2, RAZAuto, RAZDay, RAZConfirm
Close 2
On Error GoTo 0
If RAZDay = Day(Date) Then
If RAZConfirm = True Then
RAZConfirm = MsgBox("Voulez-vous remettre à zéro le compteur ?", vbOKCancel & vbQuestion, "Voulez vous ?")
End If
If RAZConfirm = True Then
Open App.Path & "\Time.dat" For Output As #1
Write #1, 0
Close 1
End If
End If
End Sub
Private Sub Timer1_Timer()
Connected = InternetGetConnectedStateEx(Connected, 0, 0, 0)
Select Case OldState
Case 0
If Connected = 1 Then
OldState = 1
StateChanged = True
Else: StateChanged = False
End If
Case 1
If Connected = 0 Then
OldState = 0
StateChanged = True
Else: StateChanged = False
End If
End Select
If StateChanged = True Then
If Connected = 1 Then
BeginConnect = Timer
Else
EndConnect = Timer
On Error Resume Next
Open App.Path & "Time.dat" For Input As #1
Input #1, TotalConnectTime
Close 1
On Error GoTo 0
If BeginConnect < EndConnect Then
ConnectTime = EndConnect - BeginConnect
Else
ConnectTime = (86400 - BeginConnect) + EndConnect
End If
Open App.Path & "\Time.dat" For Output As #1
Write #1, TotalConnectTime + ConnectTime
Close 1
End If
End If
Select Case Connected
Case 1
IconeT.szTip = "Connecté au NET" & Chr(0) 'Texte de la bulle d'aide
Case 0
IconeT.szTip = "PAS Connecté au NET" & Chr(0) 'Texte de la bulle d'aide
End Select
Shell_NotifyIcon MODIF, IconeT
End Sub
Private Sub Form_MouseMove(Button As Integer, Shift As Integer, X As Single, Y As Single)
Static rec As Boolean, msg As Long
msg = X / Screen.TwipsPerPixelX
If rec = False Then
rec = True
Select Case msg
Case DOUBLE_CLICK_GAUCHE
Dim ConnectTimeHours As String, TotalConnectTimeHours As String
ConnectTimeHours = Int(ConnectTime / 3600) & ":" & Int(ConnectTime / 60) - Int(ConnectTime / 3600) * 3600 & ":" & ConnectTime - Int(ConnectTime / 60) * 60
TotalConnectTimeHours = Int(TotalConnectTime / 3600) & ":" & Int(TotalConnectTime / 60) - Int(TotalConnectTime / 3600) * 60 & ":" & TotalConnectTime - Int(TotalConnectTime / 60) * 60
Select Case Connected
Case 0
Call MsgBox("Temps passé sur Internet à la dernière connexion : " & ConnectTimeHours & vbLf & "Temps Total passé ce mois-ci : " & TotalConnectTimeHours, vbOKOnly, "PAS Connecté au NET")
Case 1
Call MsgBox("Temps passé sur Internet à la cette connexion :" & ConnectTimeHours & vbLf & "Temps Total passé ce mois-ci : " & TotalConnectTimeHours, vbOKOnly, "Connecté au NET")
End Select
Case BOUTON_DROIT_LEVE
PopupMenu Menu
End Select
rec = False
End If
End Sub
Private Sub Form_QueryUnload(Cancel As Integer, UnloadMode As Integer)
IconeT.cbSize = Len(IconeT)
IconeT.hWnd = Me.hWnd
IconeT.uID = 1&
Shell_NotifyIcon SUPPRIME, IconeT
End Sub
Private Sub MnuElement1_Click()
FrmOptions.Show
End Sub
Private Sub MnuElement2_Click()
frmAbout.Show
End Sub
Conclusion :
Bon, mon but, c'est pour l'instant de re-créer ça en VB.NET, mais le problème, c'est que ne sait comment utiliser l'équivalent de Function Shell_NotifyIcon est n'est autre que System.Windows.Forms.NotifyIcon.
Quelqu'un peut m'aider ???Merci d'avance ! PS : Je met aussi un ZIP pour licone est les form secondaires !
Vous n'êtes pas encore membre ?
inscrivez-vous, c'est gratuit et ça prend moins d'une minute !
Les membres obtiennent plus de réponses que les utilisateurs anonymes.
Le fait d'être membre vous permet d'avoir un suivi détaillé de vos demandes et codes sources.
Le fait d'être membre vous permet d'avoir des options supplémentaires.