Utilisation des fonctions de l'API Windows

Vous débutez et vous avez besoin d'aide ? N'hésitez pas à poser vos questions
kiriasse
Messages : 16
Inscription : mar. 26/avr./2005 15:53
Localisation : Hérault
Contact :

Utilisation des fonctions de l'API Windows

Message par kiriasse »

Bonjour,
Je crois que j'ai du mal à me familiariser avec le fonctionnement de ce forum. J'aurais préféré une liste fonctionnant par échange de courriers électroniques... Il faudra bien que je m'y fasse...

Je fais mes premiers pas avec PureBasic...
Quelqu'un pourrait-il me donner un exemple de code utilisant par exemple l'API GetWindowsDirectory() ?
Faut-il déclarer cette fonction API ? Comment ?
Comment obtenir le chemin complet du répertoire Windows ?

Merci pour votre aide.
Dr. Dri
Messages : 2527
Inscription : ven. 23/janv./2004 18:10

Message par Dr. Dri »

On est pas en VB, pas besoin de déclarer (sauf si tu ouvres manuellement la dll).
Pour l'utilisation, il suffit d'ajouter un _

Code : Tout sélectionner

GetWindowsDirectory_(...)
Apres pour l'utilisation de cet fonction ou d'une autre en particulier, soit quelqu'un connait et peux t'aider, soit tu cherches sur des sites comme le msdn de microsoft.

Dri ;)
kiriasse
Messages : 16
Inscription : mar. 26/avr./2005 15:53
Localisation : Hérault
Contact :

GetCurrentDirectory et GetWindowsDirectory

Message par kiriasse »

Merci de m'avoir répondu.
Voilà ci-dessous ce que j'ai essayé.
Ça marche pour la première procédure mais pas pour la seconde. Pourquoi ?
D'autre part,
1) pourquoi écrit-on « @appdir$ » et non « appdir$ » (j'ai trouvé cette écriture sur ce forum).
2) Que signifie le « .s » après « Procedure » ? Je suppose que ça signifie « string » mais est-ce indispensable ? C'est parce que la procédure est une fonction qui renvoie une valeur string ?

<--->
Procedure.s Applicationdir()
appdir$ = Space(255)
GetCurrentDirectory_(255, @appdir$)
If Right(appdir$, 1) <> "\" ; si l'adresse ne finit pas par "\"
appdir$ = appdir$ + "\" ; on rajoute le "\"
EndIf
ProcedureReturn appdir$
EndProcedure

MessageRequester("Répertoire de l'application",Applicationdir(),0 + 64)

Procedure.s WindowsDir()
WinDir$ = Space(255)
GetWindowsDirectory_(255, @WinDir$)
If Right(WinDir$, 1) <> "\"
WinDir$ = WinDir$ + "\"
EndIf
ProcedureReturn WinDir$
EndProcedure

MessageRequester("Répertoire Windows",WindowsDir(),0 + 64)

End
<--->

Merci d'avance.
dlolo
Messages : 118
Inscription : ven. 18/févr./2005 16:29

Message par dlolo »

Salut,

Pour la seconde procedure, il faut inverser les paramètres, l'adresse de windir en premier et ensuite la taille du buffer !

Oui, c'est l'inverse de GetCurrentDirectory_(), c'est logique non ?
Non ? ah bon...
Dr. Dri
Messages : 2527
Inscription : ven. 23/janv./2004 18:10

Message par Dr. Dri »

1)
Dans les cas des api, je pense que tu peux te passer de l'arobase

@appdir$ signifie en fait adresse de la variable appdir$
dans les cas d'une chaine ou d'une structure, c'est identique, mais pour des variables "numérique" ca fera toute la différence.

2)
Procedure.<type> signifie que la valeur de retour de ta fonction est du type <type>.
Donc tu as très bien compris, ApplicationDir() retourne une chaine de caractères.

Dri
kiriasse
Messages : 16
Inscription : mar. 26/avr./2005 15:53
Localisation : Hérault
Contact :

Existence d'un fichier - Variables booléennes

Message par kiriasse »

Merci encore à ceux qui me répondent.
J'espère être un jour en mesure de répondre aussi à des débutants pour ne pas être toujours en position de demandeur... Mais il faut patienter ;-)

