Page 1 sur 1
Utilisation des fonctions de l'API Windows
Publié : mer. 27/avr./2005 8:08
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.
Publié : mer. 27/avr./2005 8:58
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 _
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

GetCurrentDirectory et GetWindowsDirectory
Publié : mer. 27/avr./2005 9:25
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.
Publié : mer. 27/avr./2005 9:39
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...
Publié : mer. 27/avr./2005 9:41
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
Existence d'un fichier - Variables booléennes
Publié : mer. 27/avr./2005 9:59
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 ?
@ +
Publié : mer. 27/avr./2005 10:07
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

Publié : mer. 27/avr./2005 11:30
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)
Copyright et n° de version de l'EXE obtenu avec PureBasic
Publié : mer. 27/avr./2005 12:09
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) ?
@ +
Publié : mer. 27/avr./2005 13:07
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.
Publié : mer. 27/avr./2005 13:20
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 ...
Publié : mer. 27/avr./2005 13:31
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 ?
Publié : mer. 27/avr./2005 14:05
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

Publié : mer. 27/avr./2005 18:17
par Heis Spiter
C'est l'alcool

:jesors: