FORUM DE DISCUSSION SUR LE LANGAGE PANORAMIC

Développement d'applications avec le langage Panoramic
 
AccueilAccueil  FAQFAQ  RechercherRechercher  S'enregistrerS'enregistrer  MembresMembres  GroupesGroupes  Connexion  
Derniers sujets
» Tout est tranquille
par Jean Claude Ven 22 Sep 2017 - 21:41

» Texte en gif animé
par JL35 Ven 22 Sep 2017 - 13:29

» BasicEditor
par Yannick Mer 20 Sep 2017 - 17:17

» Simuler l’appui d'une touche ou combinaison de touches.
par pascal10000 Lun 18 Sep 2017 - 19:30

» Utilisation de HVIEWER pour afficher des images
par papydall Lun 18 Sep 2017 - 17:43

» Panoramic et les gifs animés.
par papydall Lun 18 Sep 2017 - 16:32

» recover source
par pascal10000 Dim 17 Sep 2017 - 14:21

» Recent dans vos menu
par Jean Claude Sam 16 Sep 2017 - 11:41

» Comment centrer un texte 3D.
par pascal10000 Ven 15 Sep 2017 - 20:20

» Carte interface 16 entrées et 16 sorties
par Jicehel Ven 15 Sep 2017 - 16:30

» Version instantanée V 0.9.28i9 possédant l'objet SYNEDIT
par pascal10000 Ven 15 Sep 2017 - 16:20

» Compilateur FBPano
par jean_debord Ven 15 Sep 2017 - 9:59

» 1 (en analyse): 3D_TARGET_IS ne fonctionne pas sur 3D_TEXT
par Jack Jeu 14 Sep 2017 - 19:52

» Problème avec la 3D.
par Jack Jeu 14 Sep 2017 - 18:06

» Test de la 3D.
par mindstorm Mer 13 Sep 2017 - 19:45

Navigation
 Portail
 Index
 Membres
 Profil
 FAQ
 Rechercher
Rechercher
 
 

Résultats par :
 
Rechercher Recherche avancée
Septembre 2017
LunMarMerJeuVenSamDim
    123
45678910
11121314151617
18192021222324
252627282930 
CalendrierCalendrier

Partagez | 
 

 KGF.DLL version V1.85 du 29/11/2012 : ajout ExecuteLNK

Voir le sujet précédent Voir le sujet suivant Aller en bas 
Aller à la page : Précédent  1, 2
AuteurMessage
Klaus

avatar

Nombre de messages : 10062
Age : 68
Localisation : Ile de France
Date d'inscription : 29/12/2009

MessageSujet: Re: KGF.DLL version V1.85 du 29/11/2012 : ajout ExecuteLNK   Sam 1 Déc 2012 - 12: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...
Revenir en haut Aller en bas
Voir le profil de l'utilisateur http://klauspanoramic.comxa.com/index.html
Invité
Invité



MessageSujet: Re: KGF.DLL version V1.85 du 29/11/2012 : ajout ExecuteLNK   Sam 1 Déc 2012 - 14: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: "&"
Revenir en haut Aller en bas
Klaus

avatar

Nombre de messages : 10062
Age : 68
Localisation : Ile de France
Date d'inscription : 29/12/2009

MessageSujet: Re: KGF.DLL version V1.85 du 29/11/2012 : ajout ExecuteLNK   Sam 1 Déc 2012 - 14: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 ExecuteLNK

Nouvelle 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.
Revenir en haut Aller en bas
Voir le profil de l'utilisateur http://klauspanoramic.comxa.com/index.html
Invité
Invité



MessageSujet: Re: KGF.DLL version V1.85 du 29/11/2012 : ajout ExecuteLNK   Sam 1 Déc 2012 - 14: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.
Revenir en haut Aller en bas
Klaus

avatar

Nombre de messages : 10062
Age : 68
Localisation : Ile de France
Date d'inscription : 29/12/2009

MessageSujet: Re: KGF.DLL version V1.85 du 29/11/2012 : ajout ExecuteLNK   Sam 1 Déc 2012 - 14: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.
Revenir en haut Aller en bas
Voir le profil de l'utilisateur http://klauspanoramic.comxa.com/index.html
Invité
Invité



MessageSujet: Re: KGF.DLL version V1.85 du 29/11/2012 : ajout ExecuteLNK   Sam 1 Déc 2012 - 15: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!
Revenir en haut Aller en bas
Klaus

avatar

Nombre de messages : 10062
Age : 68
Localisation : Ile de France
Date d'inscription : 29/12/2009

