Zum Inhalt springen

Empfohlene Beiträge

Geschrieben

Hallo,

ich habe ein verdammt schwieriges Problemm zu lösen.

Problembeschreibung:

In einer Fremdanwendung gibt es eine Listbox mit x-tausend Einträgen.

Wenn man einen Button drückt und in dem dann erscheindnen Dialog zwei Knöpfe sind, dann soll der Eintrag gelöscht werden. Wenn dort drei Knöpfe sind, dann soll nicht passieren.

Wie kann ich dies automatisieren?

Ich habe gehört. dass man mit C (WinAPI) mit den Fensterhandels der Anwendung arbeiten kann.

Und auf diese Weise Nachrichten absetzten, die z.B. einen Button drücken.

Weiß hier irgendwer, wie genau ich das realisieren kann?

Mir geht es häuptsächlich darum, wie ich Nachrichten an Fenster von Fremdenprogrammen versenden kann und sie auf diese Weise fernsteuern kann.

Geschrieben

OK, ich bins noch mal.

Ich bin selbst etwas weitergekommen.

Ich werde es häupsächlich mit SendMessage(), FindWindow(), GetWindow() und sofort.

Aber ein neues Problem habe ich:

Wie bekomme ich heraus, von welcher Art ein Control ist.

Das müßte gehen, wenn ich die Fensterklasse herausfinde, aber wie zum Geier geht das.

Ich finde einfach nicht die richige Funktion dafür.

Kann mir da jemand helfen....

Geschrieben

Ist aber ohne Gewähr!

Die Art des Fenster-Objekts findet sich im ersten long normalerweise wieder. Bei einer abgeleiteten Klasse wird dieser Typ durch eine neue eindeutige Zahl ersetzt.

Man kann durch Dummy-Objekte herausfinden ob der Klassentyp gleich ist:


	CWnd w1;

	CWnd w12;

	CButton w2;

	CListBox w3;

	CFrameWnd w4;

	CButton w22;

	if(*(long*)(void*)&w12==*(long*)(void*)&w1) TRACE("CWnd");

	if(*(long*)(void*)&w2==*(long*)(void*)&w1) TRACE("CWnd");

	if(*(long*)(void*)&w22==*(long*)(void*)&w2) TRACE("CButton");

	if(*(long*)(void*)&w3==*(long*)(void*)&w2) TRACE("CButton");

Ist aber ohne Gewähr! Jedenfalls habe ich das mal so gemacht und es hat geklappt.

Ich habe leider selber keine eindeutige Funktion dafür ausfindig machen können. Lediglich mit RTTI könnte man noch relativ umständlich über CRuntimeClass-Objekte, bzw. die TypeID das gleiche erreichen. Aber das bremst ja das Laufzeitverhalten unnötig aus.

Geschrieben

@Crush:

Ich denke, es ging eher um Windows-Fensterklassen (die mit RegisterClassEx usw.) als um die Steuerelementklassen der MFC.

@themaster:

int GetClassName( HWND hWnd, LPTSTR lpClassName, int nMaxCount );

Geschrieben

Ups! Den Satz mit dem Gewähr hab ich ja doppelt gemoppelt...

Achja: Wegen "SendMessage(), FindWindow(), GetWindow(), usw." - Ich würde das auch nicht anders machen.

Geschrieben

@Klotzkopp

Deine Methode ist natürlich die Einzige wenn ich versuche übers Fenster-Handle zu gehen - habe ich eine Referenz auf das entsprechende Objekt ist meine Methode dran (natürlich nur MFC). Bei einer reinen Struct wäre das sicherlich auch so möglich - man müßte nur wissen an welchem Offset sich die entscheidene Information versteckt.

Geschrieben

Wie ich an die Information komme, von welcher Art ein Fenster ist, ist mir eigentlich egal.

Aber ich kann nicht garantieren, dass die Zielanwendung MFC benutzt.

Deshalb werde ich wohl mit Klotzkopps Methode arbeiten.

Danke für die Hilfe und die Bestätigung, dass ich wenigstens auf dem richtigen Weg bin.

Dein Kommentar

Du kannst jetzt schreiben und Dich später registrieren. Wenn Du ein Konto hast, melde Dich jetzt an, um unter Deinem Benutzernamen zu schreiben.

Gast
Auf dieses Thema antworten...

×   Du hast formatierten Text eingefügt.   Formatierung wiederherstellen

  Nur 75 Emojis sind erlaubt.

×   Dein Link wurde automatisch eingebettet.   Einbetten rückgängig machen und als Link darstellen

×   Dein vorheriger Inhalt wurde wiederhergestellt.   Editor leeren

×   Du kannst Bilder nicht direkt einfügen. Lade Bilder hoch oder lade sie von einer URL.

Fachinformatiker.de, 2024 by SE Internet Services

fidelogo_small.png

Schicke uns eine Nachricht!

Fachinformatiker.de ist die größte IT-Community
rund um Ausbildung, Job, Weiterbildung für IT-Fachkräfte.

Fachinformatiker.de App

Download on the App Store
Get it on Google Play

Kontakt

Hier werben?
Oder sende eine E-Mail an

Social media u. feeds

Jobboard für Fachinformatiker und IT-Fachkräfte

×
×
  • Neu erstellen...