PureBasic

Forums PureBasic
Nous sommes le Jeu 13/Déc/2018 18:48

Heures au format UTC + 1 heure




Poster un nouveau sujet Répondre au sujet  [ 6 messages ] 
Auteur Message
 Sujet du message: CreateShortcut()
MessagePosté: Lun 08/Aoû/2016 15:46 
Hors ligne

Inscription: Sam 08/Fév/2014 15:19
Messages: 1432
Hello,

La bibliothèque FileSystem contient un tas de commandes utiles à la programmation système.
Je pense qu'il serait intéressant d'ajouter une commande officielle de création de raccourci (si c'est faisable)
CreateShortcut() ?

Même si cette commande ne créé pas tous les champs possibles des fichiers .lnk, les champs Cible: et Démarrer dans: sont les plus utiles. C'est ce que font les outils d'automation. Certains ajoutent une variable système correspondant à "Desktop", "HomeDir" (~) ou "Start Menu"

Raison: Il existe de nombreux codes sur le forum, mais plus ou moins compatibles d'une version à l'autre de PB et rarement compatibles entre versions Windows, Linux, Mac

:wink:


Haut
 Profil  
Répondre en citant le message  
 Sujet du message: Re: CreateShortcut()
MessagePosté: Lun 08/Aoû/2016 15:56 
Hors ligne
Avatar de l’utilisateur

Inscription: Dim 13/Déc/2015 11:05
Messages: 649
Localisation: Allez, cherche...
:idea: Je plussoie, trés bonne idée je trouve... PureBasic est un langage évolutif qui intégre sans cesse de nouvelles fonctions et de nouvelles capacités, c'est une de ses forces je trouve... pas besoin de se taper 36000 lib différentes, parfois pas compatibles ou plus a jour, comme c'est le cas en C :roll: Donc oui, trés bonne idée d'amélioration. J'avais aussi pensé à une fonction de recherche genre SearchFile() qui rechercherait un fichier dans un repertoire et ses sous-répertoires (bien que ce soit faisable avec des fonctions existantes, je me rapelle que j'avais galéré au début a faire ce genre de trucs).
[HS]Etant friand de logiciels de son, ce serait bien d'avoir enfin le support mp3 sur la librairie Sound 8) Et aussi une fonction pour gérer la transparence des fenetres en natif (ca ferait plus propre qu'avec l'api)... [/HS_OFF]

_________________
"Le bug se situe entre la chaise et le clavier"
Votre expert national en bogage et segfaults.

CPU : AMD A8 Quad core - RAM 8Gb - HDD 2To
  • Windows 10 x64 - PB 5.61 x64
  • Linux Ubuntu 16.04 LTS x64 (dual boot) - PB pas encore réinstallé


Haut
 Profil  
Répondre en citant le message  
 Sujet du message: Re: CreateShortcut()
MessagePosté: Mer 07/Déc/2016 8:45 
Hors ligne
Avatar de l’utilisateur

Inscription: Sam 31/Juil/2004 22:32
Messages: 1131
JohnJohnsonSHERMAN a écrit:
:idea: Je plussoie, trés bonne idée je trouve... PureBasic est un langage évolutif qui intégre sans cesse de nouvelles fonctions et de nouvelles capacités, c'est une de ses forces je trouve... pas besoin de se taper 36000 lib différentes, parfois pas compatibles ou plus a jour, comme c'est le cas en C :roll: Donc oui, trés bonne idée d'amélioration. J'avais aussi pensé à une fonction de recherche genre SearchFile() qui rechercherait un fichier dans un repertoire et ses sous-répertoires (bien que ce soit faisable avec des fonctions existantes, je me rapelle que j'avais galéré au début a faire ce genre de trucs).
[HS]Etant friand de logiciels de son, ce serait bien d'avoir enfin le support mp3 sur la librairie Sound 8) Et aussi une fonction pour gérer la transparence des fenetres en natif (ca ferait plus propre qu'avec l'api)... [/HS_OFF]


Recherche récursive dans un dossier :

Code:
Procedure.s SearchFileRecursive(Directory.s,FileToSearch.s)
   Protected directoryID,result.s
   directoryID = ExamineDirectory(#PB_Any,directory,"*.*")
   While NextDirectoryEntry(directoryID)
      If DirectoryEntryType(directoryID) = #PB_DirectoryEntry_File
         If FileToSearch = DirectoryEntryName(directoryID)
            result = Directory + FileToSearch
            Break
         EndIf
      Else
         If DirectoryEntryName(directoryID) <> "." And DirectoryEntryName(directoryID) <> ".."
            result = SearchFileRecursive(directory+DirectoryEntryName(directoryID)+"/",FileToSearch)
            If result
               Break
            EndIf
         EndIf
      EndIf
   Wend
   FinishDirectory(directoryID)
   ProcedureReturn result
EndProcedure

Debug SearchFileRecursive(#PB_Compiler_Home+"Examples\","Back_3.bmp")


Haut
 Profil  
Répondre en citant le message  
 Sujet du message: Re: CreateShortcut()
MessagePosté: Mer 07/Déc/2016 8:53 
Hors ligne
Avatar de l’utilisateur

Inscription: Sam 31/Juil/2004 22:32
Messages: 1131
Marc56 a écrit:
Hello,

La bibliothèque FileSystem contient un tas de commandes utiles à la programmation système.
Je pense qu'il serait intéressant d'ajouter une commande officielle de création de raccourci (si c'est faisable)
CreateShortcut() ?

Même si cette commande ne créé pas tous les champs possibles des fichiers .lnk, les champs Cible: et Démarrer dans: sont les plus utiles. C'est ce que font les outils d'automation. Certains ajoutent une variable système correspondant à "Desktop", "HomeDir" (~) ou "Start Menu"

Raison: Il existe de nombreux codes sur le forum, mais plus ou moins compatibles d'une version à l'autre de PB et rarement compatibles entre versions Windows, Linux, Mac

:wink:


créer des raccourcis sous windows uniquement (j'ai ni mon mac ni mon nux sous la main pour le faire sous les autres OS) :
Code:
Procedure CreateShortcut(Path.s, LINK.s, Argument.s, DESCRIPTION.s, WorkingDirectory.s, ShowCommand.l, IconFile.s, IconIndexInFile.l)
   
   CoInitialize_(0)
   If CoCreateInstance_(?CLSID_ShellLink,0,1,?IID_IShellLink,@psl.IShellLinkW) =  0
      
      Set_ShellLink_preferences:
      
      psl\SetPath(Path)
      psl\SetArguments(Argument)
      psl\SetWorkingDirectory(WorkingDirectory)
      psl\SetDescription(DESCRIPTION)
      psl\SetShowCmd(ShowCommand)
      psl\SetHotkey(HotKey)
      psl\SetIconLocation(IconFile, IconIndexInFile)
      
      ShellLink_SAVE:
      If psl\QueryInterface(?IID_IPersistFile,@ppf.IPersistFile) = 0
         mem.s = Space(1000)
         PokeS(@mem, LINK, -1, #PB_Unicode)
         hres = ppf\Save(mem,#True)
         result = 1
         ppf\Release()
      EndIf
      psl\Release()
   EndIf
   CoUninitialize_()
   ProcedureReturn result
   
   DataSection
      CLSID_ShellLink:
      ; 00021401-0000-0000-C000-000000000046
      Data.l $00021401
      Data.w $0000,$0000
      Data.b $C0,$00,$00,$00,$00,$00,$00,$46
      
      IID_IPersistFile:
      ; 0000010b-0000-0000-C000-000000000046
      Data.l $0000010B
      Data.w $0000,$0000
      Data.b $C0,$00,$00,$00,$00,$00,$00,$46
      
      
      IID_IShellLink: ; {000214F9-0000-0000-C000-000000000046}
      Data.l $000214F9
      Data.w $0000, $0000
      Data.b $C0, $00, $00, $00, $00, $00, $00, $46
      
   EndDataSection   
   
EndProcedure

CreateShortcut("C:\Windows\System32\Notepad.exe","C:\Users\Poshu\Desktop\Super Notepad.lnk","","NotePAD is a lightweight editor","",#SW_SHOWMAXIMIZED,"%SystemRoot%\system32\SHELL32.dll",12)

Attention aux droits d'écriture, certains dossiers spéciaux demandent des droits spéciaux.


Haut
 Profil  
Répondre en citant le message  
 Sujet du message: Re: CreateShortcut()
MessagePosté: Mer 07/Déc/2016 12:22 
Hors ligne
Avatar de l’utilisateur

Inscription: Dim 09/Oct/2005 16:51
Messages: 8545
Merci Poshu. Testé sous W10x64 ça marche nikel.

_________________
~~~~Règles du forum ~~~~
.: Ar-S :. Tour + portable W10 x64 PB 5.4x / 5.6x
LDV MULTIMEDIA : Dépannage informatique Aude (11) Isère (38)
RESIZER GOLD : Mon logiciel de redimensionnement par lot


Haut
 Profil  
Répondre en citant le message  
 Sujet du message: Re: CreateShortcut()
MessagePosté: Mer 07/Déc/2016 19:15 
Hors ligne
Avatar de l’utilisateur

Inscription: Dim 13/Déc/2015 11:05
Messages: 649
Localisation: Allez, cherche...
Oh mon dieu, cette jungle d'API... Mes yeux ont mal :mrgreen: :mrgreen: (cerveau débranché pour sureté)
D'ou l'intérêt d'une fonction native à PB... :lol:

En tout cas c'est trés intéressant, merci poshu:)

_________________
"Le bug se situe entre la chaise et le clavier"
Votre expert national en bogage et segfaults.

CPU : AMD A8 Quad core - RAM 8Gb - HDD 2To
  • Windows 10 x64 - PB 5.61 x64
  • Linux Ubuntu 16.04 LTS x64 (dual boot) - PB pas encore réinstallé


Haut
 Profil  
Répondre en citant le message  
Afficher les messages postés depuis:  Trier par  
Poster un nouveau sujet Répondre au sujet  [ 6 messages ] 

Heures au format UTC + 1 heure


Qui est en ligne

Utilisateurs parcourant ce forum: Aucun utilisateur enregistré et 4 invités


Vous ne pouvez pas poster de nouveaux sujets
Vous ne pouvez pas répondre aux sujets
Vous ne pouvez pas éditer vos messages
Vous ne pouvez pas supprimer vos messages

Rechercher:
Aller à:  
cron

 


Powered by phpBB © 2008 phpBB Group | Traduction par: phpBB-fr.com
subSilver+ theme by Canver Software, sponsor Sanal Modifiye