Problème avec l'alias RegCreateKey

Résolu
cs_Jordel Messages postés 27 Date d'inscription vendredi 1 février 2002 Statut Membre Dernière intervention 14 décembre 2007 - 30 nov. 2007 à 11:26
cs_Jordel Messages postés 27 Date d'inscription vendredi 1 février 2002 Statut Membre Dernière intervention 14 décembre 2007 - 30 nov. 2007 à 12:30
Bonjour ,

Je suis en train de bosser sur la création d'un DSN via VB 2005. J'ai donc récupéré un code sur la KB de Microsoft permettant de créer ce lien en passant par la création des clés de registres adéquates.

Voici les liens des codes dont je me suis inspiré : http://www.vbfrance.com/code.aspx?ID=32103 et http://support.microsoft.com/kb/184608

Lors de l'exécution du code, j'ai une AccessViolationException : "Tentative de lecture ou d'écriture de
mémoire protégée. Cela indique souvent qu'une autre mémoire est
endommagée." au niveau de "lResult = RegCreateKey(HKEY_XX, REG_ODBCINI & DataSourceName, hKeyHandle)"

Je ne comprends pas du tout d'où peut venir mon problème...

Si vous avez une piste, n'hésitez pas !

Merci d'avance.

4 réponses

cs_casy Messages postés 7741 Date d'inscription mercredi 1 septembre 2004 Statut Membre Dernière intervention 24 septembre 2014 40
30 nov. 2007 à 11:37
Les sources que tu cite sont données pour VB6, hors toi tu travaille avec VB2005. Les types de variables ont changé entre VB6 et VB2005.

Par conséquent, dans toutes tes lignes Declare, tu dois remplacer tous les long par des integers.

Le Long de l'API Windows correspond au type Integer du Framework .Net

---- Sevyc64  (alias Casy) ----<hr size="2" width="100%" /># LE PARTAGE EST NOTRE FORCE #    http://aide-office-vba.monforum.com/index.php
3
cs_Willi Messages postés 2375 Date d'inscription jeudi 12 juillet 2001 Statut Modérateur Dernière intervention 15 décembre 2018 22
30 nov. 2007 à 11:40
Jordel, voir sur PInvoke.net pour les signatures des api en .NET.

++
3
cs_Jordel Messages postés 27 Date d'inscription vendredi 1 février 2002 Statut Membre Dernière intervention 14 décembre 2007
30 nov. 2007 à 11:58
Ahhh !!! Quel malheur !!!
Je me disais bien qu'il y avait un souci

// regarde derrière lui //
Pourtant j'ai pas mis mon boulet aujourd'hui

Merci les gars ;) Je vous tiens au jus !!!
3
cs_Jordel Messages postés 27 Date d'inscription vendredi 1 février 2002 Statut Membre Dernière intervention 14 décembre 2007
30 nov. 2007 à 12:30
Bon... la première étape passe bien : la création de la clé...

Par contre, j'ai un PInvokeStackImbalance sur la ligne d'après : lResult = RegSetValueEx(hKeyHandle, "Database", 0&, REG_SZ, DatabaseName, Len(DatabaseName))

Voici l'insulte en détail :
Un appel à la fonction PInvoke 'CdC!CdC.ModRegKey::RegSetValueEx' a déséquilibré la pile. Cela peut se produire, car la signature PInvoke managée ne correspond pas à la signature cible non managée. Vérifiez que la convention d'appel et les paramètres de la signature PInvoke correspondent à la signature non managée cible.

Désolé de faire mon boulet... (oui je l'ai retrouvé mon boulet ;)) mais je débute en VB 2005 après une belle période de VB6...

Re-merci d'avance ;)
3
Rejoignez-nous