Bonjour à tous,
Tout d'abord je tiens à préciser que, dans ce que je vais vous demander, je nage complètement. Je vous demanderai d'être indulgents si je n'utilise pas les termes adéquats ou que je parle de choses qui n'ont absolument aucun sens. Merci
Donc voilà, je suis actuellement en stage de deuxième année en BTS SIO Développement, je suis chargé de créer un logiciel (WF ou Appli Console) en C# qui récupère des données dans un logiciel (implicitement ouvert) CadnaA de traitement acoustique. Les valeurs à récupérer sont traitées lors de l'ouverture des fichiers type (*.cna), ces fichiers ne sont donc pas utilisables sans être ouverts dans le logiciel (j'ai essayé de rechercher des données directement dans un fichier avec un éditeur hexa, et rien n'était exploitable).
Je me suis donc penché sur la récupération de ces valeurs via le processus en cours. Via la classe Process, j'arrive à récupérer le PID du logiciel que j'ouvre avec Process.Start(). Mon problème, après plusieurs heures de recherches, (Import de la dll kernel, des méthodes OpenProcess/ReadProcessMemory...) c'est que je ne parviens pas à faire sortir quoi que ce soit (je vous l'ai dit, je nage complètement). A l'aide de Cheat Engine, je parviens à récupérer pas mal d'adresses mémoire et leur contenu, mais je ne sais pas comment exploiter cela depuis mon application... Beaucoup de topics sur le net ont l'air de se rapprocher de ce que je cherche, mais ils sont en anglais et les termes utilisés ne me sont pas très communs.
Je suis même en train de me demander si, avant tout, ce que je cherche à faire est possible en C#.
Si vous pouviez éclairer ma lanterne là-dessus, cela me serait d'une grande aide.
Je n'ai pas vraiment de code à vous fournir, si ce n'est celui qui me permet d'ouvrir mon logiciel et de récupérer son PID.
En vous remerciant d'avance
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37 private void ouvrirFichier() { OpenFileDialog OFG = new OpenFileDialog(); OFG.Filter = "Fichiers CadnaA (*.cna)|*.cna"; OFG.FilterIndex = 2; OFG.RestoreDirectory = true; if (OFG.ShowDialog() == DialogResult.OK) { fichier = OFG.FileName; try { Process.Start(fichier); foreach (Process P in Process.GetProcessesByName("cna32d")) { lesProcessus.Add(P.Id.ToString()); foreach (String S in lesProcessus) { MessageBox.Show(S); } } { } } catch { MessageBox.Show("Le processus n'a pas réussi à démarrer."); } } }
Partager