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
CreateShortcut()
- JohnJohnsonSHERMAN
- Messages : 648
- Inscription : dim. 13/déc./2015 11:05
- Localisation : Allez, cherche...
- Contact :
Re: CreateShortcut()
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 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 Et aussi une fonction pour gérer la transparence des fenetres en natif (ca ferait plus propre qu'avec l'api)... [/HS_OFF]
[HS]Etant friand de logiciels de son, ce serait bien d'avoir enfin le support mp3 sur la librairie Sound 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
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é
Re: CreateShortcut()
Recherche récursive dans un dossier :JohnJohnsonSHERMAN a écrit : 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 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 Et aussi une fonction pour gérer la transparence des fenetres en natif (ca ferait plus propre qu'avec l'api)... [/HS_OFF]
Code : Tout sélectionner
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")
Re: CreateShortcut()
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) :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
Code : Tout sélectionner
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)
Re: CreateShortcut()
Merci Poshu. Testé sous W10x64 ça marche nikel.
~~~~Règles du forum ~~~~
⋅.˳˳.⋅ॱ˙˙ॱ⋅.˳Ar-S ˳.⋅ॱ˙˙ॱ⋅.˳˳.⋅
W11x64 PB 6.x
Section HORS SUJET : ICI
LDV MULTIMEDIA : Dépannage informatique & mes Logiciels PB
UPLOAD D'IMAGES : Uploader des images de vos logiciels
⋅.˳˳.⋅ॱ˙˙ॱ⋅.˳Ar-S ˳.⋅ॱ˙˙ॱ⋅.˳˳.⋅
W11x64 PB 6.x
Section HORS SUJET : ICI
LDV MULTIMEDIA : Dépannage informatique & mes Logiciels PB
UPLOAD D'IMAGES : Uploader des images de vos logiciels
- JohnJohnsonSHERMAN
- Messages : 648
- Inscription : dim. 13/déc./2015 11:05
- Localisation : Allez, cherche...
- Contact :
Re: CreateShortcut()
Oh mon dieu, cette jungle d'API... Mes yeux ont mal (cerveau débranché pour sureté)
D'ou l'intérêt d'une fonction native à PB...
En tout cas c'est trés intéressant, merci poshu:)
D'ou l'intérêt d'une fonction native à PB...
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
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é