J'ai un problème avec la gestion du bloc-notes, en effet, j'ai besoin
d'ouvrir le bloc-notes (avec shell je sais, entre autres), donc d'ouvrir ce
logiciel, mais avec un contenu, je dis bien de l'ouvrir avec un contenu (qui
peut être une variable texte ou un fichier, peu importe), et non pas de
l'ouvrir avec un fichier.
Pour résumer, je voudrais seulement appeler le bloc-notes et lui passer du
texte, uniquement ça, ce sera ensuite à l'utilisateur de décider s'il
enregistre ou s'il abandonne, d'où l'intérêt de cette action ; bine
évidemment en sus, je propose un nom au futur éventuel fichier, ce qui donne
sur un schéma de principe :
x = Shell("NotePad.exe " & ??? , 1)
??? = nom du fichier proposé + contenu fichier ou variable Y
Cette action est irreversible, confirmez la suppression du commentaire ?
Signaler le commentaire
Veuillez sélectionner un problème
Nudité
Violence
Harcèlement
Fraude
Vente illégale
Discours haineux
Terrorisme
Autre
Jérémy Jeanson
Bonjour Le Troll,
Je ne crois pas qu'il soit possible directement d'appeler le notepad ave c un contenu. Dans ton cas j'envisagerai deux possibilité:
1) (la plus simple si tu ne sais pas exploiter les api windows) Créer un fichier temporaire contenant ton contenu puis l'ouvrir avec l e notepad. Ce serra ensuite à ton utilisateur de choisir d'enregistrer c e fichier sous un nouvelle destination.
2) utiliser les api windows pour accéder à la fenêtre du notepad q ue tu auras ouvert. Et faire un SendMessage au control servant de zone de text e au notepad.
pour avoir une liste claire des api tu peux trouver des informations sur le site suivant :
http://www.pinvoke.net/index.aspx
-- Jérémy JEANSON MCP http://www.jjeanson.fr
Bonjour Le Troll,
Je ne crois pas qu'il soit possible directement d'appeler le notepad ave c
un contenu. Dans ton cas j'envisagerai deux possibilité:
1) (la plus simple si tu ne sais pas exploiter les api windows)
Créer un fichier temporaire contenant ton contenu puis l'ouvrir avec l e
notepad. Ce serra ensuite à ton utilisateur de choisir d'enregistrer c e
fichier sous un nouvelle destination.
2) utiliser les api windows pour accéder à la fenêtre du notepad q ue tu
auras ouvert. Et faire un SendMessage au control servant de zone de text e
au notepad.
pour avoir une liste claire des api tu peux trouver des informations sur
le site suivant :
Je ne crois pas qu'il soit possible directement d'appeler le notepad ave c un contenu. Dans ton cas j'envisagerai deux possibilité:
1) (la plus simple si tu ne sais pas exploiter les api windows) Créer un fichier temporaire contenant ton contenu puis l'ouvrir avec l e notepad. Ce serra ensuite à ton utilisateur de choisir d'enregistrer c e fichier sous un nouvelle destination.
2) utiliser les api windows pour accéder à la fenêtre du notepad q ue tu auras ouvert. Et faire un SendMessage au control servant de zone de text e au notepad.
pour avoir une liste claire des api tu peux trouver des informations sur le site suivant :
http://www.pinvoke.net/index.aspx
-- Jérémy JEANSON MCP http://www.jjeanson.fr
LE TROLL
Bonjour Jérémy,
Si c'est possible, je viens d'avoir la solution (conjuguée à l'API moveWindow), grâce à deux personnes sur le forum :
Public Declare Auto Function MoveWindow Lib "user32.dll" ( _ ByVal hWnd As IntPtr, _ ByVal X As Int32, _ ByVal Y As Int32, _ ByVal nWidth As Int32, _ ByVal nHeight As Int32, _ ByVal bRepaint As Boolean _ ) As Boolean '''''''''''''''''''''''
Dim notepad As Process = New Process() Try notepad.StartInfo.FileName = "Notepad.exe" notepad.StartInfo.UseShellExecute = False notepad.StartInfo.RedirectStandardInput = True notepad.StartInfo.Arguments = nomFichier ' var notepad.Start() notepad.WaitForInputIdle() If notepad.Responding Then System.Windows.Forms.SendKeys.SendWait(LeTxt) ' var text à insérer System.Windows.Forms.SendKeys.SendWait("^{HOME}") ' position <home_cursor> ' Dim hWnd As IntPtr Dim X As Int32 Dim Y As Int32 Dim nWidth As Int32 Dim nHeight As Int32 Dim bRepaint As Boolean Dim reponse As Boolean hWnd = notepad.MainWindowHandle X = 50 Y = 50 nWidth = 1000 nHeight = 600 bRepaint = True reponse = MoveWindow(hWnd, X, Y, nWidth, nHeight, bRepaint) End If Catch MsgBox("Vous devez installer Notepad.exe (bloc-notes), remédier... ", vbExclamation) Finally notepad.Close() End Try
"Jérémy Jeanson" a écrit dans le message de news: Bonjour Le Troll,
Je ne crois pas qu'il soit possible directement d'appeler le notepad avec un contenu. Dans ton cas j'envisagerai deux possibilité:
1) (la plus simple si tu ne sais pas exploiter les api windows) Créer un fichier temporaire contenant ton contenu puis l'ouvrir avec le notepad. Ce serra ensuite à ton utilisateur de choisir d'enregistrer ce fichier sous un nouvelle destination.
2) utiliser les api windows pour accéder à la fenêtre du notepad que tu auras ouvert. Et faire un SendMessage au control servant de zone de texte au notepad.
pour avoir une liste claire des api tu peux trouver des informations sur le site suivant :
http://www.pinvoke.net/index.aspx
-- Jérémy JEANSON MCP http://www.jjeanson.fr
Bonjour Jérémy,
Si c'est possible, je viens d'avoir la solution (conjuguée à l'API
moveWindow), grâce à deux personnes sur le forum :
Public Declare Auto Function MoveWindow Lib "user32.dll" ( _
ByVal hWnd As IntPtr, _
ByVal X As Int32, _
ByVal Y As Int32, _
ByVal nWidth As Int32, _
ByVal nHeight As Int32, _
ByVal bRepaint As Boolean _
) As Boolean
'''''''''''''''''''''''
Dim notepad As Process = New Process()
Try
notepad.StartInfo.FileName = "Notepad.exe"
notepad.StartInfo.UseShellExecute = False
notepad.StartInfo.RedirectStandardInput = True
notepad.StartInfo.Arguments = nomFichier ' var
notepad.Start()
notepad.WaitForInputIdle()
If notepad.Responding Then
System.Windows.Forms.SendKeys.SendWait(LeTxt) ' var text à
insérer
System.Windows.Forms.SendKeys.SendWait("^{HOME}") ' position
<home_cursor>
'
Dim hWnd As IntPtr
Dim X As Int32
Dim Y As Int32
Dim nWidth As Int32
Dim nHeight As Int32
Dim bRepaint As Boolean
Dim reponse As Boolean
hWnd = notepad.MainWindowHandle
X = 50
Y = 50
nWidth = 1000
nHeight = 600
bRepaint = True
reponse = MoveWindow(hWnd, X, Y, nWidth, nHeight, bRepaint)
End If
Catch
MsgBox("Vous devez installer Notepad.exe (bloc-notes), remédier...
", vbExclamation)
Finally
notepad.Close()
End Try
"Jérémy Jeanson" <jeremy.jeanson@free.fr> a écrit dans le message de
news:op.u511nfx38qnkfh@jeanson-j-pc.sherpagroup.net...
Bonjour Le Troll,
Je ne crois pas qu'il soit possible directement d'appeler le notepad avec
un contenu. Dans ton cas j'envisagerai deux possibilité:
1) (la plus simple si tu ne sais pas exploiter les api windows)
Créer un fichier temporaire contenant ton contenu puis l'ouvrir avec le
notepad. Ce serra ensuite à ton utilisateur de choisir d'enregistrer ce
fichier sous un nouvelle destination.
2) utiliser les api windows pour accéder à la fenêtre du notepad que tu
auras ouvert. Et faire un SendMessage au control servant de zone de texte
au notepad.
pour avoir une liste claire des api tu peux trouver des informations sur
le site suivant :
Public Declare Auto Function MoveWindow Lib "user32.dll" ( _ ByVal hWnd As IntPtr, _ ByVal X As Int32, _ ByVal Y As Int32, _ ByVal nWidth As Int32, _ ByVal nHeight As Int32, _ ByVal bRepaint As Boolean _ ) As Boolean '''''''''''''''''''''''
Dim notepad As Process = New Process() Try notepad.StartInfo.FileName = "Notepad.exe" notepad.StartInfo.UseShellExecute = False notepad.StartInfo.RedirectStandardInput = True notepad.StartInfo.Arguments = nomFichier ' var notepad.Start() notepad.WaitForInputIdle() If notepad.Responding Then System.Windows.Forms.SendKeys.SendWait(LeTxt) ' var text à insérer System.Windows.Forms.SendKeys.SendWait("^{HOME}") ' position <home_cursor> ' Dim hWnd As IntPtr Dim X As Int32 Dim Y As Int32 Dim nWidth As Int32 Dim nHeight As Int32 Dim bRepaint As Boolean Dim reponse As Boolean hWnd = notepad.MainWindowHandle X = 50 Y = 50 nWidth = 1000 nHeight = 600 bRepaint = True reponse = MoveWindow(hWnd, X, Y, nWidth, nHeight, bRepaint) End If Catch MsgBox("Vous devez installer Notepad.exe (bloc-notes), remédier... ", vbExclamation) Finally notepad.Close() End Try
"Jérémy Jeanson" a écrit dans le message de news: Bonjour Le Troll,
Je ne crois pas qu'il soit possible directement d'appeler le notepad avec un contenu. Dans ton cas j'envisagerai deux possibilité:
1) (la plus simple si tu ne sais pas exploiter les api windows) Créer un fichier temporaire contenant ton contenu puis l'ouvrir avec le notepad. Ce serra ensuite à ton utilisateur de choisir d'enregistrer ce fichier sous un nouvelle destination.
2) utiliser les api windows pour accéder à la fenêtre du notepad que tu auras ouvert. Et faire un SendMessage au control servant de zone de texte au notepad.
pour avoir une liste claire des api tu peux trouver des informations sur le site suivant :
http://www.pinvoke.net/index.aspx
-- Jérémy JEANSON MCP http://www.jjeanson.fr
Jérémy Jeanson
Attention, je crois que tu n'as pas tout bien suivi dans le code que tu as repris.
Ce qui t'es utile s'arrete à ceci :
notepad.StartInfo.FileName = "Notepad.exe" notepad.StartInfo.UseShellExecute = False notepad.StartInfo.RedirectStandardInput = True notepad.StartInfo.Arguments = nomFichier ' var notepad.Start() notepad.WaitForInputIdle() If notepad.Responding Then System.Windows.Forms.SendKeys.SendWait(LeTxt) ' var text à insérer System.Windows.Forms.SendKeys.SendWait("^{HOME}") ' position <home_cursor> End If
Et encore je ne vois pas l'utilité du senkeys "Home" dans le notepad
-- Jérémy JEANSON MCP http://www.jjeanson.fr
Attention, je crois que tu n'as pas tout bien suivi dans le code que tu as
repris.
Ce qui t'es utile s'arrete à ceci :
notepad.StartInfo.FileName = "Notepad.exe"
notepad.StartInfo.UseShellExecute = False
notepad.StartInfo.RedirectStandardInput = True
notepad.StartInfo.Arguments = nomFichier ' var
notepad.Start()
notepad.WaitForInputIdle()
If notepad.Responding Then
System.Windows.Forms.SendKeys.SendWait(LeTxt) ' var text à
insérer
System.Windows.Forms.SendKeys.SendWait("^{HOME}") ' position
<home_cursor>
End If
Et encore je ne vois pas l'utilité du senkeys "Home" dans le notepad
Attention, je crois que tu n'as pas tout bien suivi dans le code que tu as repris.
Ce qui t'es utile s'arrete à ceci :
notepad.StartInfo.FileName = "Notepad.exe" notepad.StartInfo.UseShellExecute = False notepad.StartInfo.RedirectStandardInput = True notepad.StartInfo.Arguments = nomFichier ' var notepad.Start() notepad.WaitForInputIdle() If notepad.Responding Then System.Windows.Forms.SendKeys.SendWait(LeTxt) ' var text à insérer System.Windows.Forms.SendKeys.SendWait("^{HOME}") ' position <home_cursor> End If
Et encore je ne vois pas l'utilité du senkeys "Home" dans le notepad
-- Jérémy JEANSON MCP http://www.jjeanson.fr
LE TROLL
Jérémy,
Oui, je sais, c'est moi qui ai intégré le code de l'API afin de récupérer le handle.
"Jérémy Jeanson" a écrit dans le message de news: Attention, je crois que tu n'as pas tout bien suivi dans le code que tu as repris.
Ce qui t'es utile s'arrete à ceci :
notepad.StartInfo.FileName = "Notepad.exe" notepad.StartInfo.UseShellExecute = False notepad.StartInfo.RedirectStandardInput = True notepad.StartInfo.Arguments = nomFichier ' var notepad.Start() notepad.WaitForInputIdle() If notepad.Responding Then System.Windows.Forms.SendKeys.SendWait(LeTxt) ' var text à insérer System.Windows.Forms.SendKeys.SendWait("^{HOME}") ' position <home_cursor> End If
Et encore je ne vois pas l'utilité du senkeys "Home" dans le notepad
-- Jérémy JEANSON MCP http://www.jjeanson.fr
Jérémy,
Oui, je sais, c'est moi qui ai intégré le code de l'API afin de
récupérer le handle.
"Jérémy Jeanson" <jeremy.jeanson@free.fr> a écrit dans le message de
news:op.u52dkcuq8qnkfh@jeanson-j-pc.sherpagroup.net...
Attention, je crois que tu n'as pas tout bien suivi dans le code que tu as
repris.
Ce qui t'es utile s'arrete à ceci :
notepad.StartInfo.FileName = "Notepad.exe"
notepad.StartInfo.UseShellExecute = False
notepad.StartInfo.RedirectStandardInput = True
notepad.StartInfo.Arguments = nomFichier ' var
notepad.Start()
notepad.WaitForInputIdle()
If notepad.Responding Then
System.Windows.Forms.SendKeys.SendWait(LeTxt) ' var text à
insérer
System.Windows.Forms.SendKeys.SendWait("^{HOME}") ' position
<home_cursor>
End If
Et encore je ne vois pas l'utilité du senkeys "Home" dans le notepad
"Jérémy Jeanson" a écrit dans le message de news: Attention, je crois que tu n'as pas tout bien suivi dans le code que tu as repris.
Ce qui t'es utile s'arrete à ceci :
notepad.StartInfo.FileName = "Notepad.exe" notepad.StartInfo.UseShellExecute = False notepad.StartInfo.RedirectStandardInput = True notepad.StartInfo.Arguments = nomFichier ' var notepad.Start() notepad.WaitForInputIdle() If notepad.Responding Then System.Windows.Forms.SendKeys.SendWait(LeTxt) ' var text à insérer System.Windows.Forms.SendKeys.SendWait("^{HOME}") ' position <home_cursor> End If
Et encore je ne vois pas l'utilité du senkeys "Home" dans le notepad