pointer
-
Hi,
mit diesen Ergänzungen habe ich keine Steuerzeichen mehr.
Original erstellt von <Spector>:
**>
char pointer[255] = {'\0'};Und dann mal sehen ob die Zeichen immer noch kommen, wenn nicht liegt der Fehler ganz woanders, z.B. falscher Fenster Handle.**
Aber,
ShowMessage((char*)pointer);
zeigt mir ein leeres Fenster. Das Handle muss stimmen, da ich mit
SendMessage(hParent1, LB_GETcount,0,0);
die Anzahl der Zeilen in der Listbox zurückbekomme.
cookie_woman
-
MessageBox(NULL, pointer, NULL, MB_OK);
-
Hi,
für eure schnelle Hilfe danke ich ersteinmal.
Original erstellt von f00lish:
**müsste es nichtSendMessage(hParent1, LB_GETTEXT,(WPARAM)0,(LPARAM)&pointer);
heissen? und bist du sicher, das hParent1 eine listbox ist. nur vom namen her sieht es nicht so aus..
**Glaube nicht.
Original erstellt von f00lish:
**
egal, probier es doch so, ist schöner:LPTSTR pszText = NULL; LRESULT nLength = SendMessage(hParent1, LB_GETTEXTLEN, (WPARAM)nIndex, 0); pszText = new TCHAR[nLength]; SendMessage(hParent1, LB_GETTEXT, (WPARAM)nIndex, (LPARAM)pszText); [..] MessageBox(0,(char*)pointer, NULL, MB_OK); delete[] pszText;
**
Dies bringt mir auch ein leeres Fenster (Titel: Fehler) wie vorher auch.
cookie_woman
-
Hi,
danke für eure Hilfe.
Mein Code sieht nun so aus:char pointer[250]={'\0'}; HWND hParent = FindWindow("TEST","Titel"); HWND hParent1 = FindWindowEx(hParent,0,"Listbox",0); DWORD Index = SendMessage(hParent1,LB_GETCOUNT,0,0); int i; for (i=0; i<Index; i++) { SendMessage(hParent1,LB_GETTEXT, (WPARAM)i,(long)&pointer); ShowMessage(pointer);
Das funzt auch. Allerdings beinhaltet die Ausgabe am Anfang und mittendrinn ein Tab-zeichen. Nach dem letzten Tab sind normale Buchstaben, die bis zum EOL wegkönnen. Wie könnte ich diese Zeichen in der for-Schleife schon wegbekommen?
Meine Überlegung war, "i" in eine variable zu schreiben und/oder die Daten in ein Textfile abzulegen.
Ähnlich diesem hier:scanf("%[^\n]",name);
Hier fehlt mir aber der zündende Gedanke.
cookie_woman
-
Wenn du schon Borland benutzt, warum dann das ganze WinAPI-Zeugs???
-
Hi,
Original erstellt von WebFritzi:
Wenn du schon Borland benutzt, warum dann das ganze WinAPI-Zeugs???Das ist momentan nicht anders möglich, da ich auf eine externe Application zugreife. Oder hast du eine andere Möglichkeit??
cookie_woman
-
nö
-
Original erstellt von cookie_woman:
**```cpp
char pointer[250]={'\0'};
HWND hParent = FindWindow("TEST","Titel");
HWND hParent1 = FindWindowEx(hParent,0,"Listbox",0);
DWORD Index = SendMessage(hParent1,LB_GETCOUNT,0,0);
int i;
for (i=0; i<Index; i++)
{
SendMessage(hParent1,LB_GETTEXT, (WPARAM)i,(long)&pointer);
ShowMessage(pointer);Das funzt auch. Allerdings beinhaltet die Ausgabe am Anfang und mittendrinn ein Tab-zeichen. Nach dem letzten Tab sind normale Buchstaben, die bis zum EOL wegkönnen. Wie könnte ich diese Zeichen in der for-Schleife schon wegbekommen? Meine Überlegung war, "i" in eine variable zu schreiben und/oder die Daten in ein Textfile abzulegen. Ähnlich diesem hier: ```cpp scanf("%[^\n]",name);
Hier fehlt mir aber der zündende Gedanke.
cookie_woman**
Hi,
hat nun jemand eine Idee???
cookie-woman
-
Original erstellt von cookie_woman:
**```cpp
char pointer[250]={'\0'};
// [...]
SendMessage(hParent1,LB_GETTEXT, (WPARAM)i,(long)&pointer);Wie schon gesagt: &pointer ist falsch.
lParam muss ein LPTSTR sein (siehe hier). &pointer ist ein zeiger auf einen Zeiger auf einen Buffer. Lass den Adressoperator & weg.[ Dieser Beitrag wurde am 16.06.2003 um 13:54 Uhr von cd9000 editiert. ]
-
Sorry,
SendMessage(hParent1,LB_GETTEXT, (WPARAM)i,(LPARAM)pointer);
ich hatte vergessen beim copy & paste das & wegzunehmen. Allerdings hat die Frage sich nicht geändert.
cookie_woman