Accueil > > > UTILISATION DES REGISTRE
UTILISATION DES REGISTRE
Information sur la source
Description
Juste un exemple complet que j'ai recupere je ne sais ou,mais qui permet de lire et d'ecrire dans la base de registre. Apres certains adaptations,je l'ai mis dans un module que j'utilise dans tous mes programmes.
Source
- [CodeVB]
- ' Ce module lit et écrit les clés de la base de registres. Contrairement
- ' aux méthodes d'accès à la base de regitres interne de VB, il peut lire
- ' et écrire toute les clés du registre avec des valeurs de type chaîne.
-
- Option Explicit
- '---------------------------------------------------------------
- '- Déclarations des API de base de registres...
- '---------------------------------------------------------------
- Private Declare Function RegCloseKey Lib "advapi32" (ByVal hKey As Long) As Long
- Private Declare Function RegCreateKeyEx Lib "advapi32" Alias "RegCreateKeyExA" (ByVal hKey As Long, ByVal lpSubKey As String, ByVal Reserved As Long, ByVal lpClass As String, ByVal dwOptions As Long, ByVal samDesired As Long, ByRef lpSecurityAttributes As SECURITY_ATTRIBUTES, ByRef phkResult As Long, ByRef lpdwDisposition As Long) As Long
- Private Declare Function RegOpenKeyEx Lib "advapi32" Alias "RegOpenKeyExA" (ByVal hKey As Long, ByVal lpSubKey As String, ByVal ulOptions As Long, ByVal samDesired As Long, ByRef phkResult As Long) As Long
- Private Declare Function RegQueryValueEx Lib "advapi32" Alias "RegQueryValueExA" (ByVal hKey As Long, ByVal lpValueName As String, ByVal lpReserved As Long, ByRef lpType As Long, ByVal lpData As String, ByRef lpcbData As Long) As Long
- Private Declare Function RegSetValueEx Lib "advapi32" Alias "RegSetValueExA" (ByVal hKey As Long, ByVal lpValueName As String, ByVal Reserved As Long, ByVal dwType As Long, ByVal lpData As String, ByVal cbData As Long) As Long
-
- '---------------------------------------------------------------
- '- Constantes des API de base de registres...
- '---------------------------------------------------------------
- ' Types de données de base de registres...
- Const REG_SZ = 1 ' chaîne Unicode terminée par nul
- Const REG_EXPAND_SZ = 2 ' chaîne Unicode terminée par nul
- Const REG_DWORD = 4 ' nombre 32-bit
-
- ' Valeurs de type de création...
- Const REG_OPTION_NON_VOLATILE = 0 ' clé préservée lorsque le système
- ' est redémarré
-
- ' Options de sécurité de clé de base de registres...
- Const READ_CONTROL = &H20000
- Const KEY_QUERY_VALUE = &H1
- Const KEY_SET_VALUE = &H2
- Const KEY_CREATE_SUB_KEY = &H4
- Const KEY_ENUMERATE_SUB_KEYS = &H8
- Const KEY_NOTIFY = &H10
- Const KEY_CREATE_LINK = &H20
- Const KEY_READ = KEY_QUERY_VALUE + KEY_ENUMERATE_SUB_KEYS + KEY_NOTIFY + READ_CONTROL
- Const KEY_WRITE = KEY_SET_VALUE + KEY_CREATE_SUB_KEY + READ_CONTROL
- Const KEY_EXECUTE = KEY_READ
- Const KEY_ALL_ACCESS = KEY_QUERY_VALUE + KEY_SET_VALUE + _
- KEY_CREATE_SUB_KEY + KEY_ENUMERATE_SUB_KEYS + _
- KEY_NOTIFY + KEY_CREATE_LINK + READ_CONTROL
-
- ' Types de clé Racine de la base de registres...
- Const HKEY_CLASSES_ROOT = &H80000000
- Const HKEY_CURRENT_USER = &H80000001
- Const HKEY_LOCAL_MACHINE = &H80000002
- Const HKEY_USERS = &H80000003
- Const HKEY_PERFORMANCE_DATA = &H80000004
-
- ' Valeur renvoyée...
- Const ERROR_NONE = 0
- Const ERROR_BADKEY = 2
- Const ERROR_ACCESS_DENIED = 8
- Const ERROR_SUCCESS = 0
-
- '---------------------------------------------------------------
- '- Type Security_Attributes de la base de registres...
- '---------------------------------------------------------------
- Private Type SECURITY_ATTRIBUTES
- nLength As Long
- lpSecurityDescriptor As Long
- bInheritHandle As Boolean
- End Type
-
- ' Ce module lit et écrit les clés du registre.
- ' Contrairement aux méthodes d'accès au registre interne de VB, il peut lire et
- ' écrire toutes les clés du registre avec des valeurs de chaîne.
-
- '-------------------------------------------------------------------------------
- 'Exemple d'utilisation - Debug.Print UpdateKey(HKEY_CLASSES_ROOT, "NomClé", "NouvelleValeur")
- '-------------------------------------------------------------------------------
- Public Function UpdateKey(ByVal KeyRoot As Long, KeyName As String, SubKeyName As String, SubKeyValue As String) As Boolean
- Dim rc As Long ' Code renvoyé
- Dim hKey As Long ' Descripteur de
- ' clé de la base de registres
- Dim hDepth As Long '
- Dim lpAttr As SECURITY_ATTRIBUTES ' Type Sécurité
- ' de la base de registres
-
- lpAttr.nLength = 50 ' Affecte les valeurs
- ' par défaut des
- ' attributs de sécurité
- lpAttr.lpSecurityDescriptor = 0 ' ...
- lpAttr.bInheritHandle = True ' ...
-
- '------------------------------------------------------------
- '- Crée/Ouvre une clé de base de registres...
- '------------------------------------------------------------
- rc = RegCreateKeyEx(KeyRoot, KeyName, _
- 0, REG_SZ, _
- REG_OPTION_NON_VOLATILE, KEY_ALL_ACCESS, lpAttr, _
- hKey, hDepth) ' Crée/Ouvre //KeyRoot//KeyName
-
- If (rc <> ERROR_SUCCESS) Then GoTo CreateKeyError ' Gestion des erreurs...
-
- '------------------------------------------------------------
- '- Crée/Modifie une valeur de clé...
- '------------------------------------------------------------
- If (SubKeyValue = "") Then SubKeyValue = " " ' Un espace est nécessaire pour que
- ' la fonction RegSetValueEx() fonctionne
-
- ' Crée/Modifie une valeur de clé
- rc = RegSetValueEx(hKey, SubKeyName, _
- 0, REG_SZ, _
- SubKeyValue, LenB(StrConv(SubKeyValue, vbFromUnicode)))
-
- If (rc <> ERROR_SUCCESS) Then GoTo CreateKeyError ' Gestion des erreurs
- '------------------------------------------------------------
- '- Ferme une clé de base de registres...
- '------------------------------------------------------------
- rc = RegCloseKey(hKey) ' Ferme la clé
-
- UpdateKey = True ' Renvoie succès
- Exit Function ' Quitte
- CreateKeyError:
- UpdateKey = False ' Définit le code de renvoi d'erreur
- rc = RegCloseKey(hKey) ' Tentative de fermeture de clé
- End Function
-
- '-------------------------------------------------------------------------------
- 'Exemple d'utilisation - Debug.Print GetKeyValue(HKEY_CLASSES_ROOT, "COMCTL.ListviewCtrl.1\CLSID", "")
- '-------------------------------------------------------------------------------
- Public Function GetKeyValue(ByVal KeyRoot As Long, KeyName As String, SubKeyRef As String) As String
- Dim i As Long ' Compteur de boucle
- Dim rc As Long ' Code renvoyé
- Dim hKey As Long ' Descripteur de clé de base de registres ouverte
- Dim hDepth As Long '
- Dim sKeyVal As String
- Dim lKeyValType As Long ' Type de données d'une clé de base de registres
- Dim tmpVal As String ' Stockage temporaire d'une valeur de clé de base de registres
- Dim KeyValSize As Long ' Taille d'une variable clé de base de registres
-
- ' Ouvre RegKey sous KeyRoot {HKEY_LOCAL_MACHINE...}
- '------------------------------------------------------------
- rc = RegOpenKeyEx(KeyRoot, KeyName, 0, KEY_ALL_ACCESS, hKey) ' Ouvre la clé de base de registres
-
- If (rc <> ERROR_SUCCESS) Then GoTo GetKeyError ' Gestion des erreurs
-
- tmpVal = String$(1024, 0) ' Alloue de l'espace pour la variable
- KeyValSize = 1024 ' Définit la taille de la variable
-
- '------------------------------------------------------------
- ' Récupère une valeur de clé de base de registres...
- '------------------------------------------------------------
- rc = RegQueryValueEx(hKey, SubKeyRef, 0, _
- lKeyValType, tmpVal, KeyValSize) ' Lit/Crée une valeur de clé
-
- If (rc <> ERROR_SUCCESS) Then GoTo GetKeyError ' Gestion des erreurs
-
- tmpVal = Left$(tmpVal, InStr(tmpVal, Chr(0)) - 1)
-
- '------------------------------------------------------------
- ' Détermine le type de valeur de clé pour la conversion...
- '------------------------------------------------------------
- Select Case lKeyValType ' Recherche des types de données...
- Case REG_SZ, REG_EXPAND_SZ ' Type de données String de clé de base de registres
- sKeyVal = tmpVal ' Copie la valeur String
- Case REG_DWORD ' Type de données Double Word de clé de base de registres
- For i = Len(tmpVal) To 1 Step -1 ' Convertit chaque bit
- sKeyVal = sKeyVal + Hex(Asc(Mid(tmpVal, i, 1))) ' Génère la valeur car. par car.
- Next
- sKeyVal = Format$("&h" + sKeyVal) ' Convertit le type Double Word en String
- End Select
-
- GetKeyValue = sKeyVal ' Valeur renvoyée
- rc = RegCloseKey(hKey) ' Ferme la clé de base de registres
- Exit Function ' Quitte
-
- GetKeyError: ' Nettoyage après apparition d'une erreur...
- GetKeyValue = vbNullString ' Affecte une chaîne vide à la valeur renvoyée
- rc = RegCloseKey(hKey) ' Ferme la clé de base de registres
- End Function
- [/CodeVB]
-
[CodeVB]
' Ce module lit et écrit les clés de la base de registres. Contrairement
' aux méthodes d'accès à la base de regitres interne de VB, il peut lire
' et écrire toute les clés du registre avec des valeurs de type chaîne.
Option Explicit
'---------------------------------------------------------------
'- Déclarations des API de base de registres...
'---------------------------------------------------------------
Private Declare Function RegCloseKey Lib "advapi32" (ByVal hKey As Long) As Long
Private Declare Function RegCreateKeyEx Lib "advapi32" Alias "RegCreateKeyExA" (ByVal hKey As Long, ByVal lpSubKey As String, ByVal Reserved As Long, ByVal lpClass As String, ByVal dwOptions As Long, ByVal samDesired As Long, ByRef lpSecurityAttributes As SECURITY_ATTRIBUTES, ByRef phkResult As Long, ByRef lpdwDisposition As Long) As Long
Private Declare Function RegOpenKeyEx Lib "advapi32" Alias "RegOpenKeyExA" (ByVal hKey As Long, ByVal lpSubKey As String, ByVal ulOptions As Long, ByVal samDesired As Long, ByRef phkResult As Long) As Long
Private Declare Function RegQueryValueEx Lib "advapi32" Alias "RegQueryValueExA" (ByVal hKey As Long, ByVal lpValueName As String, ByVal lpReserved As Long, ByRef lpType As Long, ByVal lpData As String, ByRef lpcbData As Long) As Long
Private Declare Function RegSetValueEx Lib "advapi32" Alias "RegSetValueExA" (ByVal hKey As Long, ByVal lpValueName As String, ByVal Reserved As Long, ByVal dwType As Long, ByVal lpData As String, ByVal cbData As Long) As Long
'---------------------------------------------------------------
'- Constantes des API de base de registres...
'---------------------------------------------------------------
' Types de données de base de registres...
Const REG_SZ = 1 ' chaîne Unicode terminée par nul
Const REG_EXPAND_SZ = 2 ' chaîne Unicode terminée par nul
Const REG_DWORD = 4 ' nombre 32-bit
' Valeurs de type de création...
Const REG_OPTION_NON_VOLATILE = 0 ' clé préservée lorsque le système
' est redémarré
' Options de sécurité de clé de base de registres...
Const READ_CONTROL = &H20000
Const KEY_QUERY_VALUE = &H1
Const KEY_SET_VALUE = &H2
Const KEY_CREATE_SUB_KEY = &H4
Const KEY_ENUMERATE_SUB_KEYS = &H8
Const KEY_NOTIFY = &H10
Const KEY_CREATE_LINK = &H20
Const KEY_READ = KEY_QUERY_VALUE + KEY_ENUMERATE_SUB_KEYS + KEY_NOTIFY + READ_CONTROL
Const KEY_WRITE = KEY_SET_VALUE + KEY_CREATE_SUB_KEY + READ_CONTROL
Const KEY_EXECUTE = KEY_READ
Const KEY_ALL_ACCESS = KEY_QUERY_VALUE + KEY_SET_VALUE + _
KEY_CREATE_SUB_KEY + KEY_ENUMERATE_SUB_KEYS + _
KEY_NOTIFY + KEY_CREATE_LINK + READ_CONTROL
' Types de clé Racine de la base de registres...
Const HKEY_CLASSES_ROOT = &H80000000
Const HKEY_CURRENT_USER = &H80000001
Const HKEY_LOCAL_MACHINE = &H80000002
Const HKEY_USERS = &H80000003
Const HKEY_PERFORMANCE_DATA = &H80000004
' Valeur renvoyée...
Const ERROR_NONE = 0
Const ERROR_BADKEY = 2
Const ERROR_ACCESS_DENIED = 8
Const ERROR_SUCCESS = 0
'---------------------------------------------------------------
'- Type Security_Attributes de la base de registres...
'---------------------------------------------------------------
Private Type SECURITY_ATTRIBUTES
nLength As Long
lpSecurityDescriptor As Long
bInheritHandle As Boolean
End Type
' Ce module lit et écrit les clés du registre.
' Contrairement aux méthodes d'accès au registre interne de VB, il peut lire et
' écrire toutes les clés du registre avec des valeurs de chaîne.
'-------------------------------------------------------------------------------
'Exemple d'utilisation - Debug.Print UpdateKey(HKEY_CLASSES_ROOT, "NomClé", "NouvelleValeur")
'-------------------------------------------------------------------------------
Public Function UpdateKey(ByVal KeyRoot As Long, KeyName As String, SubKeyName As String, SubKeyValue As String) As Boolean
Dim rc As Long ' Code renvoyé
Dim hKey As Long ' Descripteur de
' clé de la base de registres
Dim hDepth As Long '
Dim lpAttr As SECURITY_ATTRIBUTES ' Type Sécurité
' de la base de registres
lpAttr.nLength = 50 ' Affecte les valeurs
' par défaut des
' attributs de sécurité
lpAttr.lpSecurityDescriptor = 0 ' ...
lpAttr.bInheritHandle = True ' ...
'------------------------------------------------------------
'- Crée/Ouvre une clé de base de registres...
'------------------------------------------------------------
rc = RegCreateKeyEx(KeyRoot, KeyName, _
0, REG_SZ, _
REG_OPTION_NON_VOLATILE, KEY_ALL_ACCESS, lpAttr, _
hKey, hDepth) ' Crée/Ouvre //KeyRoot//KeyName
If (rc <> ERROR_SUCCESS) Then GoTo CreateKeyError ' Gestion des erreurs...
'------------------------------------------------------------
'- Crée/Modifie une valeur de clé...
'------------------------------------------------------------
If (SubKeyValue = "") Then SubKeyValue = " " ' Un espace est nécessaire pour que
' la fonction RegSetValueEx() fonctionne
' Crée/Modifie une valeur de clé
rc = RegSetValueEx(hKey, SubKeyName, _
0, REG_SZ, _
SubKeyValue, LenB(StrConv(SubKeyValue, vbFromUnicode)))
If (rc <> ERROR_SUCCESS) Then GoTo CreateKeyError ' Gestion des erreurs
'------------------------------------------------------------
'- Ferme une clé de base de registres...
'------------------------------------------------------------
rc = RegCloseKey(hKey) ' Ferme la clé
UpdateKey = True ' Renvoie succès
Exit Function ' Quitte
CreateKeyError:
UpdateKey = False ' Définit le code de renvoi d'erreur
rc = RegCloseKey(hKey) ' Tentative de fermeture de clé
End Function
'-------------------------------------------------------------------------------
'Exemple d'utilisation - Debug.Print GetKeyValue(HKEY_CLASSES_ROOT, "COMCTL.ListviewCtrl.1\CLSID", "")
'-------------------------------------------------------------------------------
Public Function GetKeyValue(ByVal KeyRoot As Long, KeyName As String, SubKeyRef As String) As String
Dim i As Long ' Compteur de boucle
Dim rc As Long ' Code renvoyé
Dim hKey As Long ' Descripteur de clé de base de registres ouverte
Dim hDepth As Long '
Dim sKeyVal As String
Dim lKeyValType As Long ' Type de données d'une clé de base de registres
Dim tmpVal As String ' Stockage temporaire d'une valeur de clé de base de registres
Dim KeyValSize As Long ' Taille d'une variable clé de base de registres
' Ouvre RegKey sous KeyRoot {HKEY_LOCAL_MACHINE...}
'------------------------------------------------------------
rc = RegOpenKeyEx(KeyRoot, KeyName, 0, KEY_ALL_ACCESS, hKey) ' Ouvre la clé de base de registres
If (rc <> ERROR_SUCCESS) Then GoTo GetKeyError ' Gestion des erreurs
tmpVal = String$(1024, 0) ' Alloue de l'espace pour la variable
KeyValSize = 1024 ' Définit la taille de la variable
'------------------------------------------------------------
' Récupère une valeur de clé de base de registres...
'------------------------------------------------------------
rc = RegQueryValueEx(hKey, SubKeyRef, 0, _
lKeyValType, tmpVal, KeyValSize) ' Lit/Crée une valeur de clé
If (rc <> ERROR_SUCCESS) Then GoTo GetKeyError ' Gestion des erreurs
tmpVal = Left$(tmpVal, InStr(tmpVal, Chr(0)) - 1)
'------------------------------------------------------------
' Détermine le type de valeur de clé pour la conversion...
'------------------------------------------------------------
Select Case lKeyValType ' Recherche des types de données...
Case REG_SZ, REG_EXPAND_SZ ' Type de données String de clé de base de registres
sKeyVal = tmpVal ' Copie la valeur String
Case REG_DWORD ' Type de données Double Word de clé de base de registres
For i = Len(tmpVal) To 1 Step -1 ' Convertit chaque bit
sKeyVal = sKeyVal + Hex(Asc(Mid(tmpVal, i, 1))) ' Génère la valeur car. par car.
Next
sKeyVal = Format$("&h" + sKeyVal) ' Convertit le type Double Word en String
End Select
GetKeyValue = sKeyVal ' Valeur renvoyée
rc = RegCloseKey(hKey) ' Ferme la clé de base de registres
Exit Function ' Quitte
GetKeyError: ' Nettoyage après apparition d'une erreur...
GetKeyValue = vbNullString ' Affecte une chaîne vide à la valeur renvoyée
rc = RegCloseKey(hKey) ' Ferme la clé de base de registres
End Function
[/CodeVB]
Conclusion
Pas mal utile. NB : J'ai pas de Zippeur alors faites un Copier-coller [:)] Bonne Progr a tous
Sources du même auteur
Sources de la même categorie
Commentaires et avis
Discussions en rapport avec ce code source dans le forum
Utilisation de la base de registre [ par myarouvb ]
Bonjour,J'ai récupéré des outils pour utiliser la base de registre (http://www.vbfrance.com/code.aspx?ID=7040)Mais je ne comprends pas
utilisation de CommandBars [ par fbou0511 ]
Je suis dans un code access (vba) et je souhaite utiliser des menu contextuel dans un tableau. Pas de pb jusque là...Dans mes actions, j'utilise
Utiliser un event dans un module (utilisation des threads) [ par lapoisse ]
Bonjour,J'utilise un thread pour effectuer un traitement en tache de fond. ça marche trés bien.J'ai mis la fonction de thread dans
Utiliser un event dans un module (utilisation des threads) [ par lapoisse ]
Bonjour,J'utilise un thread pour effectuer un traitement en tache de fond. ça marche trés bien.J'ai mis la fonction de thread dans
probleme d'utilisation de dll [ par igorpastis ]
salut,je doit programmer une communication serie en vb qui doit utiliser une dll qui a apparemment été dévellopé sous VC++ et
Excel/VBA : utilisation de fonctions Excel sous VBA [ par nico39 ]
Bonjour,Sous VBA, je dosi utiliser beaucoup de fois des fonctions Excel très simples mais qwui nécessite un peu de "gymnastique" litt&#
Utilisation du modem interne [ par kinouseba ]
Bonjour,je vous explique mon problème:je dois récupérer sur mon PC des données numériques synchrones. Vu la distance, un mode
Recherche aide pour utilisation des control utilisateurs [ par xanadev ]
Bonjour à tous et merci pour ce site ...Généralement, je pose rarement de question parceque je trouve toujours mon bonheur sur ce site
Utilisation d'un modem interne [ par kinouseba ]
Bonjour,je vous explique mon problème:je dois récupérer sur mon PC des données numériques synchrones. Vu la distance, un mode
Utilisation des espions [ par myarouvb ]
Bonjour,J'aimerais savoir comment fonctionnent les espions pour les variables VB.Les ajouter, ok! Mais ensuite, comment suivre pas à pas l'é
|
Derniers Blogs
[WP7] DYNAMICALLY CHANGE STARTUP PAGE[WP7] DYNAMICALLY CHANGE STARTUP PAGE par KooKiz
Let's say that you want to allow the user to customize the startup page of your application. You can easily change the startup page by editing the 'NavigationPage' attribute in the manifest file. But the manifest cannot be modified once the applicatio...
Cliquez pour lire la suite de l'article par KooKiz SESSION SILVERLIGHT 5 3D : SLIDES ET DEMOSSESSION SILVERLIGHT 5 3D : SLIDES ET DEMOS par Groc
Durant les techdays, j'ai eu le plaisir d'animer une session sur Silverlight 5 et la 3D avec Simon Ferquel. Comme promis, voici nos slides et mes démos (celles avec le viper BSG) ici et là. Pour mémoire, les démos utilisent toutes le viper BSG...
Cliquez pour lire la suite de l'article par Groc [TECHDAYS 2012] SESSION WEBMATRIX 2 : LE COUTEAU SUISSE GRATUIT POUR VOS DéVELOPPEMENTS WEB - SLIDES[TECHDAYS 2012] SESSION WEBMATRIX 2 : LE COUTEAU SUISSE GRATUIT POUR VOS DéVELOPPEMENTS WEB - SLIDES par gpommier
Suite à la session que j'ai présenté sur WebMatrix 2, vous pouvez trouver les slides ici, ainsi que les démos en packages nuget : démos1 et démos2 J'en profite pour remercier chaleureusement tous ceux qui sont venus très nombreux à cette sess...
Cliquez pour lire la suite de l'article par gpommier [SHAREPOINT] LES SESSIONS TECHDAYS 2012.[SHAREPOINT] LES SESSIONS TECHDAYS 2012. par Patrick Guimonet
Voici donc pour ceux qui n'ont pas pu venir, ou ceux qui n'ont pas pu toutes les suivre la liste des sessions SharePoint aux TechDays 2012, que je mettrais à jour dès que les liens des vidéo seront disponibles. Ou ici : http...
Cliquez pour lire la suite de l'article par Patrick Guimonet TECHDAYS PARIS 2012 : SESSION PLEINIèRE JOUR 3TECHDAYS PARIS 2012 : SESSION PLEINIèRE JOUR 3 par ROMELARD Fabrice
Speaker: Bernard Ourghanlian Cette session est comme chaque jour transmise en live par BrainSonic, et j'ai donc suivi cette troisième pleinière par ce moyen sur mon iPad . Elle est dédiée comme chaque année à la mise en perspective de l'é...
Cliquez pour lire la suite de l'article par ROMELARD Fabrice
Forum
LISTER KEYS.KEYLISTER KEYS.KEY par Onin42
Cliquez pour lire la suite par Onin42
Logiciels
Tribler (2012)TRIBLER (2012)Tribler est un client pair à pair (P2P/Peer-to-Peer) open source avec la capacité de regarder des... Cliquez pour télécharger Tribler OneSwarm (2012)ONESWARM (2012)Le peer-to-peer qui protège votre vie privée, c'est OneSwarm.
Ce logiciel de peer-to-peer crypté... Cliquez pour télécharger OneSwarm PONAMEDIA PREMIUM - HELLLOOO FLASH DEMO (V8.4)PONAMEDIA PREMIUM - HELLLOOO FLASH DEMO (V8.4)PONAMEDIA TV DEVIENS HELLLOOO FLASH
LA TV SUR VOTRE ORDINATEUR.
Toute une plateforme Multi... Cliquez pour télécharger PONAMEDIA PREMIUM - HELLLOOO FLASH DEMO Academy System (17.2.1.0)ACADEMY SYSTEM (17.2.1.0)Logiciel de gestion des établissements.
- élèves/étudiants (inscription, dossier, absence...)
-... Cliquez pour télécharger Academy System Easy-Planning (1.0.0.1)EASY-PLANNING (1.0.0.1)Basé sur les mêmes principes que MyPlanning, Easy-Planning permet de créer des plannings sous la ... Cliquez pour télécharger Easy-Planning
|