[C#] Ouvrir notepad et ecrire dedans [Résolu]

cs_cricri2000
Messages postés
6
Date d'inscription
jeudi 20 décembre 2007
Dernière intervention
4 août 2009
- 24 nov. 2008 à 17:44 - Dernière réponse : cs_cricri2000
Messages postés
6
Date d'inscription
jeudi 20 décembre 2007
Dernière intervention
4 août 2009
- 25 nov. 2008 à 17:07
Bonjour,

Je développe une application et j'ai besoin d'ouvrir le Notepad de Windows et d'y écrire du texte dedans sans avoir à créer de fichier sur le disque.
J'essayé de plusieurs manières, en utilisant "Shell", en essayant de créer un fichier temporaire, etc. mais sans succès jusqu'à présent.

Est ce que déjà vous croyez que c'est possible? Et si oui, avez vous une solution?
Je commence à en douter malheureusement...

Merci d'avance

C.
Afficher la suite 

Votre réponse

8 réponses

Meilleure réponse
bubbathemaster
Messages postés
342
Date d'inscription
dimanche 26 janvier 2003
Dernière intervention
25 mars 2009
- 24 nov. 2008 à 18:42
3
Merci
C'est vraiment la seule solution?

Sinon oui c'est possible avec des message windows: t'ouvre un notepad, tu recupère le handle de la window avec FindWindow, puis le handle de la textbox avec je sais plus quelle autre API Window, après t'envois avec le message adequat. De mémoire je crois que c'est EM_SETTEXT, mais y'a tout ici:
http://msdn.microsoft.com/en-us/library/bb775458%28VS.85%29.aspx

Merci bubbathemaster 3

Avec quelques mots c'est encore mieux Ajouter un commentaire

Codes Sources a aidé 94 internautes ce mois-ci

Commenter la réponse de bubbathemaster
Meilleure réponse
Lutinore
Messages postés
3248
Date d'inscription
lundi 25 avril 2005
Dernière intervention
27 octobre 2012
- 25 nov. 2008 à 01:41
3
Merci
Salut, oui c'est bien ça..

[ DllImport( "User32.dll", SetLastError = true, CharSet = CharSet.Unicode ) ]
private static extern bool SendMessage(
    IntPtr hWnd, uint msg, UIntPtr wParam, IntPtr lParam );


[ DllImport( "User32.dll", SetLastError = true, CharSet = CharSet.Unicode ) ]
private static extern IntPtr FindWindowEx(
    IntPtr hWndParent, IntPtr hWndChild, string className, string WindowName );


private void WriteToNotepad( string text )
{
    if ( String.IsNullOrEmpty( text ) )
        throw new ArgumentException( );


    Process p = Process.Start( "notepad.exe" );
    p.WaitForInputIdle( 1000 );
    IntPtr hWnd = p.MainWindowHandle;
    p.Close( );
    p = null;


    hWnd = FindWindowEx( hWnd, IntPtr.Zero, "Edit", null );
    if ( hWnd == IntPtr.Zero )
        throw new Win32Exception( Marshal.GetLastWin32Error( ) );


    text += '\0';
    GCHandle gch = GCHandle.Alloc( text, GCHandleType.Pinned );
    SendMessage( hWnd, 0x000C /*WM_SETTEXT*/, UIntPtr.Zero, gch.AddrOfPinnedObject( ) );
    gch.Free( );
}

Merci Lutinore 3

Avec quelques mots c'est encore mieux Ajouter un commentaire

Codes Sources a aidé 94 internautes ce mois-ci

Commenter la réponse de Lutinore
Meilleure réponse
Lutinore
Messages postés
3248
Date d'inscription
lundi 25 avril 2005
Dernière intervention
27 octobre 2012
- 25 nov. 2008 à 15:52
3
Merci
Exact, on peut corriger ça par exemple avec un ptit WM_CHAR :

int pos = text.Length - 1;
SendMessage( hWnd, 0x00B1 /*EM_SETSEL*/, ( UIntPtr )pos, ( IntPtr )pos );
SendMessage( hWnd, 0x0102 /*WM_CHAR*/, ( UIntPtr )'\n', IntPtr.Zero );

Merci Lutinore 3

Avec quelques mots c'est encore mieux Ajouter un commentaire

Codes Sources a aidé 94 internautes ce mois-ci

Commenter la réponse de Lutinore
bubbathemaster
Messages postés
342
Date d'inscription
dimanche 26 janvier 2003
Dernière intervention
25 mars 2009
- 24 nov. 2008 à 18:44
0
Merci
correction c'est WM_SETTEXT
Commenter la réponse de bubbathemaster
cs_cricri2000
Messages postés
6
Date d'inscription
jeudi 20 décembre 2007
Dernière intervention
4 août 2009
- 25 nov. 2008 à 09:19
0
Merci
Merci pour vos réponses, je vais essayer et je vous tiens au courant.

C.
Commenter la réponse de cs_cricri2000
cs_cricri2000
Messages postés
6
Date d'inscription
jeudi 20 décembre 2007
Dernière intervention
4 août 2009
- 25 nov. 2008 à 11:14
0
Merci
Impeccable, ça fonctionne super bien.

Merci et bonne journée.

C.
Commenter la réponse de cs_cricri2000
cs_Bidou
Messages postés
5507
Date d'inscription
dimanche 4 août 2002
Dernière intervention
20 juin 2013
- 25 nov. 2008 à 14:43
0
Merci
Rigolo: si on tape du texte dans le notepad, puis qu'on le ferme, il ne demande pas pour enregistrer le fichier...

<hr />
-Blog-
-Site Perso-
Commenter la réponse de cs_Bidou
cs_cricri2000
Messages postés
6
Date d'inscription
jeudi 20 décembre 2007
Dernière intervention
4 août 2009
- 25 nov. 2008 à 17:07
0
Merci
hé bien merci, ça peut effectivement servir

C.
Commenter la réponse de cs_cricri2000

Vous n'êtes pas encore membre ?

inscrivez-vous, c'est gratuit et ça prend moins d'une minute !

Les membres obtiennent plus de réponses que les utilisateurs anonymes.

Le fait d'être membre vous permet d'avoir un suivi détaillé de vos demandes et codes sources.

Le fait d'être membre vous permet d'avoir des options supplémentaires.