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.:king:
Version imprimable
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.:king:
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 editCode:
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:cry:
ok c bon sa marche:yaisse2:
et pour aller ecrire des donn�s on fait comment?
tu utilises le messages WM_SETTEXT (s'il s'agit d'un edit toujours)
tu peux etre un peu plus claire stp merci
ben l�, dans mon exemple, pour r�cuperer la valeur, tu as envoy� le message WM_GETTEXT
pour la mettre, utilise WM_SETTEXT
n'h�site pas � consulter l'aide http://msdn2.microsoft.com/en-us/library/ms632644.aspx
ok mais comment je fais pour envoyer une valeur pr�cise sur l'afficheur de la calculatrice.
je t'avais tout expliqu� pourtant, il suffisait de regarder la msdn :
Code:
1
2
3
4
5
6
7
8 HWND h = FindWindow(TEXT("SciCalc"), NULL); if (h) { HWND hEdit = FindWindowEx(h, NULL, TEXT("Edit"), NULL); if (hEdit) SendMessage(hEdit, WM_SETTEXT, NULL, (LPARAM)TEXT("1234")); }
ok merci:king:
comment je fais pour selectionner le logiciel que je veux controler moi. toi pour controler la calculatrice ta mis "SciCalc", et pour un autre logiciel on met quoi?
Sinon dans le logiciel que j'utilise il y a plusieurs variable comment je peux aller controller une variable pr�cise?
merci d'avance
utilise l'utilitaire spy++ pour connaitre le nom des fenetres et des classes de fenetres.
Tu peux t'en servir aussi pour connaitre les ID des controles ou les types de controles
comment je fais pour utiliser l'utilitaire spy++, et sa consiste a quoi?
merci
ok c'est bon j'ai trouver, je voudrais juste savoir sur spy++ quand il y a class name et classe styles on fais comment?
merci
dans les outils de visual studio, tu as un outil qui s'appelle spy++
il te permet d'espionner les fenetres
tu peux donc retrouver les handles, les classes, etc ...
c'est ce que j'ai fait pour la calculette
essaie de regarder, si tu n'y arrives pas, je te ferai des copies d'�cran
ok c'est bon j'ai trouver spy++, mais j'ai un petit probleme car pour changer la variable il faut cliquer sur la variable en question pour avoir une zone d'edition. donc on fait comment dans ce cas?
merci
j'ai rien compris :aie:
en fait je parle du logiciel ou je dois envoyer les donn�es. Pour modifier une variable il faut cliquer sur la variable en question et ensuite on peux rentrer une valeur,c'est pas comme sur la calculette ou on a une zone d'edition(la ou on peut ecrire). La il faut que je fasse un clique
jespere que c'est claire la :cfou:
tu dois simuler un click sur le bouton ?
tu peux essayer en envoyant le message de click
et comment on fait pour envoyer un message de click?
merci bcp
tu r�cup�res le handle du bouton, et tu fais (exemple pour la calculette, j'appui sur le bouton 8) :Code:
1
2
3
4
5
6
7
8
9
10 HWND h = FindWindow(TEXT("SciCalc"), NULL); if (h) { HWND h8 = GetDlgItem(h, 0x84); if (h8) { PostMessage(h8, WM_KEYDOWN, ' ', NULL); PostMessage(h8, WM_KEYUP, ' ', NULL); } }
Ok merci bcp c'est bon sa marche:king:
Sinon tu ne sais pas ou est ce que je peux trouver de la doc sur la gestion du port parallele sous visual?
Merci
recherche sur le forum, ca a du d�j� �tre abord�
j'ai deja cherch� et j'ai rein trouver.
en fait je voudrais envoyer des donn�es via le port parallele sur une carte memoire reli�e par le port parallele.
tu sait pas comment on peut faire
Merci bcp