Das deutsche QBasic- und FreeBASIC-Forum Foren-Übersicht Das deutsche QBasic- und FreeBASIC-Forum
Für euch erreichbar unter qb-forum.de, fb-forum.de und freebasic-forum.de!
 
FAQFAQ   SuchenSuchen   MitgliederlisteMitgliederliste   BenutzergruppenBenutzergruppen  RegistrierenRegistrieren
ProfilProfil   Einloggen, um private Nachrichten zu lesenEinloggen, um private Nachrichten zu lesen   LoginLogin
Zur Begleitseite des Forums / Chat / Impressum
Aktueller Forenpartner:

Fremde Editbox manipulieren

 
Neues Thema eröffnen   Neue Antwort erstellen    Das deutsche QBasic- und FreeBASIC-Forum Foren-Übersicht -> Windows-spezifische Fragen
Vorheriges Thema anzeigen :: Nächstes Thema anzeigen  
Autor Nachricht
Jojo
alter Rang


Anmeldungsdatum: 12.02.2005
Beiträge: 9736
Wohnort: Neben der Festplatte

BeitragVerfasst am: 16.10.2008, 23:12    Titel: Fremde Editbox manipulieren Antworten mit Zitat

hi,
wie man das handle eines fremden fensters bekommt, weiß ich. happy ich möchte in einem fremden fenstere eine editbox bearbeiten, möglichst ohne sendkeys. weiß jemand, wie ich die passende editbox auswählen und bearbeiten kann?
_________________
» Die Mathematik wurde geschaffen, um Probleme zu lösen, die es nicht gäbe, wenn die Mathematik nicht erschaffen worden wäre.
Nach oben
Benutzer-Profile anzeigen Private Nachricht senden Website dieses Benutzers besuchen
Mao



Anmeldungsdatum: 25.09.2005
Beiträge: 4409
Wohnort: /dev/hda1

BeitragVerfasst am: 17.10.2008, 14:43    Titel: Antworten mit Zitat

FindWindowEx und anschließend eine WM_SETTEXT-Message.
_________________
Eine handvoll Glück reicht nie für zwei.
--
Nach oben
Benutzer-Profile anzeigen Private Nachricht senden
Jojo
alter Rang


Anmeldungsdatum: 12.02.2005
Beiträge: 9736
Wohnort: Neben der Festplatte

BeitragVerfasst am: 17.10.2008, 16:27    Titel: Antworten mit Zitat

Ich hab's jetzt mit einer total dreckigen variante gelöst (alle childfenster durchgehen, bis das vorherige (das hat ne caption, die ich auslesen kann) gefunden wurde), aber gibt's ne möglichkeit, an die controlnamen (sowas wie "Button1") ranzukommen, damit ich das editfeld direkt suchen kann?
_________________
» Die Mathematik wurde geschaffen, um Probleme zu lösen, die es nicht gäbe, wenn die Mathematik nicht erschaffen worden wäre.
Nach oben
Benutzer-Profile anzeigen Private Nachricht senden Website dieses Benutzers besuchen
frebas



Anmeldungsdatum: 20.06.2008
Beiträge: 245

BeitragVerfasst am: 21.10.2008, 16:28    Titel: Antworten mit Zitat

Ich denke nicht das die namen der variablen gespeichert werden weil das würde doch nur sinnlos die ausführbare datei vergrößern.
Nach oben
Benutzer-Profile anzeigen Private Nachricht senden
Jojo
alter Rang


Anmeldungsdatum: 12.02.2005
Beiträge: 9736
Wohnort: Neben der Festplatte

BeitragVerfasst am: 21.10.2008, 17:02    Titel: Antworten mit Zitat

Da sieht dieses Beispiel aber anders aus. ("ccAlertPrompt" ist definitiv ein Button-Name).
_________________
» Die Mathematik wurde geschaffen, um Probleme zu lösen, die es nicht gäbe, wenn die Mathematik nicht erschaffen worden wäre.
Nach oben
Benutzer-Profile anzeigen Private Nachricht senden Website dieses Benutzers besuchen
frebas



Anmeldungsdatum: 20.06.2008
Beiträge: 245

BeitragVerfasst am: 21.10.2008, 17:36    Titel: Antworten mit Zitat

Ich kenn mich nicht wirklich damit aus, ich denke dass der name ccAlertPrompt von windows/ der winapi zugewiesen wird.

Ich bind davon ausgegangen dass man die button auch anders nennen kann z.b. "startknopf" und dass dann niergendwo in der exe datei "startknopf" gespeichert wird sondern windows die variable button1 benutzt. Wie du wahrscheinlich gemerkt hast habe ich keine Ahnung von der Winapi, wenn es überhaupt damit zutun hat.


folgendes hätte ich beachten sollen:
Wenn man keine Ahnung hat...
Nach oben
Benutzer-Profile anzeigen Private Nachricht senden
Mao



Anmeldungsdatum: 25.09.2005
Beiträge: 4409
Wohnort: /dev/hda1

BeitragVerfasst am: 21.10.2008, 19:06    Titel: Antworten mit Zitat

Ich würde mich frebas mal anschlie0en, ich hab's dir ja auch schonmal geschrieben, meiner Meinung nach ist ccAlertPrompt eher der Class-Name.
_________________
Eine handvoll Glück reicht nie für zwei.
--
Nach oben
Benutzer-Profile anzeigen Private Nachricht senden
Jojo
alter Rang


Anmeldungsdatum: 12.02.2005
Beiträge: 9736
Wohnort: Neben der Festplatte

BeitragVerfasst am: 21.10.2008, 19:12    Titel: Antworten mit Zitat

der class name steht im 3. attribut...
_________________
» Die Mathematik wurde geschaffen, um Probleme zu lösen, die es nicht gäbe, wenn die Mathematik nicht erschaffen worden wäre.
Nach oben
Benutzer-Profile anzeigen Private Nachricht senden Website dieses Benutzers besuchen
Mao



Anmeldungsdatum: 25.09.2005
Beiträge: 4409
Wohnort: /dev/hda1

BeitragVerfasst am: 21.10.2008, 22:05    Titel: Antworten mit Zitat

Hab ich doch glatt was verwechselt. Zunge rausstrecken
_________________
Eine handvoll Glück reicht nie für zwei.
--
Nach oben
Benutzer-Profile anzeigen Private Nachricht senden
28398



Anmeldungsdatum: 25.04.2008
Beiträge: 1917

BeitragVerfasst am: 22.10.2008, 04:30    Titel: Antworten mit Zitat

Mmh wenn die Editbox besonders Gestylt ist, kann man sie (sofern keine anderen Editboxen diesen Style haben) sie darüber identifizieren. GetWindowLong, Rest kennste ja...

Hmmm
4P hat Folgendes geschrieben:

lpszWindow
[in] Pointer to a null-terminated string that specifies the window name (the window's title). If this parameter is NULL, all window names match.


Das wäre bei einer Editbox der Inhalt, Jojo. Falls die jedoch einen einmaligen Defaulttext hat... du weisst was ich meine...

ccAlertPrompt ist eventuell auch nur der nicht angezeigte Titel eines Icons oder eines Symbols im Fenster, oder eventuell einfach ein verstecktes Widget....
Nach oben
Benutzer-Profile anzeigen Private Nachricht senden
Jojo
alter Rang


Anmeldungsdatum: 12.02.2005
Beiträge: 9736
Wohnort: Neben der Festplatte

BeitragVerfasst am: 22.10.2008, 11:32    Titel: Antworten mit Zitat

Zitat:
Das wäre bei einer Editbox der Inhalt, Jojo.
ich will auch nicht den inhalt der textbox auslesen, sondern des buttons davor, weil die editbox rauszufinden ist ein ding der unmöglichkeit. Zunge rausstrecken aber selbst wenn ich FindWindowEx(parent,0,0,"Button-Caption") benutze, kommt 0 zurück.
_________________
» Die Mathematik wurde geschaffen, um Probleme zu lösen, die es nicht gäbe, wenn die Mathematik nicht erschaffen worden wäre.
Nach oben
Benutzer-Profile anzeigen Private Nachricht senden Website dieses Benutzers besuchen
28398



Anmeldungsdatum: 25.04.2008
Beiträge: 1917

BeitragVerfasst am: 22.10.2008, 12:13    Titel: Antworten mit Zitat

1) Zum sauberen WinAPI Programmierstil gehören viele Casts und viele StrPtrs grinsen