MessageSujet: Re: KGF.DLL version V1.85 du 29/11/2012 : ajout ExecuteLNK   Sam 1 Déc 2012 - 17: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é.
Revenir en haut Aller en bas
Voir le profil de l'utilisateur http://klauspanoramic.comxa.com/index.html
papydall

avatar

Nombre de messages : 5531
Age : 67
Localisation : Moknine (Tunisie) Entre la chaise et le clavier
Date d'inscription : 03/03/2012

MessageSujet: Re: KGF.DLL version V1.85 du 29/11/2012 : ajout ExecuteLNK   Sam 1 Déc 2012 - 18: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 !). Laughing
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 - 3:00, édité 1 fois
Revenir en haut Aller en bas
Voir le profil de l'utilisateur http://papydall-panoramic.forumarabia.com/
Invité
Invité



MessageSujet: Re: KGF.DLL version V1.85 du 29/11/2012 : ajout ExecuteLNK   Sam 1 Déc 2012 - 18: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
Revenir en haut Aller en bas
Klaus

avatar

Nombre de messages : 10062
Age : 68
Localisation : Ile de France
Date d'inscription : 29/12/2009

MessageSujet: Re: KGF.DLL version V1.85 du 29/11/2012 : ajout ExecuteLNK   Sam 1 Déc 2012 - 21: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"
Revenir en haut Aller en bas
Voir le profil de l'utilisateur http://klauspanoramic.comxa.com/index.html
Invité
Invité



MessageSujet: Re: KGF.DLL version V1.85 du 29/11/2012 : ajout ExecuteLNK   Sam 1 Déc 2012 - 22: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.
Revenir en haut Aller en bas
Klaus

avatar

Nombre de messages : 10062
Age : 68
Localisation : Ile de France
Date d'inscription : 29/12/2009

MessageSujet: 1.87 01/12/2012 amélioration fonction ExecuteLNK   Sam 1 Déc 2012 - 23:16

Tu as raison. Voilà qui est fait sur ce message.
Revenir en haut Aller en bas
Voir le profil de l'utilisateur http://klauspanoramic.comxa.com/index.html
Klaus

avatar

Nombre de messages : 10062
Age : 68
Localisation : Ile de France
Date d'inscription : 29/12/2009

MessageSujet: Re: KGF.DLL version V1.85 du 29/11/2012 : ajout ExecuteLNK   Dim 2 Déc 2012 - 0: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"
Revenir en haut Aller en bas
Voir le profil de l'utilisateur http://klauspanoramic.comxa.com/index.html
Klaus

avatar

Nombre de messages : 10062
Age : 68
Localisation : Ile de France
Date d'inscription : 29/12/2009

MessageSujet: 1.88 02/12/2012 amélioration fonction ExecuteLNK   Dim 2 Déc 2012 - 13:26

Nouvelle version:

KGF.dll passe à la version
V1.88 02/12/2012 amélioration fonction ExecuteLNK

La 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"
Revenir en haut Aller en bas
Voir le profil de l'utilisateur http://klauspanoramic.comxa.com/index.html
Klaus

avatar

Nombre de messages : 10062
Age : 68
Localisation : Ile de France
Date d'inscription : 29/12/2009

MessageSujet: Re: KGF.DLL version V1.85 du 29/11/2012 : ajout ExecuteLNK   Lun 3 Déc 2012 - 13: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"
Revenir en haut Aller en bas
Voir le profil de l'utilisateur http://klauspanoramic.comxa.com/index.html
Contenu sponsorisé




MessageSujet: Re: KGF.DLL version V1.85 du 29/11/2012 : ajout ExecuteLNK   

Revenir en haut Aller en bas
 
KGF.DLL version V1.85 du 29/11/2012 : ajout ExecuteLNK
Voir le sujet précédent Voir le sujet suivant Revenir en haut 
Page 2 sur 2Aller à la page : Précédent  1, 2
 Sujets similaires
-
» zumo 2x0 (GCD File) software version 3.00 du 05/06/2012
» [Mobile] Ajout du choix de page dans la version mobile
» Zumo 660 (GCD File) software version 4.50 (30/01/2012)
» [Terminé] MailWasher Pro 2012 gratuit pendant quelques heures !
» Version 45 : Utopia (anniversaire 2012)

Permission de ce forum:Vous ne pouvez pas répondre aux sujets dans ce forum
FORUM DE DISCUSSION SUR LE LANGAGE PANORAMIC :: Activité des sites créés par les Panoramiciens. :: Le site de Klaus-
Sauter vers: