Herzlich Willkommen, lieber Gast!
  Sie befinden sich hier:

  Forum » VC++ / MFC » Fremde MFC-Anwendung fernsteuern, geht sowas ?

Forum | Hilfe | Team | Links | Impressum | > Suche < | Mitglieder | Registrieren | Einloggen
  Quicklinks: MSDN-Online || STL || clib Reference Grundlagen || Literatur || E-Books || Zubehör || > F.A.Q. < || Downloads   

Autor Thread - Seiten: [ 1 ] > 2 <
010
24.12.2004, 11:33 Uhr
FloSoft
Medialer Over-Flow
(Administrator)


0x davor machen
--
class God : public ChuckNorris { };
 
Profil || Private Message || Suche Download || Zitatantwort || Editieren || Löschen || IP
011
28.12.2004, 09:51 Uhr
~urs
Gast


...danke für den tip!

komme allerdings leider immer noch auf keinen grünen zweig..


CEdit* pEdit = (CEdit*)pWnd->GetDlgItem(0x00060CF8); //Zugriffsnummer + 0x davor

Die Schnellüberwachung zeigt mir dies:
- pEdit 0x00000000 {CEdit hWnd=???}

...was anschließend bei

pEdit->SendMessage(EM_REPLACESEL, 0, (LPARAM)s.GetBuffer(s.GetLength()));

zur "Unbehandelten Ausnahme..." führt :-o

Was kann das sein?
Ich habe mit dem Fadenkreuz des Spy++ Fenster suchen exakt auf das Editfeld gezeigt und die komplette Zugriffsnummer in GetDlgItem eingesetzt + voangestelltem 0x

Es ist als würde das Editfeld nicht "gefunden"...
 
Profil || Private Message || Suche Download || Zitatantwort || Editieren || Löschen || IP
012
28.12.2004, 10:12 Uhr
mike
Pinguinhüpfer
(Operator)


Mit einem Codesegment können wir nix Anfangen - zeig mal den ganzen Source
--
 
Profil || Private Message || Suche Download || Zitatantwort || Editieren || Löschen || IP
013
28.12.2004, 10:45 Uhr
~urs
Gast


hi!

habe inzwischn gemerkt, daß sich die Zugriffsnummer auf ein Control/Fenster ja mit jedem Start ändert!!!
D.h. auf ein dynamischen Wert zuzugreifen per

CWnd* pWnd = FindWindow(NULL, "test1");
CString s = "Das ist ei Test";
if(pWnd) {
CEdit* pEdit = (CEdit*)pWnd->GetDlgItem(0x3E8); <---------Wert des Controls des "Fremdprg" ändert sich immer
pEdit->SendMessage(EM_REPLACESEL, 0, (LPARAM)s.GetBuffer(s.GetLength()));
}

muß doch sowieso in die hose gehen oder???
Wenn man SendMessage() im eigenen Programm verwirklichen möchte, kann man ja schlicht die Resource-Id des Editfeldes verwenden.

Aber wenn man die Nachricht an ein Editfeld eines anderen Programmes senden möchte??
Kernfrage: Wie sendet man z.B. einen String an ein Editfeld eines ANDEREN Programmes :-)
 
Profil || Private Message || Suche Download || Zitatantwort || Editieren || Löschen || IP
014
29.12.2004, 11:01 Uhr
mike
Pinguinhüpfer
(Operator)


Hi!
Naja. Zum Beispiel Windows vergibt immer die gleichen Handler Adressen - so hat ein Editfeld in einem CFileDialog immer den gleichen Wert (siehe "Inside Visual C++ - Microsoft Press").
Ich weiß mom gar nicht, obs sich bei jedem Programm ändert - nur bei WordPad, Editor und den Programen ist es imo immer gleich ...

Falls es sich wirklich immer ändert, musst du dir ne Routine basteln, die den hexa Code rausfindet. Z.B. such im Forum nach EnumWindow - das ist eine Callback Funktion, die dir alle Steuerelemente eines Fensters auflistet - dann hast du schon mal den Pointer auf das Steuerelement.

Aber ich glaube nicht, dass dies der Fall ist - denn imo ist die Ressource ID innerhalb eines Programmes immer konstant (hab mom. leider kein Win zum Überprüfen da).

mfg
--
 
Profil || Private Message || Suche Download || Zitatantwort || Editieren || Löschen || IP
015
31.12.2004, 12:25 Uhr
Spacelord
Hoffnungsloser Fall


Das Handle ändert sich bei jedem Programmstart,die Resourcen ID bleibt natürlich konstant.
Mit der ID kannst du über Prozessgrenzen hinweg aber nix anfangen.GetDlgItem liefert dir bei den MFC nichtmal über Threadgrenzen hinweg mehr brauchbare Ergebnisse(zumindest nicht ganz unproblematische).
Wie du schon geschrieben hast wäre da eher Enum(Child)Windows der Weg um an ein Handle zu kommen.
Wenn der Fragesteller aber doch Zugriff auf den Source vom "fremden" Programm hat zieht er,meiner Meinung nach, das ganze ohnehin falsch auf.
Ich würde das Programm,das ferngesteuert werden soll,einfach auf nen Event warten lassen und es dann selbst geeignet reagieren lassen.

MfG Spacelord
--
.....Ich mach jetzt nämlich mein Jodeldiplom.Dann hab ich endlich was Eigenes.
 
Profil || Private Message || Suche Download || Zitatantwort || Editieren || Löschen || IP
Seiten: [ 1 ] > 2 <     [ VC++ / MFC ]  


ThWBoard 2.73 FloSoft-Edition
© by Paul Baecher & Felix Gonschorek (www.thwboard.de)

Anpassungen des Forums
© by Flo-Soft (www.flo-soft.de)

Sie sind Besucher: