If you are not wiping out you are nog pushing enough...
Je hebt dus een applicatie (ik neem aan zonder src code) waaruit je tekst wil uitlezen.. Waar moet deze tekst vandaan komen? Een editbox, een lijst, een bitmap?
Het gaat om een automatische testtool. Deze identificeert componenten op een scherm d.m.v. het label dat links van een editbox staat. Voor de applicatie die we nu onder handen hebben kan deze testtool het label niet bepalen middels de standaard functionaliteit. Er moet dus een add-in worden geschreven. Deze add-in is in de vorm van een DLL.
De DLL moet nu het volgende doen. Van het meegegeven componentn (handle) bepaal je het component dat er 80 pixels rechts van staat. Dit component is een soort van label met een tekst erop. Deze tekst wil ik ophalen. Echter, dit lukt niet met de standaard windows api call "GetWindowText". Ik zal dus iets moeten hebben waaraan ik bepaalde coordinaten meegeef (van de schermpositie) dat de tekst kan bepalen op dit gebied.
Een soort OCR voor windows dus.
Ik hoop dat het nu wat duidelijker is.
If you are not wiping out you are nog pushing enough...
Overigens kun je volgens de MSDN GetWindowText helemaal niet gebruiken voor een andere applicatie. Ik weet even niet welke functie je wel zou moeten hebben.
Heb je al eens geprobeerd om, in plaats van het static control van de 'echte' applicatie uit te lezen, zelf een simpel programmaatje te maken met een static control, en *die* vervolgens uit te lezen? Mocht dit niet lukken, dan kan je iig in beide applicaties kijken wat er precies gebeurt met je message.
Ik zou OCR-achtige toestanden echt als laatste oplossing zien, omdat het totaal niet flexibel is. Als iemand een groter lettertype heeft geconfigureerd, of als de volgende windows andere kleuren / anti-aliasing / whatever heeft, dan nekt dit je programma. En bovendien is het veel en foutgevoelig werk.
LOL, de MSDN handleiding. Goed punt, heel niet aan gedachtPooh schreef op vrijdag 20 mei 2005 @ 14:31:
Overigens kun je volgens de MSDN GetWindowText helemaal niet gebruiken voor een andere applicatie. Ik weet even niet welke functie je wel zou moeten hebben.
GetDlgItemText() misschien?
Of, uit dezelfde GetWindowText-pagina: To retrieve the text of a control in another process, send a WM_GETTEXT message directly instead of calling GetWindowText
[ Voor 20% gewijzigd door MrBucket op 20-05-2005 14:41 ]
Er staat een nogal ranzige oplossing op experts exchange (even aanmelden):
http://www.experts-exchan...ual_Basic/Q_21018080.html
Ik krijg overigens wel een handle te pakken van het component.
If you are not wiping out you are nog pushing enough...
Als het allemaal niet lukt, probeer eens : www.simpleocr.com/Help.asp
[ Voor 135% gewijzigd door Rowwan op 20-05-2005 14:52 ]
Zucht. Hij wil van een 3rd party programma een label uitlezen. Als dat programma in VB is geschreven (er staat nergens dat dat niet zo is) kun je de labels niet zomaar uitlezen, omdat ze geen handle hebben. Als 't in VC geschreven was zou dat wel kunnen. Waarmee hij zijn uitleesprogje schrijft staat er trouwens ook niet. C++ kan ook borland oid zijn.Rowwan schreef op vrijdag 20 mei 2005 @ 14:50:
VBHet gaat over VC
Als het allemaal niet lukt, probeer eens : www.simpleocr.com/Help.asp
OCR'er lijkt me wel een heel wanhopige oplossing, er moet iets beters zijn. Zie mijn linkje oa.
De doelapplicatie in USOFT (waar dat mee is geschreven is mij niet bekend).
De testapplicatie ondersteund diverse plug-ins onder andere voor JAVA, VB, Delphi applicaties etc. Echter niet voor deze applicatie, en ja ik ben dus redelijk wanhopig
If you are not wiping out you are nog pushing enough...
Heb je die experts exchange link al geprobeerd? Die lijkt prima te werken, ook als spy++ het niet doet?MaxxRide schreef op vrijdag 20 mei 2005 @ 15:06:
De DLL is geschreven in visual C++.
De doelapplicatie in USOFT (waar dat mee is geschreven is mij niet bekend).
De testapplicatie ondersteund diverse plug-ins onder andere voor JAVA, VB, Delphi applicaties etc. Echter niet voor deze applicatie, en ja ik ben dus redelijk wanhopig
If you are not wiping out you are nog pushing enough...
Man hopes. Genius creates. Ralph Waldo Emerson
Never worry about theory as long as the machinery does what it's supposed to do. R. A. Heinlein
Kijken welke class het is, en dan?
If you are not wiping out you are nog pushing enough...
Man hopes. Genius creates. Ralph Waldo Emerson
Never worry about theory as long as the machinery does what it's supposed to do. R. A. Heinlein
Waar kan ik MSVC vinden?
[ Voor 10% gewijzigd door MaxxRide op 22-05-2005 22:25 ]
If you are not wiping out you are nog pushing enough...