Vorheriges Thema anzeigen :: Nächstes Thema anzeigen |
Autor |
Nachricht |
Jojo alter Rang

Anmeldungsdatum: 12.02.2005 Beiträge: 9736 Wohnort: Neben der Festplatte
|
Verfasst am: 16.10.2008, 23:12 Titel: Fremde Editbox manipulieren |
|
|
hi,
wie man das handle eines fremden fensters bekommt, weiß ich. 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 |
|
 |
Mao
Anmeldungsdatum: 25.09.2005 Beiträge: 4409 Wohnort: /dev/hda1
|
Verfasst am: 17.10.2008, 14:43 Titel: |
|
|
FindWindowEx und anschließend eine WM_SETTEXT-Message. _________________ Eine handvoll Glück reicht nie für zwei.
--
 |
|
Nach oben |
|
 |
Jojo alter Rang

Anmeldungsdatum: 12.02.2005 Beiträge: 9736 Wohnort: Neben der Festplatte
|
Verfasst am: 17.10.2008, 16:27 Titel: |
|
|
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 |
|
 |
frebas
Anmeldungsdatum: 20.06.2008 Beiträge: 245
|
Verfasst am: 21.10.2008, 16:28 Titel: |
|
|
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 |
|
 |
Jojo alter Rang

Anmeldungsdatum: 12.02.2005 Beiträge: 9736 Wohnort: Neben der Festplatte
|
Verfasst am: 21.10.2008, 17:02 Titel: |
|
|
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 |
|
 |
frebas
Anmeldungsdatum: 20.06.2008 Beiträge: 245
|
Verfasst am: 21.10.2008, 17:36 Titel: |
|
|
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:
 |
|
Nach oben |
|
 |
Mao
Anmeldungsdatum: 25.09.2005 Beiträge: 4409 Wohnort: /dev/hda1
|
Verfasst am: 21.10.2008, 19:06 Titel: |
|
|
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 |
|
 |
Jojo alter Rang

Anmeldungsdatum: 12.02.2005 Beiträge: 9736 Wohnort: Neben der Festplatte
|
Verfasst am: 21.10.2008, 19:12 Titel: |
|
|
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 |
|
 |
Mao
Anmeldungsdatum: 25.09.2005 Beiträge: 4409 Wohnort: /dev/hda1
|
Verfasst am: 21.10.2008, 22:05 Titel: |
|
|
Hab ich doch glatt was verwechselt.  _________________ Eine handvoll Glück reicht nie für zwei.
--
 |
|
Nach oben |
|
 |
28398
Anmeldungsdatum: 25.04.2008 Beiträge: 1917
|
Verfasst am: 22.10.2008, 04:30 Titel: |
|
|
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 |
|
 |
Jojo alter Rang

Anmeldungsdatum: 12.02.2005 Beiträge: 9736 Wohnort: Neben der Festplatte
|
Verfasst am: 22.10.2008, 11:32 Titel: |
|
|
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. 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 |
|
 |
28398
Anmeldungsdatum: 25.04.2008 Beiträge: 1917
|
Verfasst am: 22.10.2008, 12:13 Titel: |
|
|
1) Zum sauberen WinAPI Programmierstil gehören viele Casts und viele StrPtrs
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 |
|
 |
Jojo alter Rang

Anmeldungsdatum: 12.02.2005 Beiträge: 9736 Wohnort: Neben der Festplatte
|
Verfasst am: 22.10.2008, 12:48 Titel: |
|
|
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 |
|
 |
28398
Anmeldungsdatum: 25.04.2008 Beiträge: 1917
|
Verfasst am: 22.10.2008, 15:11 Titel: |
|
|
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 |
|
 |
Jojo alter Rang

Anmeldungsdatum: 12.02.2005 Beiträge: 9736 Wohnort: Neben der Festplatte
|
Verfasst am: 22.10.2008, 15:27 Titel: |
|
|
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 |
|
 |
|