Est-ce possible de retrouver le chemin d'un fichier ouvert (en l’occurrence un fichier texte ici) à partir du process notepad via la méthode GetProcesses?
J'ai beau regarder tous les attributs d'un objet Process, aucun ne semble répondre à ce besoin.
C'est peut être possible mais à mon avis, si c'est le cas, ce n'est pas en utilisant simplement le classe Process. C'est un classe faite pour gérer des processus, pas notepad.
Cela dit, tu ne dois pas être le premier à vouloir lister des fichiers ouvert par un processus, j'ai fais quelque recherche et ça pas a l'air trivial.
Sinon, pour un processus aussi basique que NotePad et si le fichier est fourni au moment du lancement du processus, il est visible dans la "propriété" via WMI :
My bad, j’utilise Notepad++ et il y a tout le chemin dans la barre de titre.
Effectivement. Ça peut être une solution d'utiliser Notepad++, je doute qu'ils changent ça de sitôt.
D'ailleurs, pas besoin d'interop, on peut utiliser MainWindowTitle directement en C#.
Problème étant qu'il récupère seulement la valeur à l'exécution. Valeur qui tend à changer lorsqu'on switch d'onglet. Et notepad++ n'a pas l'air d'utiliser de process enfant pour la gestion de ces onglets...
je te propose se code fonctionnelle qui et une ebauche mes qui fait se que tu recherche
Imports System.IO
Imports System.Threading
Public Class Form1
Private Sub Button1_Click(sender As Object, e As EventArgs) Handles Button1.Click
'cherche le processus botepad et recupere le titre
Dim p() As Process = Process.GetProcessesByName("notepad")
For Each proc As Process In p
'suprime du titre -bloc-notre
Dim A As String = (proc.MainWindowTitle)
A = A.Replace(" - Bloc-notes", "")
'affiche le titre dans le label1
Label1.Text = A
Next
End Sub
Private Sub Button2_Click(sender As Object, e As EventArgs) Handles Button2.Click
Dim thread As New Thread(AddressOf lance)
thread.Start()
End Sub
Private Sub lance()
For Each drive As IO.DriveInfo In IO.DriveInfo.GetDrives
If drive.IsReady Then
Chercheextention(New IO.DirectoryInfo(drive.RootDirectory.ToString), {"txt"})
End If
Next
MsgBox("recherche terminer")
End Sub
Private Sub Chercheextention(dossier As IO.DirectoryInfo, Extensions() As String)
Try
'pour chaque extension...
For Each ext As String In Extensions
'...on fait une liste des fichiers concernés...
Dim f() As IO.FileInfo = dossier.GetFiles("*." & ext)
'...et on ajoute les fichiers à la listbox
For Each img As IO.FileInfo In f
If Me.ListBox1.InvokeRequired Then
ListBox1.Invoke(Sub() ListBox1.Items.Add(img.FullName))
End If
Next
Next
'recherche des sous-dossiers...
For Each d As IO.DirectoryInfo In dossier.GetDirectories
'et recherche récursive des fichiers
Chercheextention(d, Extensions)
Next
Catch ex As Exception
End Try
End Sub
Private Sub Button3_Click(sender As Object, e As EventArgs) Handles Button3.Click
'cherche dans le listbox le lien du contenu du label1 qui cherche
For i As Integer = 0 To ListBox1.Items.Count - 1
If (ListBox1.Items(i).ToString.Contains(Label1.Text)) Then
MsgBox("TROUVER")
'selectionne dans le listbox le lien qu il a trouver
ListBox1.SetSelected(i, True)
'recupere le lien qu il a selectionner dans le label2
Label2.Text = ListBox1.SelectedItem.ToString
End If
Next
End Sub
End Class
J'ai pris l'exemple de notepad.exe et d'un fichier texte mais c'est en réalité un fichier Simulink que j'aimerai récupérer dès lors que le fichier est ouvert. Même si je pense que la méthodologie est la même.
Le but est de récupérer l'emplacement du fichier ouvert.
J'ai pris l'exemple de notepad.exe et d'un fichier texte mais c'est en réalité un fichier Simulink que j'aimerai récupérer dès lors que le fichier est ouvert. Même si je pense que la méthodologie est la même.
Tu parles de la fonction GetOpenedFiles ? De ce que je lis en diagonale, il te faut quand même un chemin pour orienter la recherche.
Je cherche justement ce chemin.
il ne s'agit pas d'une affirmation mais de ma pensé. Je ne sais pas vraiment où chercher. C'est pourquoi je cherche la méthodologie (utilisation des processus? utilisation de la RAM&adressage).
c'est toujours WIP.
- Edité par DimitriNeker1 18 juillet 2019 à 15:46:08
Si vous avez des "pensées" et que vous cherchez des outils correspondant à vos "pensées", vous allez chercher longtemps, très longtemps.
Comprenez comment ce que vous trouvez sur le net fonctionne, sinon, vous tournerez en rond, très longtemps.
Ce que vous donnez en exemple est un truc extrêmement bas niveau, proche du "hardware", c'est de la programmation système spécifique à Windows, avec utilisation de module Kernel et tout le toutime.
C'est fait pour des utilitaires comme indiqué dans l'article et l'étendre demande de très très bonnes connaissances en programmation système Windows.
Votre besoin reste très très flou et je doute que vous aillez besoin de ce type de "grosse Bertha".
Si le programme "Simulink" tourne toujours, il y a de très grande chance qui verrouille le fichier, vous interdisant de le lire donc de le zipper.
Pouvez-vous prend un peu de temps pour exposer votre problème et arrêter avec des exemples "foireux" ?
Je recherche un CDI/CDD/mission freelance comme Architecte Logiciel/ Expert Technique sur technologies Microsoft.
Récupérer un fichier texte.
× Après avoir cliqué sur "Répondre" vous serez invité à vous connecter pour que votre message soit publié.
× Attention, ce sujet est très ancien. Le déterrer n'est pas forcément approprié. Nous te conseillons de créer un nouveau sujet pour poser ta question.
Mes applis Android
Mes applis Android