Zur Sicherheit benutzte ich auch bei Konstanten immer StrPtr, auch wenn der FBC das automatisch "zurechststutzt"

Nun wie wäre es mit der Widgetklasse?

Code:
FindWindow(parent, 0, StrPtr("Button"), StrPtr("Caption"))


Ich könnte mir vorstellen das das eines der tollen undokumentierten Features ist...
Nach oben
Benutzer-Profile anzeigen Private Nachricht senden
Jojo
alter Rang


Anmeldungsdatum: 12.02.2005
Beiträge: 9736
Wohnort: Neben der Festplatte

BeitragVerfasst am: 22.10.2008, 12:48    Titel: Antworten mit Zitat

bringt genau so wenig...
Code:
#Include "windows.bi"

Dim a As hwnd = FindWindow(0,"shoutcast source")
Dim b As hwnd = FindWindowEx(a,0,StrPtr("button"),StrPtr("Enable Title Updates"))
Print a, b
sleep

das teil ist ne checkbox, und laut spy++ den typ "button" (und auch laut meinem eigenen classfinder). mir geht aber so langsam ein licht auf... ich vermute, dass er das teil nicht findet, da es in einem Frame drinliegt...

EDIT: das Teil suche ich (bzw den eintrag davor):

_________________
» Die Mathematik wurde geschaffen, um Probleme zu lösen, die es nicht gäbe, wenn die Mathematik nicht erschaffen worden wäre.
Nach oben
Benutzer-Profile anzeigen Private Nachricht senden Website dieses Benutzers besuchen
28398



Anmeldungsdatum: 25.04.2008
Beiträge: 1917

BeitragVerfasst am: 22.10.2008, 15:11    Titel: Antworten mit Zitat

Wenns ein echter Frame ist musst du natürlich den Frame als hParent angeben, aber wenn es nur eine Groupbox ist oder der Programmierer faul war sollte das keinen Einfluss haben...
Nach oben
Benutzer-Profile anzeigen Private Nachricht senden
Jojo
alter Rang


Anmeldungsdatum: 12.02.2005
Beiträge: 9736
Wohnort: Neben der Festplatte

BeitragVerfasst am: 22.10.2008, 15:27    Titel: Antworten mit Zitat

naja, der typ is ja ersichtlich: "Dialog"... aber die haben alle keine caption, arg...
_________________
» Die Mathematik wurde geschaffen, um Probleme zu lösen, die es nicht gäbe, wenn die Mathematik nicht erschaffen worden wäre.
Nach oben
Benutzer-Profile anzeigen Private Nachricht senden Website dieses Benutzers besuchen
Beiträge der letzten Zeit anzeigen:   
Neues Thema eröffnen   Neue Antwort erstellen    Das deutsche QBasic- und FreeBASIC-Forum Foren-Übersicht -> Windows-spezifische Fragen Alle Zeiten sind GMT + 1 Stunde
Seite 1 von 1

 
Gehe zu:  
Du kannst keine Beiträge in dieses Forum schreiben.
Du kannst auf Beiträge in diesem Forum nicht antworten.
Du kannst deine Beiträge in diesem Forum nicht bearbeiten.
Du kannst deine Beiträge in diesem Forum nicht löschen.
Du kannst an Umfragen in diesem Forum nicht mitmachen.

 Impressum :: Datenschutz