2 manières de faire sous windows, les autre OS, je ne sait pas
Sous windows, soit on accède à la fenêtre dos (sous XP elle s'appelle invite de commandes) et ensuitte on tape toutes les commandes nécessaires pour lancer le compilateur suivi des paramètres voulus
Je ne donne pas les commandes, c'est long et fastidieux, on pourrait faire un fichier bat mais à quoi bon (?)
soit par programme
voici un exemple pour créer le fichier asm à partir du fichier pb
Comme on dépend encore des commandes dos, on doit séparer les chaînes par Chr(34) sinon ça ne marche pas bien voire pas du tout
le compilateur va générer un fichier asm dans le dossier Compilers nommé Purebasic.asm, ensuite je le copie dans le dossier voulu en le renommant
Il faudrait fignoler la commande Runprogram avec un canal de communication et lire le résultat retourné par le compilateur
Si c'est Ok, le compilateur retourne en chaîne de fin :
- Feel the ..PuRe.. Power -
J'ai fait plein d'essais (plutôt infructueux

). il en ressort que l'on est obligé de mettre la commande /EXE mais sans nom de fichier, celà permet de créer l'asm sans que l'exe ne soit créer. On peut aussi lire tous les process et fermer celui qui a été créé par pb mais ça alourdi le code, ca fonctionne bien comme ceci
Pour les autres commandes, il faut faire des essais ... jamais très simple avec ces commandes
je pense que c'est ce que tu voulais
voici l'exemple
Code : Tout sélectionner
Procedure.s CheminPureBasic()
; retourne le chemin du dossier Purebasic quelque soit l'OS sous windows
cbData = (#MAX_PATH * 2) + 2
lpbData = AllocateMemory(cbData)
If GetVersion_() & $ff0000 ; Windows NT/XP
If RegOpenKeyEx_(#HKEY_CLASSES_ROOT, "Applications\PureBasic.exe\shell\open\command", 0, #KEY_ALL_ACCESS, @hKey1) = #ERROR_SUCCESS
If RegQueryValueEx_(hKey1, "", 0, @Type, lpbData, @cbData) = #ERROR_SUCCESS
Folder$ = PeekS(lpbData)
Folder$ = GetPathPart(Mid(Folder$, 2, Len(Folder$) - 7))
EndIf
RegCloseKey_(hKey1)
EndIf
Else ; The same for Win9x
If RegOpenKeyEx_(#HKEY_LOCAL_MACHINE, "Software\Classes\PureBasic.exe\shell\open\command", 0, #KEY_ALL_ACCESS, @hKey1) = #ERROR_SUCCESS
If RegQueryValueEx_(hKey1, "", 0, @Type, lpbData, @cbData) = #ERROR_SUCCESS
Folder$ = PeekS(lpbData)
Folder$ = GetPathPart(Mid(Folder$, 2, Len(Folder$) - 7))
EndIf
RegCloseKey_(hKey1)
EndIf
EndIf
FreeMemory(lpbData)
ProcedureReturn Folder$
EndProcedure
; on teste si le fichier Purebasic.asm du dossier Compiler existe, si oui on l'efface
; pour être sur que la fonction a réussi
Chemin_PB.s = CheminPureBasic()
Fichier_PureBasic.s = Chemin_PB + "Projets\Fortix.pb"
Fichier_asm.s = Chemin_PB + "Projets\Fortix.asm"
If ReadFile(0, Fichier_asm) <> 0
; on le supprime
CloseFile(0)
If DeleteFile(Fichier_asm) = 0
; le fichier n'a pas pu être effacé
MessageRequester("Attention","Le fichier "+Fichier_asm+Chr(10)+"n'a pas pu être effacé"+Chr(10)+Chr(10)+"ferez le fichier ou l'application qui utilise ce fichier avant de recommencer",16)
Else
a = RunProgram(Chemin_PB + "Compilers\PBCompiler.exe", Chr(34)+ Fichier_PureBasic + Chr(34) + " /INLINEASM /COMMENTED /EXE " + Chr(34) , CheminPureBasic()+ "Projets\", #PB_Program_Wait)
EndIf
Else
a = RunProgram(Chemin_PB + "Compilers\PBCompiler.exe", Chr(34)+ Fichier_PureBasic + Chr(34) + " /INLINEASM /COMMENTED /EXE " + Chr(34) , CheminPureBasic()+ "Projets\", #PB_Program_Wait)
EndIf
; on fait une copie du fichier asm en le renommant
If CopyFile(Chemin_PB+"Compilers\Purebasic.asm", Fichier_asm)
Taille = FileSize(Fichier_asm)
MessageRequester("Création de fichier asm PureBasic", "Le fichier asm " + Fichier_asm + " a été créé " + Chr(10) + Chr(10) + "Taille du fichier : " + Chr(10) + Str(Taille) + " octets", $40)
Else
MessageRequester("Création de fichier asm PureBasic","Impossible de créer le fichier asm",$40)
EndIf