Accueil > Forum > > > > faire fonctionner une API dans une DLL
faire fonctionner une API dans une DLL
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 SubDaniel
|
|
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
|
jeudi 21 avril 2005 à 17:23:15 |
Re : faire fonctionner une API dans une DLL

DARKSIDIOUS
|
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ée 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
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
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
GetpX [ par neurosupherot ]
getpixel me retourne une valeur de -1. je sais que c'est parce que ça n'existe pas mais pourtant si. getpixel(form1.picture1.hdc, 1,1) alors que celle
Split [ par alex_kirchen ]
Salut, c'est encore moi!(Ce soir, je ne comprends vraiment rien!)Alors, voilà: je cherche l'équivalent Visual Basic de la fonction split() PHP.Non pas
création d'un point exe [ par j621473 ]
Lorsque je crée mon .exej'ai l'impression que l'expression suivante n'est pas compilée : Call SendMessage(HWND_BROADCAST, WM_SETTINGCHANGE, 0, "Enviro
Livres en rapport
|
Derniers Blogs
[HTML5] SLIDES ET DéMOS : AUTOUR DU W3C , NOUVEAUX STANDARDS ET WEB MOBILE (LILLE)[HTML5] SLIDES ET DéMOS : AUTOUR DU W3C , NOUVEAUX STANDARDS ET WEB MOBILE (LILLE) par Gio
Très bonne après-midi passée lors cette conférence avec le W3C, organisée par L' Inria sur les nouveaux standards, ce Mardi 14 Février, on sent vraiment que çà bosse au W3C, et l'avenir est très très prometteur pour le HTML5, notamment ...
Cliquez pour lire la suite de l'article par Gio GESTION D'EXCEPTION AVEC LES TASKSGESTION D'EXCEPTION AVEC LES TASKS par richardc
Nous avons vu dans un précédent article comment utiliser Task pour effectuer des opérations dans un autre thread.
Malheureusement, comme tout le monde n'est pas parfait, il se peut que cette exécution se passe mal et qu'une exception se produise.
La...
Cliquez pour lire la suite de l'article par richardc DéMARRONS AVEC LES TASKSDéMARRONS AVEC LES TASKS par richardc
Que vous le vouliez ou non, le développement multi-tâche est maintenant une obligation pour toute nouvelle application. Il est donc vital d'en comprendre les mécanismes et de s'y mettre le plus tôt possible.
En attendant le .NET Framework 4.5 avec le...
Cliquez pour lire la suite de l'article par richardc SLIDE & DéMO TECHDAYS 2012 - FAST & FURIOUS XAML APPSSLIDE & DéMO TECHDAYS 2012 - FAST & FURIOUS XAML APPS par Vko
Retrouvez les slides et les démo de ma session Fast & Furious XAML Apps. A ceux qui se posent la question : "est-ce que le code de la DataGrid est disponible?", je vous répondrais "pas encore". Je vais mettre en place un projet codeplex pour part...
Cliquez pour lire la suite de l'article par Vko
Forum
RE : VITESSERE : VITESSE par ucfoutu
Cliquez pour lire la suite par ucfoutu
Logiciels
DocTranslate (V3.1.0.0)DOCTRANSLATE (V3.1.0.0)DocTranslate est un traducteur de document Microsoft Word, PowerPoint et Excel. Il permet d'autom... Cliquez pour télécharger DocTranslate 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
|