Trouver le menu demarrer

DuncanIdaho Messages postés 98 Date d'inscription mardi 1 janvier 2002 Statut Membre Dernière intervention 12 février 2008 - 24 août 2002 à 13:21
MysTiK74 Messages postés 32 Date d'inscription vendredi 23 août 2002 Statut Membre Dernière intervention 7 mars 2003 - 20 sept. 2002 à 14:29
Salut, je voudrais pvr mettre un raccourcis dans le menu demarrer, ms je c pas comment le trouver... g essaye avec GetSpecialFolder, sa marche pas :(

@++

5 réponses

MysTiK74 Messages postés 32 Date d'inscription vendredi 23 août 2002 Statut Membre Dernière intervention 7 mars 2003
24 août 2002 à 23:14
Adieu p'tit

d'abord il faut récupérer la version de windows avec cette fonction (pas forcement necessaire)

' La fonction GetVersion retourne le systême en cours.
Private Declare Function GetVersion Lib "kernel32" () As Long

'ensuite la stocker
Global Const mlngWindows95 = 0 ' Mode Windows 95-98
Global Const mlngWindowsNT = 1 ' Mode Windows NT

Public Sub GetWinVer()
Dim lngVersion As Long
lngVersion = GetVersion()
If ((lngVersion And &H80000000) = 0) Then
glngWhichWindows32 = mlngWindowsNT
Else
glngWhichWindows32 = mlngWindows95
End If
End Sub

ensuite y faut aller chercher dans la base de registre windows le répertoire "Démarrer" ou "start menu"

pour acceder aux infos de la base de registre
utilise les fonctions suivantes:

' Facilite l'accès aux registres
Public Function GetKeyValue(KeyRoot As Long, KeyName As String, SubKeyRef As String, ByRef KeyVal As String) As Boolean
Dim i As Long ' Compteur de boucle.
Dim rc As Long ' Code de retour.
Dim hKey As Long ' Descripteur d'une clé de base de registres ouverte.
Dim hDepth As Long '
Dim KeyValType As Long ' Type de données d'une clé de base de registres.
Dim tmpVal As String ' Stockage temporaire pour une valeur de clé de base de registres.
Dim KeyValSize As Long ' Taille de la variable de la clé de base de registres.
'------------------------------------------------------------
' Ouvre la clé de base de registres sous la racine clé {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 ' Gère l'erreur...

tmpVal = String$(1024, 0) ' Alloue de l'espace pour la variable.
KeyValSize = 1024 ' Définit la taille de la variable.

'------------------------------------------------------------
' Extrait la valeur de la clé de base de registres...
'------------------------------------------------------------
rc = RegQueryValueEx(hKey, SubKeyRef, 0, _
KeyValType, tmpVal, KeyValSize) ' Obtient/Crée la valeur de la clé.

If (rc <> ERROR_SUCCESS) Then GoTo GetKeyError ' Gère l'erreur.

If (Asc(Mid(tmpVal, KeyValSize, 1)) = 0) Then ' Win95 ajoute une chaîne terminée par un caractère nul...
tmpVal = Left(tmpVal, KeyValSize - 1) ' Caractère nul trouvé, extrait de la chaîne.
Else ' WinNT ne termine pas la chaîne par un caractère nul...
tmpVal = Left(tmpVal, KeyValSize) ' Caractère nul non trouvé, extrait la chaîne uniquement.
End If
'------------------------------------------------------------
' Détermine le type de valeur de la clé pour la conversion...
'------------------------------------------------------------
Select Case KeyValType ' Recherche les types de données...
Case REG_SZ ' Type de données chaîne de la clé de la base de registres.
KeyVal = tmpVal ' Copie la valeur de la chaîne.
Case REG_DWORD ' Type de données double mot de la clé de base de registres.
For i = Len(tmpVal) To 1 Step -1 ' Convertit chaque bit.
KeyVal = KeyVal + Hex(Asc(Mid(tmpVal, i, 1))) ' Construit la valeur caractère par caractère.
Next
KeyVal = Format$("&h" + KeyVal) ' Convertit le mot double en chaîne.
End Select

GetKeyValue = True ' Retour avec succès.
rc = RegCloseKey(hKey) ' Ferme la clé de base de registres
Exit Function ' Quitte.

GetKeyError: ' Réinitialise après qu'une erreur s'est produite...
KeyVal = "" ' Affecte une chaîne vide à la valeur de retour.
GetKeyValue = False ' Retour avec échec.
rc = RegCloseKey(hKey) ' Ferme la clé de base de registres.
End Function

' ensuite utilise la comme ca
GetKeyValue HKEY_CURRENT_USER, "Control Panel\Desktop", "Wallpaper", CoulFont

' c'est un exemple de lecture

la clef que tu cherche est la
HKEY_CURRENT_USER\
Software\
Microsoft\
Windows\
CurrentVersion\
Explorer\
User Shell Folders\

la clef est "Start Menu"

et tu aura besoin de ces déclarations de constantes spécifiques à l'acces aux bases de registres

Const gREGKEYSYSINFOLOC = "Control Panel\Colors"
Const gREGVALSYSINFOLOC = "Background"
Const gREGKEYSYSINFO = "Control Panel\Colors"
Const gREGVALSYSINFO = "Background"

' Gestion des clés de la base de registres...
Const HKEY_LOCAL_MACHINE = &H80000002
Const HKEY_CURRENT_USER = &H80000001
Const ERROR_SUCCESS = 0
Const REG_SZ = 1 ' Chaîne terminée par un caractère nul Unicode.
Const REG_DWORD = 4 ' Nombre 32 bits.

' Options de sécurité des clés 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_ALL_ACCESS = KEY_QUERY_VALUE + KEY_SET_VALUE + _
KEY_CREATE_SUB_KEY + KEY_ENUMERATE_SUB_KEYS + _
KEY_NOTIFY + KEY_CREATE_LINK + READ_CONTROL

t'as plus qu'a récupérer le répertoire et à y rajouter ton raccourci...

et ...
et....
et c'est gagné....

A r'vi pa...

Partager ce qu'on sait c'est laisser une trace de notre passage...
0
DuncanIdaho Messages postés 98 Date d'inscription mardi 1 janvier 2002 Statut Membre Dernière intervention 12 février 2008
25 août 2002 à 00:03
OK, merci, je v tester sa :)
0
MysTiK74 Messages postés 32 Date d'inscription vendredi 23 août 2002 Statut Membre Dernière intervention 7 mars 2003
25 août 2002 à 00:10
Adieu p'tit

