Zum Inhalt springen
View in the app

A better way to browse. Learn more.

Fachinformatiker.de

A full-screen app on your home screen with push notifications, badges and more.

To install this app on iOS and iPadOS
  1. Tap the Share icon in Safari
  2. Scroll the menu and tap Add to Home Screen.
  3. Tap Add in the top-right corner.
To install this app on Android
  1. Tap the 3-dot menu (⋮) in the top-right corner of the browser.
  2. Tap Add to Home screen or Install app.
  3. Confirm by tapping Install.

Empfohlene Antworten

Veröffentlicht

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.

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....

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.

@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.

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.

Erstelle ein Konto oder melde dich an, um einen Kommentar zu schreiben.

Configure browser push notifications

Chrome (Android)
  1. Tap the lock icon next to the address bar.
  2. Tap Permissions → Notifications.
  3. Adjust your preference.
Chrome (Desktop)
  1. Click the padlock icon in the address bar.
  2. Select Site settings.
  3. Find Notifications and adjust your preference.