Button Strings auslesen



  • Hallo,

    Bin neu hier, aber da es sich um einen größeren WIN32 API Thread handelt bin ich hier sicher richtig.

    Ich habe ein Handle zu einem vorhandenen Button. Da Button mit CreateWindow erstellt wird, und was die Parameter angeht, dieser Button nicht viel hergibt ist hier meine Frage:

    CreateWindow("button","Confirm" ....

    Wie bekomme ich den Namen (nicht Klasse) und "Confirm" über die Win32 API?
    Mit Sendmessage und der Msg "WM_GETTEXT" bekomme ich einen Wert. Fragt mich nicht welchen, denn eigentlich ist es der Window Title. "button" ist die Klasse und somit ausgeschlossen.

    1)Gibt es eine Möglichkeit die Beschriftung dieses Buttons auszulesen ("Confirm")

    2)Oder vielleicht gleich alles Strings des Handles auf diesen Button auszulesen (Enumeration)

    3)Vielleicht habe ich das große Pech und die Beschriftung wird "gezeichnet" und ist somit nicht auslesbar?

    Einige Daten zum besagten Button:

    ExStyle: 0x4
    BS_TEXT (habe ich mit Sendmessage probiert, funktioniert wohl nicht)
    BS_OWNERDRAW

    Erstelle ich einen Button in C#, so habe ich Zugriff auf Button.Name und Button.Text, es wäre mir also schon geholfen diese beiden Werte über die WIN32 API auslesen zu können.

    Danke im Voraus für eure Hilfe.



  • Der Button ist ein vordefiniertes Fenster, die Parameter dafür werden in einer CREATESTRUCT-Sturktur abgelegt. Der Parameter "LPCSTR lpszWindowName" von CreateWindow gibt die Beschriftung des Buttons an und wird in im Strukturelement LPCSTR lpszName der CREATESTRUCT hinterlegt. Beim Erstellen des Buttons bekommt der Button eine WM-CREATE, von der lParam auf die CreateStruct zeigt, die die Button-Daten enthält.
    Damit müßte man die Beschriftung auslesen können.



  • LOL ?!...GetWindowText() ?!



  • @CodeFinder

    Hast Recht, ich hatte mein Posting nachträglich noch geändert, aber das ist wohl nicht angekommen 😕 😮



  • Elektronix schrieb:

    Der Button ist ein vordefiniertes Fenster, die Parameter dafür werden in einer CREATESTRUCT-Sturktur abgelegt. Der Parameter "LPCSTR lpszWindowName" von CreateWindow gibt die Beschriftung des Buttons an und wird in im Strukturelement LPCSTR lpszName der CREATESTRUCT hinterlegt. Beim Erstellen des Buttons bekommt der Button eine WM-CREATE, von der lParam auf die CreateStruct zeigt, die die Button-Daten enthält.
    Damit müßte man die Beschriftung auslesen können.

    ähm... hast Du vielleicht ein Code Snippet oder so? Ich bin leider irgendwie zu blöd, das selber rauszubekommen wie das funktionieren soll.



  • CodeFinder schrieb:

    LOL ?!...GetWindowText() ?!



  • Ich hab das in etwa so versucht:

    <pseudo code>

    Handle = Handle des gewünschten Elements

    Handle.GetWindowText()

    </pseudo code>

    entweder raff ich das nicht, oder der Compiler ist zu blöd.



  • Die Diskussion muß nicht gerade hier fortgeführt werden, abgesehen davon, daß das Thema nicht ein und dasselbe ist.



  • Sorry. Im letzten Posting vergessen:

    Danke für die sauschnelle Antwort.



  • Habt ihr alle n Problem ?!? ...

    HWND hButton = CreateWindowEx(.../*Parameterliste*/...);
    
    int iLength = GetWindowTextLength(hButton);
    PTCHAR pszBuffer = new TCHAR[iLength + 1];
    GetWindowText(hButton, pszBuffer, iLength);
    MessageBox(NULL, pszBuffer, TEXT("Der Text von hButton"), MB_OK);
    // ...
    delete [] pszBuffer;
    

    so geht das! 👍



  • CodeFinder spar' dir die Mühe. Schau dir doch seinen anderen Thread an. Der Typ ist ein Troll und der Unreg dazu ist er vermutlich selbst.



  • Ranner schrieb:

    CodeFinder spar' dir die Mühe. Schau dir doch seinen anderen Thread an. Der Typ ist ein Troll und der Unreg dazu ist er vermutlich selbst.

    Jo glaub auch 👎



  • Nein, ich bin nicht der unregistrierte Quacksalber. Der Mod soll das bestätigen. Meine IP ist statisch.



  • Hey Seraphin,

    in Deinem Thread:

    http://www.c-plusplus.net/forum/viewtopic-var-t-is-151079-and-postdays-is-0-and-postorder-is-asc-and-start-is-40.html

    hast Du gemeint, du schreibst es aus. Ich hätt hier ne Lösung wie das geht und würd dafür gern die Belohung einsacken. Wären immerhin 250,- die Stunde.

    Wenn Du Interesse hast schreib an:

    dominion2k@web.de



  • Hi,

    Ich hab dir eine E-Mail geschrieben. Jedoch ist, wie ich dir in der E-Mail bereits beschrieben habe, eine Überweisung vorab ohne Treuhand, zu unsicher.

    Im anderen Thread habe ich nicht mehr die Möglichkeit zu posten, so muß ich auch der Fairness wegen hier diese Antwort posten. Wahrscheinlich hat man auch kein Interesse mehr an meiner offiziellen Ausschreibung, den ich hatte dort vor den Link zur Ausschreibung zu posten.

    Info an Interessenten:
    Ich habe dem User eine Präsentation über VNC vorgeschlagen, nachdem dieser angeblich eine Lösung parat hat.



  • gib mal den Link zur Ausschreibung!



  • pv schrieb:

    gib mal den Link zur Ausschreibung!

    War gerade dabei die Ausschreibung zu finalisieren. Sollte der unreg eine plausible Lösung vorweisen, dann ist die Ausschreibug hinfällig. Will dieser User nicht meinen Transaktionsvorschlag annehmen, wird dennoch ausgeschrieben.



  • Macht das Privat aus, das hier ist keine Handelsbörse und Geldgeschäfte sind hier verboten. Bitte einen Moderator hier zu schliessen.

    MfG,
    Ranner



  • Ranner schrieb:

    Macht das Privat aus, das hier ist keine Handelsbörse und Geldgeschäfte sind hier verboten. Bitte einen Moderator hier zu schliessen.

    MfG,
    Ranner

    Das hättest du schon vor Tagen reinschreiben können. Und es ist auch keine Handelsbörsentransaktion. Dieser User hat mir nur eine Email Addy gepostet, und ich will nur wissen, ob er es ernst meint oder nur Schaumschläger ist.

    Übrigens ist die Ausschreibung ein Angebot, wo ich mit Treuhand arbeiten will. Anscheinend willst du das nicht respektieren. Wenn niemand eine Lösung für mein Problem hat, dann muß ich diesen Weg wählen.



  • Übrigens ist es nur fair, daß ich hier die Infos reinschreibe. Keine Sorge, die Präsentation läuft privat, aber jeder Interessent hat das Recht zu erfahren, was Sache ist.

    Bleib dem Thread einfach fern, wenn du nicht interessiert bist. Verschwende nicht deine Zeit mit brotlosen Beiträgen. Danke!


Log in to reply