Encore une question, S.V.P...
Comment tester la présence d'un fichier dans un répertoire ?
Je voudrais créer une procédure du genre « FileExist() » qui renverrait False ou True...
C'est possible ? Comment utiliser une variable booléenne (False / True) comme en VB ?
@ +
Dr. Dri
Messages : 2527
Inscription : ven. 23/janv./2004 18:10

Message par Dr. Dri »

Pour les booléens, utilise un long, var.l
Avec les constantes #True et #False
(c'est maigre mais amplement suffisant ;)

Pour créer ta fonction, regarde dans l'aide du côté de FileSize()

Dri ;)
Avatar de l’utilisateur
cederavic
Messages : 1338
Inscription : lun. 09/févr./2004 23:38
Localisation : Bordeaux

Message par cederavic »

Ou un BYTE (.b) ça suffit largement pour un #TRUE/#FALSE et ça tient moin de place en memoire ;)

(pour des petite app, aucun interret, mais pour des usine a gaz on voit la difference)
kiriasse
Messages : 16
Inscription : mar. 26/avr./2005 15:53
Localisation : Hérault
Contact :

Copyright et n° de version de l'EXE obtenu avec PureBasic

Message par kiriasse »

Oui, je pensais aussi qu'un Byte ou un Integer (qui s'appelle autrement dans PureBasic) suffisait. En VB, la valeur booléenne est de type Integer.

J'ai une autre question...
J'ai développé un install.exe et un uninstal.exe avec RapidQ et j'ai eu la mauvaise surprise de constater que ces EXE pourtant parfaitement inoffensifs étaient détectés comme porteurs de virus (Trojan) par des logiciels antivirus. Je me suis demandé si le fait que ces EXE ne comportent aucun copyright ni n° de version ne pouvait expliquer cette erreur commise par des antivirus peu élaborés.

Avec PureBasic, est-il possible de définir pour l'EXE obtenu un n° de version et un copyright (comme cela est très facile à faire en VB) ?

@ +
Heis Spiter
Messages : 1092
Inscription : mer. 28/janv./2004 16:22
Localisation : 76
Contact :

Message par Heis Spiter »

Si tu utilise jaPBe, oui. Mais moi, aucun anti-virus ne m'a détecté quoique ce soit avec des exe sans ces infos.
Heis Spiter, webmaster du site http://www.heisspiter.net
Développeur principal et administrateur du projet Bird Chat
Parti courir au bonheur du dév. public et GPL :D
Le Soldat Inconnu
Messages : 4312
Inscription : mer. 28/janv./2004 20:58
Localisation : Clermont ferrand OU Olsztyn
Contact :

Message par Le Soldat Inconnu »

parfaitement inoffensifs étaient détectés comme porteurs de virus (Trojan) par des logiciels antivirus
Ca m'est arrivé aussi avec des archives autoextratibles WinRAR. Jamais pu le reproduire moi même mais certaines m'ont dis ça.

Enfin, ce sont des antivirus de m**de qui ralent pour rien.

Tu as pas aml d'antivirus gratuit en ligne qui peuvent te permettre de tester
voir :
Kaspersky
Norton
etc ...
Je ne suis pas à moitié Polonais mais ma moitié est polonaise ... Vous avez suivi ?

[Intel quad core Q9400 2.66mhz, ATI 4870, 4Go Ram, XP (x86) / 7 (x64)]
kiriasse
Messages : 16
Inscription : mar. 26/avr./2005 15:53
Localisation : Hérault
Contact :

Message par kiriasse »

Merci pour vos commentaires.

Une de mes questions est restée sans réponse...
Savez-vous comment procéder pour donner un n° de version et éventuellement un copyright ou un commentaire à l'EXE obtenu avec PureBasic ?
Dr. Dri
Messages : 2527
Inscription : ven. 23/janv./2004 18:10

Message par Dr. Dri »

la réponse a été :
avec jaPBe tu peux le faire

enfi il me semble, parce que la phrase suivante commence par un 'mais'
pas tres clair le Heis...

Dri :jesors:
Heis Spiter
Messages : 1092
Inscription : mer. 28/janv./2004 16:22
Localisation : 76
Contact :

Message par Heis Spiter »

C'est l'alcool :0::jesors:
Heis Spiter, webmaster du site http://www.heisspiter.net
Développeur principal et administrateur du projet Bird Chat
Parti courir au bonheur du dév. public et GPL :D
Répondre