Ouvrir un fichier avec notepad++ depuis mon applicatif [Résolu]

Messages postés
70
Date d'inscription
mercredi 1 octobre 2008
Statut
Membre
Dernière intervention
17 avril 2013
- - Dernière réponse : romain60112
Messages postés
70
Date d'inscription
mercredi 1 octobre 2008
Statut
Membre
Dernière intervention
17 avril 2013
- 17 avril 2013 à 09:14
Bonjour à tous,

je travail sur un outil de diag où je dois ouvrir un fichier *.c avec notepad++.exe à partir de mon applicatif.
pour ce faire j'utilise ceci :

if (File.Exists(sFile))
{
System.Diagnostics.ProcessStartInfo psi = new System.Diagnostics.ProcessStartInfo(sFile, "");
System.Diagnostics.Process.Start(psi);
}

Je souhaiterais maintenant ouvrir le fichier à une certaine ligne.

Avez vous des idées comment procéder ?

Slts
Romain
Afficher la suite 

Votre réponse

3 réponses

Meilleure réponse
Messages postés
70
Date d'inscription
mercredi 1 octobre 2008
Statut
Membre
Dernière intervention
17 avril 2013
3
Merci
bon, pas possible de faire un Ctrl+G directement j'ai trouvé une alternative : accéder par les menus.
[DllImport("user32.dll")]
public static extern int FindWindow
(
  string lpClassName, // class name 
  string lpWindowName // window name 
);

[DllImport("user32.dll")]
public static extern int SetForegroundWindow
(
  int hWnd // handle to window
);

private void button_Notepad_Click(object sender, EventArgs e)
{
 
 if (File.Exists(localisation))
 {
    System.Diagnostics.ProcessStartInfo psi = new System.Diagnostics.ProcessStartInfo(localisation, "notepad++");
    System.Diagnostics.Process.Start(psi);
 }   
 
 // rechercher le handle de la fenêtre
 int iHandle = NativeWin32.FindWindow(null, localisation);
            
 NativeWin32.SetForegroundWindow(iHandle);
 // Ouvrir la fenetre Atteindre : Ctrl+G
 System.Windows.Forms.SendKeys.Send("{ESC}%R{DOWN}{DOWN}{DOWN}{DOWN}{DOWN}{DOWN}{DOWN}{DOWN}{DOWN}{DOWN}{DOWN}{DOWN}{DOWN}{ENTER}");
 // Entrer le numéro de ligne
 System.Windows.Forms.SendKeys.Send(num_ligne);
 // valider
 System.Windows.Forms.SendKeys.Send("{ENTER}");
}


a+

Dire « Merci » 3

Quelques mots de remerciements seront grandement appréciés. Ajouter un commentaire

Codes Sources 152 internautes nous ont dit merci ce mois-ci

Commenter la réponse de romain60112
Messages postés
1137
Date d'inscription
lundi 17 novembre 2003
Statut
Membre
Dernière intervention
23 janvier 2016
17
0
Merci
Salut,

notepad++ ne propose pas d'APIs de pilotage comme excel, word ect...
il n'est pas non plus un serveur DDE. (dynamic data exchange)

il faut donc passer par du code p-invoke (redéclarer des APIs win32) :

- récupérer le handle de la fenetre notepad++ via ::FindWindow()
- simuler des appuis de touches clavier via ::SendMessage() ou ::PostMessage()

bye...
Commenter la réponse de yann_lo_san
Messages postés
70
Date d'inscription
mercredi 1 octobre 2008
Statut
Membre
Dernière intervention
17 avril 2013
0
Merci
Merci pour cette réponse, elle m'a permit de coder une bonne partie.
Maintenant le raccourci qui m'intéresse est le Ctrl+G = Aller à...
Pour ce faire j'utilise : system.Windows.Forms.SendKeys.Send("^+G") mais malheureusement la commande semble inconnue par notepad++.

J'ai testé le :
- system.Windows.Forms.SendKeys.Send("^+F") : La fenêtre de recherche s'ouvre bien
- system.Windows.Forms.SendKeys.Send("^+S") : La fichier ce sauvegarde bien

Avez vous une idée pourquoi la commande Ctrl+G n'est pas reconnue ?

Slts
Romain
Commenter la réponse de romain60112