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
» Compilateur FBPano
par jean_debord Aujourd'hui à 10:54

» demande pour recuperer un text speciale
par pascal10000 Hier à 22:04

» Casse-tête : Echanger les positions des cavaliers
par papydall Hier à 19:51

» KGF_dll - nouvelles versions
par Klaus Hier à 14:29

» Amélioration de la commande HINT
par papydall Mer 19 Juil 2017 - 3:30

» TEST SUR SHAPE
par papydall Mer 19 Juil 2017 - 1:17

» Un challenge à relever
par papydall Mar 18 Juil 2017 - 21:25

» Astuce : Indenter plusieurs lignes de code à la fois
par papydall Mar 18 Juil 2017 - 1:32

» Suggestion pour le forum
par papydall Lun 17 Juil 2017 - 20:28

» Truver les handles des onglets de Panoramic Editor
par Klaus Lun 17 Juil 2017 - 18:20

» Synedit_Editor - nouvelles versions
par Klaus Lun 17 Juil 2017 - 13:46

» Détermine si oui ou non un objet est PARENT d'un autre objet
par Klaus Dim 16 Juil 2017 - 11:58

» Une autre façon de terminer une application.
par papydall Dim 16 Juil 2017 - 3:53

» Déterminer le Handle de l’objet ayant le focus
par papydall Dim 16 Juil 2017 - 3:15

» Déterminer le HANDLE du Bureau
par papydall Dim 16 Juil 2017 - 1:59

Navigation
 Portail
 Index
 Membres
 Profil
 FAQ
 Rechercher
Rechercher
 
 

Résultats par :
 
Rechercher Recherche avancée
Juillet 2017
LunMarMerJeuVenSamDim
     12
3456789
10111213141516
17181920212223
24252627282930
31      
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 : 5451
Age : 66
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: