Text van een ander programma-window (b.v. label)

Pagina: 1
Acties:

  • PKP B-Man
  • Registratie: November 2002
  • Laatst online: 19-07-2023
Is het mogelijk om op een of andere manier text (niet de titel van de window) te "kopieeren" van een window (dat niet door jezelf geprogrammeerd is)?
Ik bedoel dus bijvoorbeeld dat ik de tekst van een label van een ander programma kan gebruiken in mijn eigen programma. Om aan de hand van de gekopieerde tekst een opdracht uit te voeren.
De manier waarop ik de tekst kan krijgen maakt me (in eerste instantie nog) niet zo veel uit. Dat ik bijvoorbeeld eerst met de muis er over moet gaan, of ik eerst de handle van het window/child moet zien te krijgen of iets anders.

Ik heb geen idee hoe ik dit voor elkaar moet krijgen, en kan er ook niets over vinden bij google. Dus als iemand weet hoe dit gedaan kan worden zal ik deze zeer dankbaar zijn!

B-Man


P.S. Ik programmeer in BCB6, mocht dat van belang zijn

  • MissingDog
  • Registratie: Augustus 2002
  • Niet online
je zou eens de Win32 API moeten gaan bekijken, vooral de windowhandler info kan voor jou wel van pas komen.

  • PKP B-Man
  • Registratie: November 2002
  • Laatst online: 19-07-2023
Dat heb ik. Maar hier kan ik het niet in vinden. De functies die ik kan vinden die over text gaan lijken allemaal maar 1 kant op te gaan (de verkeerde dus), zo bijvoorbeeld TextOut.

Om handles te krijgen van bepaalde compontenten en daar wat mee te doen is geen probleem. Sterker nog, dat doe ik ook voortdurend. Maar het lijkt wel dat ik de tekst niet te pakken kan krijgen... Daarnaast is er nog een extra probleem, namelijk: ik/men kan de handle van een label niet te pakken krijgen... Als ik een programma maak met allemaal knoppen en edit-boxes erop, dan krijg ik alle handles perfect te zien in mijn programma, maar als ik een Label in het programma gebruik kan ik hiervan niet de handle te pakken krijgen (als die uberhaupt een handle heeft) (ik gebruik EnumWindows((WNDENUMPROC)EnumWindowsProc,(LPARAM)ListView) en EnumChildWindows(handler,(WNDENUMPROC)EnumWindowsProc,(LPARAM)ListView) om de handles van windows en childs te pakken te krijgen, dat lijkt me prima...

  • PKP B-Man
  • Registratie: November 2002
  • Laatst online: 19-07-2023
Voor buttons, memos, editboxes, checkboxes, forms e.d. werkt de volgende code wel:
C++:
1
2
3
4
5
6
7
8
9
10
HWND handler = (HWND)StrToInt("$" + Edit1->Text);

int length =SendMessage(handler,WM_GETTEXTLENGTH,NULL,NULL);
char *text;
char dummy[1];
dummy[0] = 0; // force good stack frame
text = (char *)alloca(length+2);
SendMessage(handler,WM_GETTEXT,(WPARAM)length+1,(LPARAM)text);
text[length+2]=0;
Memo1->Text = text;


Maar dit lost mijn probleem met labels nog steeds niet op... Hoe kan men nou tekst van labels kopieeren? :? 8)7 |:(

B-Man

  • Korben
  • Registratie: Januari 2001
  • Laatst online: 14-11-2025

Korben

() => {};

PKP B-Man schreef op 01 April 2003 @ 16:39:
[...]

Maar dit lost mijn probleem met labels nog steeds niet op... Hoe kan men nou tekst van labels kopieeren? :? 8)7 |:(

B-Man
Uh... zoals bij elk ander window... WM_GETTEXT. Je moet gewoon zorgen dat je een handle te pakken krijgt van een label. Ik denk dat je probleem is dat je denkt dat het een label heet, maar in Windows heet zoiets een Static.

[ Voor 32% gewijzigd door Korben op 02-04-2003 00:51 ]

.oisyn: Échte programmeurs haten PHP met een passie. Ben jij soms geen echte programmeur?


  • PKP B-Man
  • Registratie: November 2002
  • Laatst online: 19-07-2023
Ok, om het wat duidelijker te maken... Het programma dat ik snel in elkaar heb gedraaid om het een en ander te kunnen testen:
Afbeeldingslocatie: http://members.home.nl/jkamerling/TestProgram.jpg
Als ik dus van dit programma alle childs opvraag zal ik dus de volgende childs moeten vinden:
  • 1 Memo
  • 4 Buttons
  • 5 labels
  • 4 CheckBoxes
  • 4 Edits
Als ik met mijn programma vervolgens kijk wat dat programma bevat aan childs krijg ik het volgende:
Afbeeldingslocatie: http://members.home.nl/jkamerling/SpyProgram.jpg
Wat blijkt dus... Geen labels (statics)... Dus daarvan kan ik ook niet de tekst vandaan halen of iets anders....

Ik hoop dat het probleem nu iets duidelijker is geworden... En hopelijk kan iemand me nu ermee helpen.

B-Man
Pagina: 1