Vous ne trouvez pas de réponse à votre problème ? Alors posez la question dans le forum. Souvenez-vous qu'il n'y a jamais de question bête, mais rester dans l'ignorance parce que l'on n'ose pas poser une question, ça c'est une erreur !

Sujet : faire fonctionner une API dans une DLL [ Archives Visual Basic / J'AI BESOIN D'AIDE !!!! :) ] (VBREP)

jeudi 21 avril 2005 à 16:38:35 | faire fonctionner une API dans une DLL

VBREP

salut à tous
j'ai mis api SetTimer dans 1 class pour faire un dll

lors de la compilation : erreur de compilation " utilisation incorrecte de l'operateur AddressOf"

ce que j'ai ou que l'on ma presenter

Il faut faire un wrapper pour AddressOf, car tu ne peux pas l'utiliser directement dans un appel d'API, qui attend un Long.

' Fonction   : GetFuncAdr
' Auteur     : Christophe RENAUD
' Objet      : Retourne l'adresse d'une fonction. En effet, le mot-clé 'AddressOf' ne peut être utilisé directement
' Arguments  : ByVal Adr As Long : Adresse de la fonction
' Retour     : Long : L'adresse de la fonction
'
Private Function GetFuncAdr(ByVal Adr As Long) As Long
    ' C'est idiot mais totalement indispensable
    GetFuncAdr = Adr
End Function

Et tu t'en sert comme cela :
SetTimer(..., ..., ..., GetFuncAdr(AddressOf Le nom de ta fonction))

Il n'y a pas de fonction plus con de GetFuncAdr, mais la syntaxe de AddressOf  la rend obligatoire : Ceci est du au fait que, en VB, AddressOf est un opérateur et non pas une fonction (pas de parenthèses). Et une API ne peut recevoir un Opérateur en tant que argument.

essai

SetTimer Form1.hwnd, 5 , 1000 , addressof  NomduSub = erreur
SetTimer Form1.hwnd, 5 , 1000 , adr NomduSub = erreur
SetTimer Form1.hwnd, 5 , 1000 , GetFuncAdr NomduSub = erreur

SetTimer(Form1.Hwnd, 5 , 1000, GetFuncAdr(AddressOf LeNomDeTaSub))

SetTimer Form1.hwnd, 5, 1000, GetFuncAdr(AddressOf NomDu Sub) =
erreur de compilation "Utilisation de l'operateur AddressOf"

et si

SetTimer (Form1.hwnd, 5, 1000, GetFuncAdr(AddressOf NomDu Sub))  =
erreur de compilation "Attendu ="

rien de tous ce que vous avez lu jusque la ne fonctione

merci d'avance de votre aide


jeudi 21 avril 2005 à 16:59:22 | Re : faire fonctionner une API dans une DLL

Gobillot

dans un module

Public Declare
Function SetTimer Lib "user32" (ByVal hwnd As Long, ByVal nIDEvent As Long, ByVal uElapse As Long, ByVal lpTimerFunc As Long) As Long

Public Declare Function KillTimer Lib "user32" (ByVal hwnd As Long, ByVal nIDEvent As Long) As Long

Public Sub TimerProc(ByVal hwnd As Long, ByVal nIDEvent As Long, ByVal uElapse As Long, ByVal lpTimerFunc As Long)
       'ton programme
End Sub


dans la Forme

Private
Sub Form_Load()
    SetTimer Me.hwnd, 0, 1000, AddressOf TimerProc
End Sub

Private
Sub Form_Unload(Cancel As Integer)
    KillTimer Me.hwnd, 0
End Sub


Daniel

jeudi 21 avril 2005 à 17:05:29 | Re : faire fonctionner une API dans une DLL

VBREP

1 MODULE N'EST PAS 1 DLL
MERCI QUAND MEME
MAIS PAS BON

jeudi 21 avril 2005 à 17:10:52 | Re : faire fonctionner une API dans une DLL

Gobillot

n'empêche que tu dois le mettre en Public.
que tu peux faire appel à AdressOf directement.
que dans "AddressOf NomDu Sub" c'est pas très bon non plus.
et faut pas oublier le KillTimer à la fin.

Daniel

jeudi 21 avril 2005 à 17:16:43 | Re : faire fonctionner une API dans une DLL

VBREP

IL FAUT QUE SETTIMER SOIT DANS LA CLASS DU DLL ET PAS DANS L'APPLI
SINON AUCUN INTERET A FAIRE UN DLL

jeudi 21 avril 2005 à 17:23:15 | Re : faire fonctionner une API dans une DLL

DARKSIDIOUS

Membre Club Administrateur CodeS-SourceS
Pas besoin de t'énerver VBREP !

Ce que veux sûrement dire Gobillot, c'est que pour utiliser AddressOf, il faut que la fonction soit dans une zone de mémoire non modifiable, et donc, elle ne peux pas se situer dans un module de classe vu que celui-ci peut être instancié, et donc, les adresses des fonctions sont variables.

Donc, il faut mettre ta fonction dans un module classique, et y faire appel à partir du module de classe de ta dll (le module classique étant dans le projet de ta dll bien entendu !).

DarK Sidious

Un API Viewer (pour le VB, VB.NET, C, C# et Delphi) : www.ProgOtoP.com/popapi/



Cette discussion est classé dans : fonction, hwnd, form1, addressof, getfuncadr


Répondre à ce message

Sujets en rapport avec ce message

appeler une fonction d'un autre formulaire [ par choup ] Bonjour,je me trouve dans mon formulaire "Form1" et je cherche à faire appel à une fonction "fonction1" située dans mon formulaire "form2".J'ai essayé Récupérer le handle d'un contrôle qui n'a pas de fonction ".hwnd" !!!!!!!!!!!!!!!!! please help ! [ par Blousé ] Pour pouvoir donner le look office 2000 (fait à partir d'une des sources du site...) à mes contrôles, j'utilise forms 2.0, mais le prob, c que pour le fileexists() + lecture [ par saveourssouls ] Voila en fait, j'aimerais savoir deja comment marche la fonction fileexists()?Et j'aimerais aussi savoir :-si après avoir utulisé la fonction fileexis AddressOf ??? [ par ratala ] Bonjour, je suis débutant et je ne conprend pas tres bien a quoi sert la fonction AddressOf de plus la doc de VB n'est pas tres explicite pour cette f VB.Net Appel d'une fonction [ par JeffC1977 ] Salut...J'appele un Module à partir de ma Form....Quand je rentre dans mon module (dans la Fonction), à la première ligne ca me sort un message me dis Connaitre tous les SendMessage [ par salazar ] Je souhaiterai espionner tous les sendmessages véhiculés pas Windows XP, pour les enregistrer. Or pour l'utilisation de l'API il faut définir un hWnd J'aimerais atteindre une fonction dans Form1 depuis Form2 mais sans succès [ par beegeezzz ] Bonjour tout le monde,J'ai deux formulaires nommés Form1 et Form2.Dans Form1 j'ai une variable de type recordset nommée rsTable déclarée juste en dess ouvrir le formulaire « insérer une fonction » d'Excel avec VB.NET [ par souma86 ] Bonjour, J'ai un projet à travailler avec le vb.net.Dans mon code, je ai besoin d'ouvrir le formulaire « insérer une fonction » d'Excel, mais je ne sa Lien entre fichier [ par eriz64 ] Bonjour,J'ai un soucis de lien entre fichier.J'ai un fichier Excel qui contiens des valeurs en fonction du numéro du mois :1      2       3   4   5   Fonction Trim : erreur de compilation [ par Kartograv ] Bonjour à tous,J'ai un problème au débugage de mon sub. Avec le message "Erreur de compilation. Projet ou bibliothèque introuvable" qui s'applique à "


Nos sponsors

Sondage...

CalendriCode

Juillet 2009
LMMJVSD
  12345
6789101112
13141516171819
20212223242526
2728293031  

Consulter la suite du CalendriCode

Téléchargements

Logiciels à télécharger sur le même thème :

Comparez les prix Nouvelle version

Photothèque Nouveau !



Développement réalisé par Nicolas SOREL (Nix) avec l'aide de : Cyril DURAND et Emmanuel (EBArtSoft), Merci à Vincent pour ses précieux conseils
CodeS-SourceS.com© Toute reproduction même partielle est interdite sauf accord écrit du Webmaster
CodeS-SourceS.com© est une marque déposée tous droits réservés
Temps d'éxécution de la page : 0,546 sec

Google Coop CodeS-SourceS Google Coop CodeS-SourceS


Certaines images présentes sur le site (notament certains avatars) sont issues des collections IconShock, donc si vous souhaitez utiliser ces icons vous devez les acheter, ne les copiez pas et ne utilisez pas dans vos sites et applications sans les avoir commandé.