bonjour,
je peux savoir si visual c++ peux communiquer avec un autre logiciel, en fait c'est un logiciel de supervision est je veux récupérer les données pour pouvoir les modifier.
merci d'avance pour vos reponses.![]()
bonjour,
je peux savoir si visual c++ peux communiquer avec un autre logiciel, en fait c'est un logiciel de supervision est je veux récupérer les données pour pouvoir les modifier.
merci d'avance pour vos reponses.![]()
tu veux créer un programme pour exploiter des données présentes dans un autre logiciel ?
en fait je dois creé une interface soft qui peux lire données d'un autre logiciel
le logiciel n'offre pas de système pour s'interfacer avec lui ? (fichiers xml, apis, etc ...)
donc tu pense que ce n'est pas possible de faire une interface avec visual c qui peux aller écrire des données dans ce logiciel
je pense que c'est pas la meilleure facon.
Sinon, oui, grace aux handles, tu peux aller récuperer le contenu d'interface d'autres logiciels si les champs sont élémentaires (textbox, static, edit, etc ...)
ca devient compliqué et c'est souvent de la bidouille.
donc tu n'as pas une autre solution pour pouvoir exploiter les données d'un autre logiciel et pouvoir les modifier
et c'est quoi un handles stp?
si, la solution serait d'utiliser findwindow, getwindowtext, etc ... pour localiser la fenetre, les controles et lire le contenu
c'est quoi un findwindow et getwindowtext, tu n 'aurais pas un exemple de programme qui utilise findwindow.
merci
fais une recherche sur le forum, il y en a plein
dans la faq visual C++ aussi
supposons que je connais l'adresse de stockage de l'autre logiciel, est ce que tu pense que je peux aller directement lire et changer les données avec visual C.
c'est quoi l'adresse de stockage ?
en fait je veux dire l'adresse ou l'autre logiciel stocke les variables que je dois modifier tu vois se que je veux dire ou pas?
tu parles d'une adresse en mémoire ?
oui
normalement, les zones de mémoires d'un processus sont protégées de la lecture d'autres. On peut y arriver plus ou moins grace à une injection de code, mais c'est un processus plutot compliqué.
Tu as abandonné la lecture directe depuis l'interface ?
ok d'acord. en fait je ne comprends pas trop comment utiliser findwindow, getwindowtext, etc. est ce que tu peux m'expliquer un peux ce que sa veux dire stp et comment sa marche stp.
merci beaucoup
FindWindows va te permettre de récuperer un handle de fenetre, ou de controle
un exemple :
ouvre la calculatrice de windows XP, rentre un nombre
et execute ca
ca va t'afficher la valeur du champ edit
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 HWND h = FindWindow(TEXT("SciCalc"), NULL); if (h) { HWND hEdit = FindWindowEx(h, NULL, TEXT("Edit"), NULL); if (hEdit) { int len = (int)SendMessage(hEdit, WM_GETTEXTLENGTH, 0, 0); if (len) { TCHAR * text = new TCHAR[len + 1]; SendMessage(hEdit, WM_GETTEXT, len, (LPARAM)text); MessageBox(NULL, text, TEXT(""), 0); delete text; } } }
ya des erreurs quand j'exécute le programme![]()
ok c bon sa marche![]()
et pour aller ecrire des donnés on fait comment?
Partager