Modifier image dans Richtextbox

Résolu
Messages postés
26
Date d'inscription
vendredi 28 avril 2006
Statut
Membre
Dernière intervention
20 décembre 2006
-
Messages postés
26
Date d'inscription
vendredi 28 avril 2006
Statut
Membre
Dernière intervention
20 décembre 2006
-
Bonjour,

Mon programme est un traitement de texte qui permet d'inclure des images et en sélectionant ces images de faire un contextmenustrip pour eux qui s'affiche en cliquant sur le bouton droit de la souris.

Le problème est que dans le contextmenustrip, il y a "Modifier l'image" et quand on clique dessus, ça lance:

Dim execut
As
String

Dim fichier AsString

Dim proc
As
New Process()

Dim execute
As
Integer

Tryproc.StartInfo.FileName = execut

'chemin et nom de l'executable proc.StartInfo.Arguments = fichier

'chemin et nom du fichier proc.StartInfo.WindowStyle = ProcessWindowStyle.Normal

'Ouvre dans une fenetre normale (peut etre cache, minimisee, ...) proc.StartInfo.UseShellExecute =

True
'Utilise le shell pour l'execution proc.StartInfo.CreateNoWindow =

False
'cree une fnouvelle fenetre proc.Start()

'lance l'executable en ouvrant le document execute = proc.Id

'recupere le handle . ce handle permer via d'autre fonction de gerer le process

Catch ex
As Exception

End
Try

Et je met execut =" C:\WINDOWS\system32\mspaint.exe", et fichier = "C:\Documents and settings\utilisateur\..."

Et quand je lance çà, ça me met une erreur :  "Impossible d'ouvrir C:\Documents.bmp"

Comment faire pour qu'il prenne pas les espaces en tant que fin du string?

7 réponses

Messages postés
3172
Date d'inscription
dimanche 15 février 2004
Statut
Membre
Dernière intervention
9 avril 2017
35
Salut,

Tu n'as pas besoins de mettre le chemin de l'application (ici paint)
Tu met le chemin de ton image uniquement dans execut. Il va se charger d'ouvrir tout seul paint et de charger l'image.
Et tu met rien en arguments.




Kenji



Il était une fois, un pauvre petit règlement que personne ne lisait. Il est tout sympa mais il est triste, aidez-le, lisez-le, ca lui ferait tellement plaisir ainsi qu'a nous. Merci.
Ca sent le sondage sur ce lien
Messages postés
3172
Date d'inscription
dimanche 15 février 2004
Statut
Membre
Dernière intervention
9 avril 2017
35
En effet, j'avais oublier ca.
Paint n'est pas le programe par défaut.

En fait le problement, c'est qu'il ne veut pas d'espace dans l'arguement.
Donc on est obliger de prendre son chemin en court.

La fonction pour récupéré le chemin court :



<System.Runtime.InteropServices.DllImport(
"kernel32.dll"
, SetLastError:=
True
, CharSet:=System.Runtime.InteropServices.CharSet.Auto)> _

Public

Shared

Function
GetShortPathName(
ByVal
longPath
As

String
, <System.Runtime.InteropServices.MarshalAs(System.Runtime.InteropServices.UnmanagedType.LPTStr)>
ByVal
ShortPath
As
System.Text.StringBuilder, <System.Runtime.InteropServices.MarshalAs(System.Runtime.InteropServices.UnmanagedType.U4)>
ByVal
bufferSize
As

Integer
)
As

Integer

End

Function

Public

Function
GetShortPathName(
ByVal
fileName
As

String
)
As

String

  
Dim
sb
As

New
System.Text.StringBuilder(1024)

  GetShortPathName(fileName, sb, sb.Capacity)

  
Return
sb.ToString()

End

Function




Et pour l'appliquer :



execut =
"C:\WINDOWS\system32\mspaint.exe"

fichier = GetShortPathName(
"C:\Documents and settings\utilisateur\..."
)





Kenji
Messages postés
3172
Date d'inscription
dimanche 15 février 2004
Statut
Membre
Dernière intervention
9 avril 2017
35
On peut même encore faire plus simple.
J'y avais pas pensé mais on rajoute des guillements et sa suffit



execut =
"C:\WINDOWS\system32\mspaint.exe"

fichier =
"""C:\Documents and Settings\Kenji-san\Mes documents\Mes images\Sans titre.JPG"""





Kenji
Messages postés
26
Date d'inscription
vendredi 28 avril 2006
Statut
Membre
Dernière intervention
20 décembre 2006

Merci, ça n'a pas vraiment le résultat que j'escomptais.


Ca ouvre l'apercu des images de Windows, mais ce n'est pas grave on peut accéder au logiciel de peinture à partir de ça.
Messages postés
26
Date d'inscription
vendredi 28 avril 2006
Statut
Membre
Dernière intervention
20 décembre 2006

Les deux réponses fonctionnent aussi bien l'une que l'autre.


Mais comme le chemin de l'image diffère tout le temps (en fonction de l'image choisit par l'utilisateur), je n'ai pas réussi à l'adapter à ta dernière réponse.

Merci beaucoup de ton aide.
Messages postés
3172
Date d'inscription
dimanche 15 février 2004
Statut
Membre
Dernière intervention
9 avril 2017
35
Ben tu fait un



fichier =
""""
& TaVariable &
""""





Kenji
Messages postés
26
Date d'inscription
vendredi 28 avril 2006
Statut
Membre
Dernière intervention
20 décembre 2006

Ca marche aussi.

Maintenant le problème est que quand j'inclut une image dans le richtextbox je récupère son chemin et je le stock dans My.Settings.image mais si je met plusieurs images les unes après les autres dans My.Settings.image, il y a seulement la dernière image.

Je voudrais quand je sélectionne une image dans la richtextbox et que je fasse "Modifier image", que ça soit celle la qui s'ouvre avec paint.