Novembre 2024 | Lun | Mar | Mer | Jeu | Ven | Sam | Dim |
---|
| | | | 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 10 | 11 | 12 | 13 | 14 | 15 | 16 | 17 | 18 | 19 | 20 | 21 | 22 | 23 | 24 | 25 | 26 | 27 | 28 | 29 | 30 | | Calendrier |
|
|
| KGF.DLL version V1.85 du 29/11/2012 : ajout ExecuteLNK | |
| | |
Auteur | Message |
---|
Klaus
Nombre de messages : 12331 Age : 75 Localisation : Ile de France Date d'inscription : 29/12/2009
| Sujet: Re: KGF.DLL version V1.85 du 29/11/2012 : ajout ExecuteLNK Sam 1 Déc 2012 - 10:31 | |
| Eh bien, je suis soulagé. Je ne comprenais vraiment pas ce qui a pu se passer. Encore qu'avec mon expérience traumatisante avec des caractères invisibles dans une ligne de source, je m'attends à tout, maintenant.
On dit souvent qu'un ordinateur n'est qu'un assemblage électronique stupide, et qu'il fait exactement ce qu'on lui dit de faire. La difficulté, c'est de savoir le lui dire. Et c'est là que se tient souvent la difficulté, plus que dans les limites techniques de la machine. Mais il y a des moments où l'on est vraiment tenté de penser que cette foutue machine à sa vie propre et qu'elle nous nargue ! Et c'est peut-être cela qui nous rend si accro aux ordinateurs... | |
| | | Invité Invité
| Sujet: Re: KGF.DLL version V1.85 du 29/11/2012 : ajout ExecuteLNK Sam 1 Déc 2012 - 12:03 | |
| Bien, mais c'est d'abord l'homme qui la programme. C'est quoi le caractère invisible que tu parles? Ce ne serait pas "&"? Je dis cela, car dans Pagiciel, pour atteindre les ancres, j'ai rajouté le nom dans le menu, et lors des premiers essais, je n'arrivais pas à faire fonctionné. Je me suis rendu compte ensuite que dans le menu, il ne me rajoutait non seulement le nom que j'avait mis, mais au début il y avait: "&" |
| | | Klaus
Nombre de messages : 12331 Age : 75 Localisation : Ile de France Date d'inscription : 29/12/2009
| Sujet: Re: KGF.DLL version V1.85 du 29/11/2012 : ajout ExecuteLNK Sam 1 Déc 2012 - 12:09 | |
| Je n'ai jamais su quel caractère c'était. En tout cas une valeur décimale inférieure à 32. Un caractère ctrl/quelque chose. Nouvelle version de KGF.dll: Version V1.87 01/12/2012 amélioration fonction ExecuteLNKNouvelle version du programme de génération des menus: - tenir compte de la nouvelle version de KGF.dll - supprimer un message de test dans le menu généré - remplacement des lignes copiant les raccourcis par FILE_COPY (gràce à JL35) - Code:
-
' creer_menu_pour_bureau.bas
labels() constantes() variables() form0() gui() initialisations()
end
sub labels() label click_lnk, listfic, lnksel, generer end_sub
sub constantes() ' dim bureau$ : bureau$ = "C:\Documents and settings\Klaus\bureau\" dim key_au$ : key_au$ = "SOFTWARE\Microsoft\Windows\CurrentVersion\Explorer\Shell Folders" dim value_au$ : value_au$ = "Common Desktop" dim key_u$ : key_u$ = "SOFTWARE\Microsoft\Windows\CurrentVersion\Explorer\Shell Folders" dim value_u$ : value_u$ = "Desktop" dim ici$ : ici$ = dir_current$ dim icones$ : icones$ = ici$+"\"+"icones\" end_sub
sub variables() dim no%, taille%, f$, pic$, s$, d$, n%, i%, k% dim no_fic%, no_ico%, no_hint%, no_save%, no_lnk%, no_liste% dim allusers$, bureau$ end_sub
sub form0() caption 0,"Génération d'un menu graphique" full_space 0 end_sub
sub GUI() no% = no% + 1 : dlist no% : no_fic% = no% no% = no% + 1 : dlist no% : no_ico% = no% no% = no% + 1 : dlist no% : no_hint% = no% no% = no% + 1 : save_dialog no% : no_save% = no% filter no_save%,"Source Panoramic|*.bas"
no% = no% + 1 : button no% : top no%,10 : left no%,10 caption no%,"Liste" : on_click no%,listfic no% = no% + 1 : button no% : top no%,10 : left no%,120 caption no%,"Générer" : on_click no%,generer
no% = no% + 1 : list no% : no_liste% = no% : on_click no%,lnksel top no%,80 : width no%,400 : height no%,550 no_lnk% = no% end_sub
sub initialisations() KGF_initialize("KGF.dll") ReadRegistryKey(3,key_u$,value_u$) bureau$ = ReadRegistryKey$ + "\" ReadRegistryKey(4,key_au$,value_au$) allusers$ = ReadRegistryKey$ + "\" end_sub
click_lnk: if message_confirmation_yes_no("Supprimer ["+item_read$(no_fic%,number_click-no_lnk%)+"]")=1 i% = number_click - no_lnk% item_delete no_fic%,i% item_delete no_hint%,i% if i%<=count(no_fic%) for k%=i% to count(no_fic%) clipboard_copy no_lnk% + k% + 1 clipboard_paste no_lnk% + k% next k% end_if delete no_lnk% + count(no_fic%)+1 end_if return listfic: clear no_liste% dir_change allusers$ f$ = file_find_first$ while f$<>"_" item_add no_liste%,f$ f$ = file_find_next$ end_while item_add no_liste%,"" dir_change bureau$ f$ = file_find_first$ while f$<>"_" item_add no_liste%,f$ f$ = file_find_next$ end_while file_find_close dir_change ici$ return lnksel: f$ = item_index$(no_liste%) if f$="" then return inactive no_liste% if dir_exists(icones$)=0 then dir_make icones$ if file_exists(bureau$+f$)=1 f$ = bureau$ + item_index$(no_liste%) else f$ = allusers$ + item_index$(no_liste%) end_if pic$ = file_extract_name$(f$) pic$ = icones$+left$(pic$,len(pic$)-4)+".ico" ExtractIconFromLNK(f$,pic$) LoadAnyImageFile(pic$) no% = no% + 1 : picture no% top no%,40 : left no%,10+count(no_fic%)*(ExtractIconFromLNK+10) width no%,ExtractIconFromLNK : height no%,ExtractIconFromLNK on_click no%,click_lnk clipboard_paste no% item_add no_fic%,f$ item_add no_ico%,pic$ f$ = file_extract_name$(f$) hint no%,f$ item_add no_hint%,f$ file_delete pic$ pause 100 active no_liste% return generer: dir_dialog no_save%,ici$ f$ = file_name$(no_save%) if f$="_" then return if lower$(right$(f$,4))<>".bas" then f$ = f$ + ".bas" d$ = file_extract_name$(f$) d$ = left$(d$,len(d$)-4)+"_data\" file_open_write 1,f$ file_writeln 1,"label click" file_writeln 1,"dll_on "+chr$(34)+"KGF.dll"+chr$(34) file_writeln 1,"border_small 0" file_writeln 1,"caption 0,"+chr$(34)+"Menu de raccourcis"+chr$(34) file_writeln 1,"height 0,30+"+str$(ExtractIconFromLNK) file_writeln 1,"width 0,10+(10+"+str$(ExtractIconFromLNK)+")*"+str$(count(no_fic%)) file_writeln 1,"dlist 1001 : file_load 1001,"+chr$(34)+d$+"liens.txt"+chr$(34) file_writeln 1,"dlist 1002 : file_load 1002,"+chr$(34)+d$+"hints.txt"+chr$(34) file_writeln 1,"dim i%, s$" file_writeln 1,"for i%=1 to count(1001)" file_writeln 1," picture i% : left i%,(i%-1)*(10+"+str$(ExtractIconFromLNK)+")" file_writeln 1," width i%,"+str$(ExtractIconFromLNK) file_writeln 1," height i%,"+str$(ExtractIconFromLNK) file_writeln 1," file_load i%,"+chr$(34)+d$+"ico_"+chr$(34)+"+str$(i%)+"+chr$(34)+".bmp"+chr$(34) file_writeln 1," on_click i%,click" file_writeln 1," hint i%,item_read$(1002,i%)" file_writeln 1,"next i%" file_writeln 1,"end" file_writeln 1,"click:" file_writeln 1," s$ = item_read$(1001,number_click)" file_writeln 1," s$ = "+chr$(34)+d$+chr$(34)+"+file_extract_name$(s$)" file_writeln 1," i% = dll_call1("+chr$(34)+"ExecuteLNK"+chr$(34)+",adr(s$))" file_writeln 1," return" file_close 1 d$ = left$(f$,len(f$)-4)+"_data\" if dir_exists(d$)=0 then dir_make d$ file_save no_fic%,d$+"liens.txt" file_save no_hint%,d$+"hints.txt" for i%=1 to count(no_fic%) file_save no_lnk%+i%,d$+"ico_"+str$(i%)+".bmp" f$ = item_read$(no_fic%,i%) f$ = file_extract_name$(f$) if file_exists(bureau$+f$)=1 f$ = bureau$ + f$ else f$ = allusers$ + f$ end_if if file_exists(d$+file_extract_name$(f$))=1 then file_delete d$+file_extract_name$(f$) file_copy f$,d$+file_extract_name$(f$) next i% return #INCLUDE "KGF_SUB.bas"
Ca marche maintenant avec n'importe quel fichier placé sur le bureau, que ce soit un raccourci, un fichier texte, une image etc. | |
| | | Invité Invité
| Sujet: Re: KGF.DLL version V1.85 du 29/11/2012 : ajout ExecuteLNK Sam 1 Déc 2012 - 12:20 | |
| Je vois que les icônes créées sont en 16 couleurs. Je retiens ta méthode, mais le temps venue, je ferais autrement: une fenêtre avec des images concernant un groupe d'icônes, comme programmation, outils, images..., et un clic sur un groupe, ressort les icônes correspondant au programme.
À propos, "&" dans le menu n'était pas visible, c'est en faisant message caption$(n° du menu) que j'ai vu le caractère que je n'avais pas mis. |
| | | Klaus
Nombre de messages : 12331 Age : 75 Localisation : Ile de France Date d'inscription : 29/12/2009
| Sujet: Re: KGF.DLL version V1.85 du 29/11/2012 : ajout ExecuteLNK Sam 1 Déc 2012 - 12:45 | |
| @Cosmos70: 1. Les icônes ne sont pas en 16 couleurs. Elles sont gérées par KGF.dll en bitmaps identiques aux autres images de Panoramic. Et l'origine est le format ICO de Windows. D'ailleurs, ce que dit l'explorateur: 2. Ce que tu dis avec des groupes de programmes, est possible avec ce produit. Je l'ai déjà dit, et je redonne la démarche ici: - créer autant de menus individuels que de groupes souhaités, en y plaçant les icônes adéquates - créer un exécutable à partir de tous ces menus - placer des raccourcis de tous ces menus sur le bureau - affecter des icônes spécifiques à chacun de ces raccourcis - faire un nouveau menu avec les icônes des raccourcis ves les menus des groupes La procédure peut être étendue à volonté pour plusieurs niveaux 3. le caractère qui me gênait, était placé au milieu d'une ligne de source, correcte en apparence, mais qui produisait une erreur en exécution. Toutes les variables étaient bien définies, mais l'expression ne marchait pas. J'ai retapé ma ligne de source juste au-dessus, et elle passait. Elle était visuellement identique. J'ai laisse la ligne resaisie et supprimé la ligne produisant l'erreur, et tout était bon. | |
| | | Invité Invité
| Sujet: Re: KGF.DLL version V1.85 du 29/11/2012 : ajout ExecuteLNK Sam 1 Déc 2012 - 13:02 | |
| Je te remercie pour tes infos. En ce qui concerne ce que je compte faire, c'est simplement pour dire que je vais me servir de ton principe, mais sous une autre forme. En ce qui concerne les icônes, je pensais qu'ils étaient en 16 couleurs, car la définition est grossière par rapport à ce que je vois sur le bureau. Je ne tiens pas compte évidemment de la transparence. Mais peu importe, vu que c'est une image bmp, on peut copier le dessin pour s'en resservir. Maintenant depuis hier soir, je pense que tu as mieux à faire que de me répondre continuellement. Je pense qu'on a fait le tour de ce post. Merci, et bon appétit! |
| | | Klaus
Nombre de messages : 12331 Age : 75 Localisation : Ile de France Date d'inscription : 29/12/2009
| Sujet: Re: KGF.DLL version V1.85 du 29/11/2012 : ajout ExecuteLNK Sam 1 Déc 2012 - 15:48 | |
| Voilà ce que j'ai fait avec cet outil, dans un premier temps: Le menu eu haut à gauche est en permanence à l'écran. Il a 2 icônes: Jeux et Programmation. Un clic sur l'icône de gauche "Jeux" ouvre la deuxième fenêtre intitulée "Jeux". Elle a les icônes suivantes: Alchemy, Sauvegarde Alchemy, Dossier Alchemy et Python Solitaire Fan Club Edition. Je l'ai décalée pour voir l'ensemble. Un clic sur l'icône de droite "Programmation" ouvre la troisième fenêtre intitulée "Programmation". Elle a les icônes suivantes: Delphi 6, DosName, FBEdit, HelpNDoc 3, KGF dll, Mes projets Delphi, Mes projets Panoramic, Panoramic versions instantanées, Panoramic V0.24i7, Visual Basic V.0 Un clic sur chaque icône lance immédiatement le programme choisi, MEME si les icônes correspondantes ont été enlevées du bureau. Et un clic sur "Panoramic versions instantanées" qui est un fichier texte, pas un LNK conduisant vers un fichier texte, ouvre tout de même directement ce fichier dans le bloc notes. J'ai donné une icône personnalisée au menu Jeux, et elle est prise en compte dans le menu principal. Pour la mise en place, j'ai créé un dossier local "menus" dans lesuel j'ai copié: - KGF.dll - menu.exe, menu.bas et le dossier menu_data - jeux.exe, jeux.bas et le dossier jeux_data - programmation.exe, programmation.bas et le dossier programmation_data Et voilà, le tour est joué. | |
| | | papydall
Nombre de messages : 7017 Age : 74 Localisation : Moknine (Tunisie) Entre la chaise et le clavier Date d'inscription : 03/03/2012
| Sujet: Re: KGF.DLL version V1.85 du 29/11/2012 : ajout ExecuteLNK Sam 1 Déc 2012 - 16:34 | |
| Regardez ces 2 lignes de code apparemment identiques . Exécutez le code : - Code:
-
PRINT "Hello" PRINT "Hello" : ' Cette ligne provoque une erreur (48) Not correct expression.Line : 2
La ligne 2 provoque une erreur parce qu’elle contient un caractère invisible (tentez de le découvrir !). Dans des tels cas, le plus sage est de réécrire la ligne incriminée et de réessayer ! PS: Il parait que le caractère invisible (en fait <Alt 255> qui est une espace différente de <Alt 32>) s'est transformé (lors de l'envoi du code) en une espace valide! Si vous voulez provoquez l'erreur, faites : PRINT puis <ALT +255> suivi de "Hello"
Dernière édition par papydall le Dim 2 Déc 2012 - 1:00, édité 1 fois | |
| | | Invité Invité
| Sujet: Re: KGF.DLL version V1.85 du 29/11/2012 : ajout ExecuteLNK Sam 1 Déc 2012 - 16:44 | |
| Non Papydall, ça ne marche pas. L'envoi du code doit effacé ton caractère. Peut-être chr$(0).
Le run ne provoque pas d'erreur |
| | | Klaus
Nombre de messages : 12331 Age : 75 Localisation : Ile de France Date d'inscription : 29/12/2009
| Sujet: Re: KGF.DLL version V1.85 du 29/11/2012 : ajout ExecuteLNK Sam 1 Déc 2012 - 19:51 | |
| Nouvelle version de mon outil de génération de menus: Nouveauté: ajout d'un bouton "Charger". Ce bouton permet de charger un menu déjà généré, en sélectionnant le nom du fichier BAS généré pour ce menu. Il affiche alors ce menu et permet de le modifier, par ajout de nouvelles icônes ou par la suppression d'icônes existantes, comme en mode de création. - Code:
-
' creer_menu_pour_bureau.bas
labels() constantes() variables() form0() gui() initialisations()
end
sub labels() label click_lnk, listfic, lnksel, generer, charger end_sub
sub constantes() ' dim bureau$ : bureau$ = "C:\Documents and settings\Klaus\bureau\" dim key_au$ : key_au$ = "SOFTWARE\Microsoft\Windows\CurrentVersion\Explorer\Shell Folders" dim value_au$ : value_au$ = "Common Desktop" dim key_u$ : key_u$ = "SOFTWARE\Microsoft\Windows\CurrentVersion\Explorer\Shell Folders" dim value_u$ : value_u$ = "Desktop" dim ici$ : ici$ = dir_current$ dim icones$ : icones$ = ici$+"\"+"icones\" end_sub
sub variables() dim no%, taille%, f$, pic$, s$, d$, n%, i%, k%, nmax% dim no_fic%, no_ico%, no_hint%, no_save%, no_lnk%, no_liste%,no_open% dim allusers$, bureau$ end_sub
sub form0() caption 0,"Génération d'un menu graphique" full_space 0 end_sub
sub GUI() no% = no% + 1 : dlist no% : no_fic% = no% no% = no% + 1 : dlist no% : no_ico% = no% no% = no% + 1 : dlist no% : no_hint% = no% no% = no% + 1 : save_dialog no% : no_save% = no% filter no_save%,"Source Panoramic|*.bas" no% = no% + 1 : open_dialog no% : no_open% = no% filter no_open%,"Source Panoramic|*.bas"
no% = no% + 1 : button no% : top no%,10 : left no%,10 caption no%,"Liste" : on_click no%,listfic no% = no% + 1 : button no% : top no%,10 : left no%,120 caption no%,"Générer" : on_click no%,generer no% = no% + 1 : button no% : top no%,10 : left no%,320 caption no%,"Charger" : on_click no%,charger
no% = no% + 1 : list no% : no_liste% = no% : on_click no%,lnksel top no%,80 : width no%,400 : height no%,550 no_lnk% = no% end_sub
sub initialisations() KGF_initialize("KGF.dll") ReadRegistryKey(3,key_u$,value_u$) bureau$ = ReadRegistryKey$ + "\" ReadRegistryKey(4,key_au$,value_au$) allusers$ = ReadRegistryKey$ + "\" end_sub
click_lnk: if message_confirmation_yes_no("Supprimer ["+item_read$(no_fic%,number_click-no_lnk%)+"]")=1 i% = number_click - no_lnk% item_delete no_fic%,i% item_delete no_hint%,i% if i%<=count(no_fic%) for k%=i% to count(no_fic%) clipboard_copy no_lnk% + k% + 1 clipboard_paste no_lnk% + k% next k% end_if delete no_lnk% + count(no_fic%)+1 end_if return listfic: clear no_liste% dir_change allusers$ f$ = file_find_first$ while f$<>"_" item_add no_liste%,f$ f$ = file_find_next$ end_while item_add no_liste%,"" dir_change bureau$ f$ = file_find_first$ while f$<>"_" item_add no_liste%,f$ f$ = file_find_next$ end_while file_find_close dir_change ici$ return lnksel: f$ = item_index$(no_liste%) if f$="" then return inactive no_liste% if dir_exists(icones$)=0 then dir_make icones$ if file_exists(bureau$+f$)=1 f$ = bureau$ + item_index$(no_liste%) else f$ = allusers$ + item_index$(no_liste%) end_if pic$ = file_extract_name$(f$) pic$ = icones$+left$(pic$,len(pic$)-4)+".ico" ExtractIconFromLNK(f$,pic$) LoadAnyImageFile(pic$) no% = no% + 1 : picture no% top no%,40 : left no%,10+count(no_fic%)*(ExtractIconFromLNK+10) width no%,ExtractIconFromLNK : height no%,ExtractIconFromLNK on_click no%,click_lnk clipboard_paste no% nmax% = no% item_add no_fic%,f$ item_add no_ico%,pic$ f$ = file_extract_name$(f$) hint no%,f$ item_add no_hint%,f$ file_delete pic$ pause 100 active no_liste% return generer: dir_dialog no_save%,ici$ f$ = file_name$(no_save%) if f$="_" then return if lower$(right$(f$,4))<>".bas" then f$ = f$ + ".bas" d$ = file_extract_name$(f$) d$ = left$(d$,len(d$)-4)+"_data\" file_open_write 1,f$ file_writeln 1,"label click" file_writeln 1,"dll_on "+chr$(34)+"KGF.dll"+chr$(34) file_writeln 1,"border_small 0" file_writeln 1,"caption 0,"+chr$(34)+"Menu de raccourcis"+chr$(34) file_writeln 1,"height 0,30+"+str$(ExtractIconFromLNK) file_writeln 1,"width 0,10+(10+"+str$(ExtractIconFromLNK)+")*"+str$(count(no_fic%)) file_writeln 1,"dlist 1001 : file_load 1001,"+chr$(34)+d$+"liens.txt"+chr$(34) file_writeln 1,"dlist 1002 : file_load 1002,"+chr$(34)+d$+"hints.txt"+chr$(34) file_writeln 1,"dim i%, s$" file_writeln 1,"for i%=1 to count(1001)" file_writeln 1," picture i% : left i%,(i%-1)*(10+"+str$(ExtractIconFromLNK)+")" file_writeln 1," width i%,"+str$(ExtractIconFromLNK) file_writeln 1," height i%,"+str$(ExtractIconFromLNK) file_writeln 1," file_load i%,"+chr$(34)+d$+"ico_"+chr$(34)+"+str$(i%)+"+chr$(34)+".bmp"+chr$(34) file_writeln 1," on_click i%,click" file_writeln 1," hint i%,item_read$(1002,i%)" file_writeln 1,"next i%" file_writeln 1,"end" file_writeln 1,"click:" file_writeln 1," s$ = item_read$(1001,number_click)" file_writeln 1," s$ = "+chr$(34)+d$+chr$(34)+"+file_extract_name$(s$)" file_writeln 1," i% = dll_call1("+chr$(34)+"ExecuteLNK"+chr$(34)+",adr(s$))" file_writeln 1," return" file_close 1 d$ = left$(f$,len(f$)-4)+"_data\" if dir_exists(d$)=0 then dir_make d$ file_save no_fic%,d$+"liens.txt" file_save no_hint%,d$+"hints.txt" for i%=1 to count(no_fic%) file_save no_lnk%+i%,d$+"ico_"+str$(i%)+".bmp" f$ = item_read$(no_fic%,i%) f$ = file_extract_name$(f$) if file_exists(bureau$+f$)=1 f$ = bureau$ + f$ else f$ = allusers$ + f$ end_if if file_exists(d$+file_extract_name$(f$))=1 then file_delete d$+file_extract_name$(f$) file_copy f$,d$+file_extract_name$(f$) next i% return charger: f$ = file_name$(no_open%) if f$="_" then return if lower$(right$(f$,4))<>".bas" then return if file_exists(f$)=0 then return if dir_exists(icones$)=0 then dir_make icones$ d$ = file_extract_name$(f$) d$ = left$(d$,len(d$)-4)+"_data\" if dir_exists(d$)=0 then return clear no_fic% clear no_hint% file_load no_fic%,d$+"liens.txt" file_load no_hint%,d$+"hints.txt" if nmax%>no_lnk% for i%=no_lnk%+1 to nmax% delete i% next i% end_if no% = no_lnk% for i%=1 to count(no_fic%) f$ = d$ + file_extract_name$(item_read$(no_fic%,i%)) pic$ = file_extract_name$(f$) pic$ = d$+left$(pic$,len(pic$)-4)+".ico" ExtractIconFromLNK(f$,pic$) LoadAnyImageFile(pic$) no% = no% + 1 : picture no% top no%,40 : left no%,10+(i%-1)*(ExtractIconFromLNK+10) width no%,ExtractIconFromLNK : height no%,ExtractIconFromLNK on_click no%,click_lnk clipboard_paste no% next i% nmax% = no% return #INCLUDE "KGF_SUB.bas"
| |
| | | Invité Invité
| Sujet: Re: KGF.DLL version V1.85 du 29/11/2012 : ajout ExecuteLNK Sam 1 Déc 2012 - 20:18 | |
| - Citation :
- KGF.DLL version V1.85 du 29/11/2012
Tu devrais modifier le titre, car on est avec la version V1.86 du 30/11/2012. Car je ne suis pas sure que la version V1.85 permet de se servir des commandes que tu as rajoutées. |
| | | Klaus
Nombre de messages : 12331 Age : 75 Localisation : Ile de France Date d'inscription : 29/12/2009
| Sujet: 1.87 01/12/2012 amélioration fonction ExecuteLNK Sam 1 Déc 2012 - 21:16 | |
| Tu as raison. Voilà qui est fait sur ce message. | |
| | | Klaus
Nombre de messages : 12331 Age : 75 Localisation : Ile de France Date d'inscription : 29/12/2009
| Sujet: Re: KGF.DLL version V1.85 du 29/11/2012 : ajout ExecuteLNK Sam 1 Déc 2012 - 22:45 | |
| Nouvelle version. Nouveauté: il y a maintenant un marqueur visuel pour indiquer l'icône "active". On active une icône en cliquant dessus. Et il y a un premier bouton de fonction agissant sur l'icône active: "Supprimer". Cette fonction supprime l'icône active, comme auparavant en cliquant simplement sur l'icône. Ceci ouvre la voie à d'autres fonctions à appliquer sur les icônes. A suivre... Voici cette version: - Code:
-
' creer_menu_pour_bureau.bas
labels() constantes() variables() form0() gui() initialisations()
end
sub labels() label click_lnk, listfic, lnksel, generer, charger, supprimer end_sub
sub constantes() ' dim bureau$ : bureau$ = "C:\Documents and settings\Klaus\bureau\" dim key_au$ : key_au$ = "SOFTWARE\Microsoft\Windows\CurrentVersion\Explorer\Shell Folders" dim value_au$ : value_au$ = "Common Desktop" dim key_u$ : key_u$ = "SOFTWARE\Microsoft\Windows\CurrentVersion\Explorer\Shell Folders" dim value_u$ : value_u$ = "Desktop" dim ici$ : ici$ = dir_current$ dim icones$ : icones$ = ici$+"\"+"icones\" end_sub
sub variables() dim no%, taille%, f$, pic$, s$, d$, n%, i%, k%, nmax%, nmarque% dim no_fic%, no_ico%, no_hint%, no_save%, no_lnk%, no_liste%,no_open% dim allusers$, bureau$ end_sub
sub form0() caption 0,"Génération d'un menu graphique" full_space 0 end_sub
sub GUI() no% = no% + 1 : dlist no% : no_fic% = no% no% = no% + 1 : dlist no% : no_ico% = no% no% = no% + 1 : dlist no% : no_hint% = no% no% = no% + 1 : save_dialog no% : no_save% = no% filter no_save%,"Source Panoramic|*.bas" no% = no% + 1 : open_dialog no% : no_open% = no% filter no_open%,"Source Panoramic|*.bas"
no% = no% + 1 : button no% : top no%,10 : left no%,10 caption no%,"Liste" : on_click no%,listfic no% = no% + 1 : button no% : top no%,10 : left no%,120 caption no%,"Générer" : on_click no%,generer no% = no% + 1 : button no% : top no%,10 : left no%,320 caption no%,"Charger" : on_click no%,charger no% = no% + 1 : button no% : top no%,90 : left no%,420 caption no%,"Supprimer" : on_click no%,supprimer
no% = no% + 1 : list no% : no_liste% = no% : on_click no%,lnksel top no%,80 : width no%,400 : height no%,550 no_lnk% = no% end_sub
sub initialisations() KGF_initialize("KGF.dll") ReadRegistryKey(3,key_u$,value_u$) bureau$ = ReadRegistryKey$ + "\" ReadRegistryKey(4,key_au$,value_au$) allusers$ = ReadRegistryKey$ + "\" end_sub
click_lnk: marquer(number_click) return listfic: clear no_liste% dir_change allusers$ f$ = file_find_first$ while f$<>"_" item_add no_liste%,f$ f$ = file_find_next$ end_while item_add no_liste%,"" dir_change bureau$ f$ = file_find_first$ while f$<>"_" item_add no_liste%,f$ f$ = file_find_next$ end_while file_find_close dir_change ici$ return lnksel: f$ = item_index$(no_liste%) if f$="" then return inactive no_liste% if dir_exists(icones$)=0 then dir_make icones$ if file_exists(bureau$+f$)=1 f$ = bureau$ + item_index$(no_liste%) else f$ = allusers$ + item_index$(no_liste%) end_if pic$ = file_extract_name$(f$) pic$ = icones$+left$(pic$,len(pic$)-4)+".ico" ExtractIconFromLNK(f$,pic$) LoadAnyImageFile(pic$) no% = no% + 1 : picture no% top no%,40 : left no%,10+count(no_fic%)*(ExtractIconFromLNK+10) width no%,ExtractIconFromLNK : height no%,ExtractIconFromLNK on_click no%,click_lnk clipboard_paste no% k% = no% + 1000 : picture k% top k%,40+ExtractIconFromLNK+2 : left k%,10+count(no_fic%)*(ExtractIconFromLNK+10) width k%,ExtractIconFromLNK : height k%,5 2d_target_is k% 2d_rectangle 0,0,ExtractIconFromLNK-1,4 nmax% = no% marquer(nmax%) item_add no_fic%,f$ item_add no_ico%,pic$ f$ = file_extract_name$(f$) hint no%,f$ item_add no_hint%,f$ file_delete pic$ pause 100 active no_liste% return generer: dir_dialog no_save%,ici$ f$ = file_name$(no_save%) if f$="_" then return if lower$(right$(f$,4))<>".bas" then f$ = f$ + ".bas" d$ = file_extract_name$(f$) d$ = left$(d$,len(d$)-4)+"_data\" file_open_write 1,f$ file_writeln 1,"label click" file_writeln 1,"dll_on "+chr$(34)+"KGF.dll"+chr$(34) file_writeln 1,"border_small 0" file_writeln 1,"caption 0,"+chr$(34)+"Menu de raccourcis"+chr$(34) file_writeln 1,"height 0,30+"+str$(ExtractIconFromLNK) file_writeln 1,"width 0,10+(10+"+str$(ExtractIconFromLNK)+")*"+str$(count(no_fic%)) file_writeln 1,"dlist 1001 : file_load 1001,"+chr$(34)+d$+"liens.txt"+chr$(34) file_writeln 1,"dlist 1002 : file_load 1002,"+chr$(34)+d$+"hints.txt"+chr$(34) file_writeln 1,"dim i%, s$" file_writeln 1,"for i%=1 to count(1001)" file_writeln 1," picture i% : left i%,(i%-1)*(10+"+str$(ExtractIconFromLNK)+")" file_writeln 1," width i%,"+str$(ExtractIconFromLNK) file_writeln 1," height i%,"+str$(ExtractIconFromLNK) file_writeln 1," file_load i%,"+chr$(34)+d$+"ico_"+chr$(34)+"+str$(i%)+"+chr$(34)+".bmp"+chr$(34) file_writeln 1," on_click i%,click" file_writeln 1," hint i%,item_read$(1002,i%)" file_writeln 1,"next i%" file_writeln 1,"end" file_writeln 1,"click:" file_writeln 1," s$ = item_read$(1001,number_click)" file_writeln 1," s$ = "+chr$(34)+d$+chr$(34)+"+file_extract_name$(s$)" file_writeln 1," i% = dll_call1("+chr$(34)+"ExecuteLNK"+chr$(34)+",adr(s$))" file_writeln 1," return" file_close 1 d$ = left$(f$,len(f$)-4)+"_data\" if dir_exists(d$)=0 then dir_make d$ file_save no_fic%,d$+"liens.txt" file_save no_hint%,d$+"hints.txt" for i%=1 to count(no_fic%) file_save no_lnk%+i%,d$+"ico_"+str$(i%)+".bmp" f$ = item_read$(no_fic%,i%) f$ = file_extract_name$(f$) if file_exists(bureau$+f$)=1 f$ = bureau$ + f$ else f$ = allusers$ + f$ end_if if file_exists(d$+file_extract_name$(f$))=1 then file_delete d$+file_extract_name$(f$) file_copy f$,d$+file_extract_name$(f$) next i% return charger: f$ = file_name$(no_open%) if f$="_" then return if lower$(right$(f$,4))<>".bas" then return if file_exists(f$)=0 then return d$ = file_extract_name$(f$) d$ = left$(d$,len(d$)-4)+"_data\" if dir_exists(d$)=0 then return if dir_exists(icones$)=0 then dir_make icones$ clear no_fic% clear no_hint% nmarque% = 0 file_load no_fic%,d$+"liens.txt" file_load no_hint%,d$+"hints.txt" if nmax%>no_lnk% for i%=no_lnk%+1 to nmax% delete i% delete 1000+i% next i% end_if no% = no_lnk% for i%=1 to count(no_fic%) f$ = d$ + file_extract_name$(item_read$(no_fic%,i%)) pic$ = file_extract_name$(f$) pic$ = d$+left$(pic$,len(pic$)-4)+".ico" ExtractIconFromLNK(f$,pic$) LoadAnyImageFile(pic$) no% = no% + 1 : picture no% top no%,40 : left no%,10+(i%-1)*(ExtractIconFromLNK+10) width no%,ExtractIconFromLNK : height no%,ExtractIconFromLNK on_click no%,click_lnk clipboard_paste no% k% = no% + 1000 : picture k% top k%,40+ExtractIconFromLNK+2 : left k%,10+(i%-1)*(ExtractIconFromLNK+10) width k%,ExtractIconFromLNK : height k%,5 2d_target_is k% 2d_rectangle 0,0,ExtractIconFromLNK-1,4 next i% nmax% = no% marquer(nmax%) return
supprimer: if message_confirmation_yes_no("Supprimer ["+item_read$(no_fic%,nmarque%-no_lnk%)+"]")=1 i% = nmarque% - no_lnk% marquer(0) item_delete no_fic%,i% item_delete no_hint%,i% if i%<=count(no_fic%) for k%=i% to count(no_fic%) clipboard_copy no_lnk% + k% + 1 clipboard_paste no_lnk% + k% next k% end_if delete no_lnk% + count(no_fic%)+1 delete 1000 + no_lnk% + count(no_fic%)+1 nmax% = nmax% - 1 end_if return return
sub marquer(n%) if nmarque%>0 if nmarque%<>n% 2d_target_is 1000+nmarque% 2d_fill_color 255,255,255 2d_rectangle 0,0,ExtractIconFromLNK-1,4 2d_target_is 0 end_if end_if if n%>0 2d_target_is n% + 1000 2d_fill_color 255,0,0 2d_rectangle 0,0,ExtractIconFromLNK-1,4 2d_target_is 0 end_if nmarque% = n% end_sub
#INCLUDE "KGF_SUB.bas"
| |
| | | Klaus
Nombre de messages : 12331 Age : 75 Localisation : Ile de France Date d'inscription : 29/12/2009
| Sujet: 1.88 02/12/2012 amélioration fonction ExecuteLNK Dim 2 Déc 2012 - 11:26 | |
| Nouvelle version: KGF.dll passe à la version V1.88 02/12/2012 amélioration fonction ExecuteLNKLa fonction ExecuteLNK peut maintenant ouvrir un dossier dans l'exporateur, en lui passant le chemin complet, précédé de "explorer.exe ". Cette possibilité est utilisée dans le programme de génération des menus, pour pouvoir accéder un dossier placé directement sur le bureau: - Code:
-
' creer_menu_pour_bureau.bas
labels() constantes() variables() form0() gui() initialisations()
end
sub labels() label click_lnk, listfic, lnksel, generer, charger, supprimer end_sub
sub constantes() ' dim bureau$ : bureau$ = "C:\Documents and settings\Klaus\bureau\" dim key_au$ : key_au$ = "SOFTWARE\Microsoft\Windows\CurrentVersion\Explorer\Shell Folders" dim value_au$ : value_au$ = "Common Desktop" dim key_u$ : key_u$ = "SOFTWARE\Microsoft\Windows\CurrentVersion\Explorer\Shell Folders" dim value_u$ : value_u$ = "Desktop" dim ici$ : ici$ = dir_current$ dim icones$ : icones$ = ici$+"\"+"icones\" end_sub
sub variables() dim no%, taille%, f$, pic$, s$, d$, n%, i%, k%, nmax%, nmarque%, f1$ dim no_fic%, no_ico%, no_hint%, no_save%, no_lnk%, no_liste%,no_open% dim allusers$, bureau$ end_sub
sub form0() caption 0,"Génération d'un menu graphique" full_space 0 end_sub
sub GUI() no% = no% + 1 : dlist no% : no_fic% = no% no% = no% + 1 : dlist no% : no_ico% = no% no% = no% + 1 : dlist no% : no_hint% = no% no% = no% + 1 : save_dialog no% : no_save% = no% filter no_save%,"Source Panoramic|*.bas" no% = no% + 1 : open_dialog no% : no_open% = no% filter no_open%,"Source Panoramic|*.bas"
no% = no% + 1 : button no% : top no%,10 : left no%,10 caption no%,"Liste" : on_click no%,listfic no% = no% + 1 : button no% : top no%,10 : left no%,120 caption no%,"Générer" : on_click no%,generer no% = no% + 1 : button no% : top no%,10 : left no%,320 caption no%,"Charger" : on_click no%,charger no% = no% + 1 : button no% : top no%,90 : left no%,420 caption no%,"Supprimer" : on_click no%,supprimer
no% = no% + 1 : list no% : no_liste% = no% : on_click no%,lnksel top no%,80 : width no%,400 : height no%,550 no_lnk% = no% end_sub
sub initialisations() KGF_initialize("KGF.dll") ReadRegistryKey(3,key_u$,value_u$) bureau$ = ReadRegistryKey$ + "\" ReadRegistryKey(4,key_au$,value_au$) allusers$ = ReadRegistryKey$ + "\" end_sub
click_lnk: marquer(number_click) return listfic: clear no_liste% dir_change allusers$ f$ = file_find_first$ while f$<>"_" item_add no_liste%,f$ f$ = file_find_next$ end_while item_add no_liste%,"" dir_change bureau$ f$ = file_find_first$ while f$<>"_" item_add no_liste%,f$ f$ = file_find_next$ end_while file_find_close dir_change ici$ return lnksel: f$ = item_index$(no_liste%) if f$="" then return inactive no_liste% if dir_exists(icones$)=0 then dir_make icones$ if dir_exists(bureau$+f$)=1 f1$ = "explorer.exe "+bureau$+f$ f$ = "explorer.exe" else f1$ = "" if file_exists(bureau$+f$)=1 f$ = bureau$ + item_index$(no_liste%) else f$ = allusers$ + item_index$(no_liste%) end_if end_if pic$ = file_extract_name$(f$) pic$ = icones$+left$(pic$,len(pic$)-4)+".ico" if file_exists(pic$)=1 then file_delete pic$ ExtractIconFromLNK(f$,pic$) LoadAnyImageFile(pic$) no% = no% + 1 : picture no% top no%,40 : left no%,10+count(no_fic%)*(ExtractIconFromLNK+10) width no%,ExtractIconFromLNK : height no%,ExtractIconFromLNK on_click no%,click_lnk clipboard_paste no% k% = no% + 1000 : picture k% top k%,40+ExtractIconFromLNK+2 : left k%,10+count(no_fic%)*(ExtractIconFromLNK+10) width k%,ExtractIconFromLNK : height k%,5 2d_target_is k% 2d_rectangle 0,0,ExtractIconFromLNK-1,4 nmax% = no% marquer(nmax%) if f1$="" item_add no_fic%,f$ hint no%,f$ item_add no_hint%,f$ else item_add no_fic%,f1$ hint no%,f1$ item_add no_hint%,f1$ end_if item_add no_ico%,pic$ f$ = file_extract_name$(f$) file_delete pic$ pause 100 active no_liste% return generer: dir_dialog no_save%,ici$ f$ = file_name$(no_save%) if f$="_" then return if lower$(right$(f$,4))<>".bas" then f$ = f$ + ".bas" d$ = file_extract_name$(f$) d$ = left$(d$,len(d$)-4)+"_data\" file_open_write 1,f$ file_writeln 1,"label click" file_writeln 1,"dll_on "+chr$(34)+"KGF.dll"+chr$(34) file_writeln 1,"border_small 0" file_writeln 1,"caption 0,"+chr$(34)+"Menu de raccourcis"+chr$(34) file_writeln 1,"height 0,30+"+str$(ExtractIconFromLNK) file_writeln 1,"width 0,10+(10+"+str$(ExtractIconFromLNK)+")*"+str$(count(no_fic%)) file_writeln 1,"dlist 1001 : file_load 1001,"+chr$(34)+d$+"liens.txt"+chr$(34) file_writeln 1,"dlist 1002 : file_load 1002,"+chr$(34)+d$+"hints.txt"+chr$(34) file_writeln 1,"dim i%, s$" file_writeln 1,"for i%=1 to count(1001)" file_writeln 1," picture i% : left i%,(i%-1)*(10+"+str$(ExtractIconFromLNK)+")" file_writeln 1," width i%,"+str$(ExtractIconFromLNK) file_writeln 1," height i%,"+str$(ExtractIconFromLNK) file_writeln 1," file_load i%,"+chr$(34)+d$+"ico_"+chr$(34)+"+str$(i%)+"+chr$(34)+".bmp"+chr$(34) file_writeln 1," on_click i%,click" file_writeln 1," hint i%,item_read$(1002,i%)" file_writeln 1,"next i%" file_writeln 1,"end" file_writeln 1,"click:" file_writeln 1," s$ = item_read$(1001,number_click)" file_writeln 1," if instr(s$,"+chr$(34)+"explorer.exe"+chr$(34)+")=0 then s$ = "+chr$(34)+d$+chr$(34)+"+file_extract_name$(s$)" file_writeln 1," i% = dll_call1("+chr$(34)+"ExecuteLNK"+chr$(34)+",adr(s$))" file_writeln 1," return" file_close 1 d$ = left$(f$,len(f$)-4)+"_data\" if dir_exists(d$)=0 then dir_make d$ file_save no_fic%,d$+"liens.txt" file_save no_hint%,d$+"hints.txt" for i%=1 to count(no_fic%) file_save no_lnk%+i%,d$+"ico_"+str$(i%)+".bmp" f$ = item_read$(no_fic%,i%) if instr(f$,"explorer.exe")=0 f$ = file_extract_name$(f$) if file_exists(bureau$+f$)=1 f$ = bureau$ + f$ else f$ = allusers$ + f$ end_if if file_exists(d$+file_extract_name$(f$))=0 then file_copy f$,d$+file_extract_name$(f$) end_if next i% message "fini" return charger: f$ = file_name$(no_open%) if f$="_" then return if lower$(right$(f$,4))<>".bas" then return if file_exists(f$)=0 then return d$ = file_extract_name$(f$) d$ = dir_current$+"\"+left$(d$,len(d$)-4)+"_data\" if dir_exists(d$)=0 then return if dir_exists(icones$)=0 then dir_make icones$ clear no_fic% clear no_hint% nmarque% = 0 file_load no_fic%,d$+"liens.txt" file_load no_hint%,d$+"hints.txt" if nmax%>no_lnk% for i%=no_lnk%+1 to nmax% delete i% delete 1000+i% next i% end_if no% = no_lnk% for i%=1 to count(no_fic%) f$ = d$ + file_extract_name$(item_read$(no_fic%,i%)) pic$ = file_extract_name$(f$) pic$ = d$+left$(pic$,len(pic$)-4)+".ico" if file_exists(pic$)=1 then file_delete pic$ ExtractIconFromLNK(f$,pic$) LoadAnyImageFile(pic$) no% = no% + 1 : picture no% top no%,40 : left no%,10+(i%-1)*(ExtractIconFromLNK+10) width no%,ExtractIconFromLNK : height no%,ExtractIconFromLNK on_click no%,click_lnk clipboard_paste no% k% = no% + 1000 : picture k% top k%,40+ExtractIconFromLNK+2 : left k%,10+(i%-1)*(ExtractIconFromLNK+10) width k%,ExtractIconFromLNK : height k%,5 2d_target_is k% 2d_rectangle 0,0,ExtractIconFromLNK-1,4 next i% nmax% = no% marquer(nmax%) return
supprimer: if message_confirmation_yes_no("Supprimer ["+item_read$(no_fic%,nmarque%-no_lnk%)+"]")=1 i% = nmarque% - no_lnk% marquer(0) item_delete no_fic%,i% item_delete no_hint%,i% if i%<=count(no_fic%) for k%=i% to count(no_fic%) clipboard_copy no_lnk% + k% + 1 clipboard_paste no_lnk% + k% next k% end_if delete no_lnk% + count(no_fic%)+1 delete 1000 + no_lnk% + count(no_fic%)+1 nmax% = nmax% - 1 end_if return return
sub marquer(n%) if nmarque%>0 if nmarque%<>n% 2d_target_is 1000+nmarque% 2d_fill_color 255,255,255 2d_rectangle 0,0,ExtractIconFromLNK-1,4 2d_target_is 0 end_if end_if if n%>0 2d_target_is n% + 1000 2d_fill_color 255,0,0 2d_rectangle 0,0,ExtractIconFromLNK-1,4 2d_target_is 0 end_if nmarque% = n% end_sub
#INCLUDE "KGF_SUB.bas"
| |
| | | Klaus
Nombre de messages : 12331 Age : 75 Localisation : Ile de France Date d'inscription : 29/12/2009
| Sujet: Re: KGF.DLL version V1.85 du 29/11/2012 : ajout ExecuteLNK Lun 3 Déc 2012 - 11:14 | |
| Nouvelle version. Nouveautés: - le marquage de l'icône active esr réalisé maintenant par un cadre rouge autour de l'icône - nouveaux boutons pour décaler une icône vers la gauche ou vers la droite - Code:
-
' creer_menu_pour_bureau.bas
labels() constantes() variables() form0() gui() initialisations()
end
sub labels() label click_lnk, listfic, lnksel, generer, charger, supprimer, agauche, adroite end_sub
sub constantes() ' dim bureau$ : bureau$ = "C:\Documents and settings\Klaus\bureau\" dim key_au$ : key_au$ = "SOFTWARE\Microsoft\Windows\CurrentVersion\Explorer\Shell Folders" dim value_au$ : value_au$ = "Common Desktop" dim key_u$ : key_u$ = "SOFTWARE\Microsoft\Windows\CurrentVersion\Explorer\Shell Folders" dim value_u$ : value_u$ = "Desktop" dim ici$ : ici$ = dir_current$ dim icones$ : icones$ = ici$+"\"+"icones\" end_sub
sub variables() dim no%, taille%, f$, pic$, s$, d$, n%, i%, k%, nmax%, nmarque%, f1$ dim fic$, hint$ dim no_fic%, no_ico%, no_hint%, no_save%, no_lnk%, no_liste%,no_open%, no_img% dim allusers$, bureau$ end_sub
sub form0() caption 0,"Génération d'un menu graphique" full_space 0 end_sub
sub GUI() no% = no% + 1 : dlist no% : no_fic% = no% no% = no% + 1 : dlist no% : no_ico% = no% no% = no% + 1 : dlist no% : no_hint% = no% no% = no% + 1 : save_dialog no% : no_save% = no% filter no_save%,"Source Panoramic|*.bas" no% = no% + 1 : open_dialog no% : no_open% = no% filter no_open%,"Source Panoramic|*.bas" no% = no% + 1 : image no% : no_img% = no%
no% = no% + 1 : button no% : top no%,10 : left no%,10 caption no%,"Liste" : on_click no%,listfic no% = no% + 1 : button no% : top no%,10 : left no%,120 caption no%,"Générer" : on_click no%,generer no% = no% + 1 : button no% : top no%,10 : left no%,320 caption no%,"Charger" : on_click no%,charger no% = no% + 1 : button no% : top no%,90 : left no%,420 caption no%,"Supprimer" : on_click no%,supprimer no% = no% + 1 : button no% : top no%,120 : left no%,420 caption no%,"<===" : on_click no%,agauche no% = no% + 1 : button no% : top no%,150 : left no%,420 caption no%,"===>" : on_click no%,adroite
no% = no% + 1 : list no% : no_liste% = no% : on_click no%,lnksel top no%,80 : width no%,400 : height no%,550 no_lnk% = no% end_sub
sub initialisations() KGF_initialize("KGF.dll") ReadRegistryKey(3,key_u$,value_u$) bureau$ = ReadRegistryKey$ + "\" ReadRegistryKey(4,key_au$,value_au$) allusers$ = ReadRegistryKey$ + "\" end_sub
click_lnk: marquer(number_click) return listfic: clear no_liste% dir_change allusers$ f$ = file_find_first$ while f$<>"_" item_add no_liste%,f$ f$ = file_find_next$ end_while item_add no_liste%,"" dir_change bureau$ f$ = file_find_first$ while f$<>"_" item_add no_liste%,f$ f$ = file_find_next$ end_while file_find_close dir_change ici$ return lnksel: f$ = item_index$(no_liste%) if f$="" then return inactive no_liste% if dir_exists(icones$)=0 then dir_make icones$ if dir_exists(bureau$+f$)=1 f1$ = "explorer.exe "+bureau$+f$ f$ = "explorer.exe" else f1$ = "" if file_exists(bureau$+f$)=1 f$ = bureau$ + item_index$(no_liste%) else f$ = allusers$ + item_index$(no_liste%) end_if end_if pic$ = file_extract_name$(f$) pic$ = icones$+left$(pic$,len(pic$)-4)+".ico" if file_exists(pic$)=1 then file_delete pic$ ExtractIconFromLNK(f$,pic$) LoadAnyImageFile(pic$) no% = no% + 1 : picture no% top no%,40 : left no%,10+count(no_fic%)*(ExtractIconFromLNK+10) width no%,ExtractIconFromLNK : height no%,ExtractIconFromLNK on_click no%,click_lnk clipboard_paste no% k% = no% + 1000 : picture k% top k%,40+ExtractIconFromLNK+2 : left k%,10+count(no_fic%)*(ExtractIconFromLNK+10) width k%,ExtractIconFromLNK : height k%,5 2d_target_is k% 2d_rectangle 0,0,ExtractIconFromLNK-1,4 nmax% = no% marquer(nmax%) if f1$="" item_add no_fic%,f$ hint no%,f$ item_add no_hint%,f$ else item_add no_fic%,f1$ hint no%,f1$ item_add no_hint%,f1$ end_if item_add no_ico%,pic$ f$ = file_extract_name$(f$) file_delete pic$ pause 100 active no_liste% return generer: dir_dialog no_save%,ici$ f$ = file_name$(no_save%) if f$="_" then return if lower$(right$(f$,4))<>".bas" then f$ = f$ + ".bas" d$ = file_extract_name$(f$) d$ = left$(d$,len(d$)-4)+"_data\" file_open_write 1,f$ file_writeln 1,"label click" file_writeln 1,"dll_on "+chr$(34)+"KGF.dll"+chr$(34) file_writeln 1,"border_small 0" file_writeln 1,"caption 0,"+chr$(34)+"Menu de raccourcis"+chr$(34) file_writeln 1,"height 0,30+"+str$(ExtractIconFromLNK) file_writeln 1,"width 0,10+(10+"+str$(ExtractIconFromLNK)+")*"+str$(count(no_fic%)) file_writeln 1,"dlist 1001 : file_load 1001,"+chr$(34)+d$+"liens.txt"+chr$(34) file_writeln 1,"dlist 1002 : file_load 1002,"+chr$(34)+d$+"hints.txt"+chr$(34) file_writeln 1,"dim i%, s$" file_writeln 1,"for i%=1 to count(1001)" file_writeln 1," picture i% : left i%,(i%-1)*(10+"+str$(ExtractIconFromLNK)+")" file_writeln 1," width i%,"+str$(ExtractIconFromLNK) file_writeln 1," height i%,"+str$(ExtractIconFromLNK) file_writeln 1," file_load i%,"+chr$(34)+d$+"ico_"+chr$(34)+"+str$(i%)+"+chr$(34)+".bmp"+chr$(34) file_writeln 1," on_click i%,click" file_writeln 1," hint i%,item_read$(1002,i%)" file_writeln 1,"next i%" file_writeln 1,"end" file_writeln 1,"click:" file_writeln 1," s$ = item_read$(1001,number_click)" file_writeln 1," if instr(s$,"+chr$(34)+"explorer.exe"+chr$(34)+")=0 then s$ = "+chr$(34)+d$+chr$(34)+"+file_extract_name$(s$)" file_writeln 1," i% = dll_call1("+chr$(34)+"ExecuteLNK"+chr$(34)+",adr(s$))" file_writeln 1," return" file_close 1 d$ = left$(f$,len(f$)-4)+"_data\" if dir_exists(d$)=0 then dir_make d$ file_save no_fic%,d$+"liens.txt" file_save no_hint%,d$+"hints.txt" for i%=1 to count(no_fic%) file_save no_lnk%+i%,d$+"ico_"+str$(i%)+".bmp" f$ = item_read$(no_fic%,i%) if instr(f$,"explorer.exe")=0 f$ = file_extract_name$(f$) if file_exists(bureau$+f$)=1 f$ = bureau$ + f$ else f$ = allusers$ + f$ end_if if file_exists(d$+file_extract_name$(f$))=0 then file_copy f$,d$+file_extract_name$(f$) end_if next i% message "fini" return charger: f$ = file_name$(no_open%) if f$="_" then return if lower$(right$(f$,4))<>".bas" then return if file_exists(f$)=0 then return d$ = file_extract_name$(f$) d$ = dir_current$+"\"+left$(d$,len(d$)-4)+"_data\" if dir_exists(d$)=0 then return if dir_exists(icones$)=0 then dir_make icones$ clear no_fic% clear no_hint% nmarque% = 0 file_load no_fic%,d$+"liens.txt" file_load no_hint%,d$+"hints.txt" if nmax%>no_lnk% for i%=no_lnk%+1 to nmax% delete i% delete 1000+i% next i% end_if no% = no_lnk% for i%=1 to count(no_fic%) f$ = d$ + file_extract_name$(item_read$(no_fic%,i%)) pic$ = file_extract_name$(f$) pic$ = d$+left$(pic$,len(pic$)-4)+".ico" if file_exists(pic$)=1 then file_delete pic$ ExtractIconFromLNK(f$,pic$) LoadAnyImageFile(pic$)
no% = no% + 1 k% = no% + 1000 : picture k% top k%,40-2 : left k%,10+(i%-1)*(ExtractIconFromLNK+10)-2 width k%,ExtractIconFromLNK+4 : height k%,ExtractIconFromLNK+4 color k%,0,0,255 picture no% top no%,40 : left no%,10+(i%-1)*(ExtractIconFromLNK+10) width no%,ExtractIconFromLNK : height no%,ExtractIconFromLNK on_click no%,click_lnk clipboard_paste no% next i% nmax% = no% marquer(nmax%) return
supprimer: if nmarque%=0 then return if message_confirmation_yes_no("Supprimer ["+item_read$(no_fic%,nmarque%-no_lnk%)+"]")=1 i% = nmarque% - no_lnk% marquer(0) item_delete no_fic%,i% item_delete no_hint%,i% if i%<=count(no_fic%) for k%=i% to count(no_fic%) clipboard_copy no_lnk% + k% + 1 clipboard_paste no_lnk% + k% next k% end_if delete no_lnk% + count(no_fic%)+1 delete 1000 + no_lnk% + count(no_fic%)+1 nmax% = nmax% - 1 end_if return return agauche: if nmarque%=0 then return if nmarque%=no_lnk%+1 then return i% = nmarque% - no_lnk% fic$ = item_read$(no_fic%,i%) hint$ = item_read$(no_hint%,i%) 2d_target_is nmarque% 2d_image_copy no_img%,0,0,ExtractIconFromLNK-1,ExtractIconFromLNK-1
item_delete no_fic%,i% item_delete no_hint%,i% clipboard_copy nmarque%-1 item_insert no_fic%,i%-1,fic$ item_insert no_hint%,i%-1,hint$ clipboard_paste nmarque% 2d_target_is nmarque%-1 2d_image_paste no_img%,0,0 2d_target_is 0 marquer(nmarque%-1) return adroite: if nmarque%=0 then return if (nmarque%-no_lnk%)=count(no_fic%) then return i% = nmarque% - no_lnk%
fic$ = item_read$(no_fic%,i%) hint$ = item_read$(no_hint%,i%) 2d_target_is nmarque% 2d_image_copy no_img%,0,0,ExtractIconFromLNK-1,ExtractIconFromLNK-1
item_delete no_fic%,i% item_delete no_hint%,i% clipboard_copy nmarque%+1
item_insert no_fic%,i%+1,fic$ item_insert no_hint%,i%+1,hint$ clipboard_paste nmarque% 2d_target_is nmarque%+1 2d_image_paste no_img%,0,0
2d_target_is 0 marquer(nmarque%+1) return
sub marquer(n%) if nmarque%>0 if nmarque%<>n% then color 1000+nmarque%,255,255,255 end_if if n%>0 then color 1000+n%,255,0,0 nmarque% = n% end_sub
#INCLUDE "KGF_SUB.bas"
| |
| | | Contenu sponsorisé
| Sujet: Re: KGF.DLL version V1.85 du 29/11/2012 : ajout ExecuteLNK | |
| |
| | | | KGF.DLL version V1.85 du 29/11/2012 : ajout ExecuteLNK | |
|
Sujets similaires | |
|
| Permission de ce forum: | Vous ne pouvez pas répondre aux sujets dans ce forum
| |
| |
| |