reponds si y a des pbs

A r'vi pa...

Partager ce qu'on sait c'est laisser une trace de notre passage...
0
cs_babouche Messages postés 61 Date d'inscription jeudi 30 mai 2002 Statut Membre Dernière intervention 2 mai 2007
20 sept. 2002 à 12:39
8-) Slut, 8-)

Est ce que tu peux m'envoyer la partie de cette source qui permet de détecter la version de Windobe (Fuck MicroSoft :-p ). Est ce qu'elle marche pour Win ME ( = Merdic edition :-p ) et XP (et 3.11 et 1.00 :))

>>> Bonne prog et bon hack !!!
:approve) :approve) :approve) :approve) :approve) :approve) :approve) :approve) :approve) :approve) :approve) :approve) :approve)
0

Vous n’avez pas trouvé la réponse que vous recherchez ?

Posez votre question
MysTiK74 Messages postés 32 Date d'inscription vendredi 23 août 2002 Statut Membre Dernière intervention 7 mars 2003
20 sept. 2002 à 14:29
Adieu p'tit

' La fonction GetVersion retourne le systême en cours.
Private Declare Function GetVersion Lib "kernel32" () As Long

'ensuite la stocker
Global Const mlngWindows95 = 0 ' Mode Windows 95-98
Global Const mlngWindowsNT = 1 ' Mode Windows NT

Public Sub GetWinVer()
Dim lngVersion As Long
lngVersion = GetVersion()
If ((lngVersion And &H80000000) = 0) Then
glngWhichWindows32 = mlngWindowsNT
Else
glngWhichWindows32 = mlngWindows95
End If
End Sub

y fo verifier ce que contient "lngVersion" en fonction du systeme utilise.
j'ai pas testé sous XP et 2000
bon courage

A r'vi pa...

Partager ce qu'on sait c'est laisser une trace de notre passage...
0
Rejoignez-nous