AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren
Zurück Delphi-PRAXiS Projekte WhatsApp Enchant (Kleine Erweiterung für WA-Desktop-Client)

WhatsApp Enchant (Kleine Erweiterung für WA-Desktop-Client)

Ein Thema von wicht · begonnen am 13. Jul 2018
Antwort Antwort
Benutzerbild von wicht
wicht
Registriert seit: 15. Jan 2006
WhatsApp Enchant

Erweitert den WhatsApp-Desktop Client um ein paar Funktionen:
  • Symbol im Benachrichtigungsbereich
    Das Symbol blinkt bei neuen ungelesenen Nachrichten und hört auf zu blinken, wenn das WA-Fenster per Klick aufs Symbol geöffnet wird oder die Nachricht am Handy gelesen wurde.
    Beim Öffnen über das Symbol wird ausserdem direkt zum obersten Chat gesprungen (der Chat, der die ungelesene Nachricht beinhaltet).
    Beim Kick aufs "X" (Fenster schließen) wird das Fenster in den Benachrichtigungsbereich minimiert.
  • Fenster ist immer im Vordergrund
  • Patcher für die Resourcen-Datei, um die Farben des Fensters zu modifizieren
    Die Farben für die Titelleiste und die Farben für den Hover-Effekt auf Minimieren/Maximieren-Knöpfen sind konfigurierbar, ausserdem kann der Maximieren-Knopf ausgeblendet werden.

Wie funktioniert das?

Man muss einfach die WA-Enchant-Exe starten, diese prüft dann regelmäßig, ob es ein Fenster gibt, was zu WhatsApp gehört. Ist das Fenster gefunden wird mit SetWindowsHookEx() die DLL in den Prozess geladen, die die Änderungen dann durchführt.
Neben dem Umbiegen der WndProc wird ein Hook für WriteFile() installiert. Dadurch kann erkannt werden, ob eine neue Nachricht eingetroffen ist (oder eine Nachricht am Handy gelesen wurde), indem beobachtet wird, was für Daten WhatsApp in die LevelDB-Datei schreibt.

Was ist nicht so schön?
  • Ich habe nur Delphi XE - das Teil hier ist also nur für 32-Bit WhatsApp getestet. Würde mich freuen wenn jemand Lust hat, eine 64-Bit Version zu kompilieren.
    Das Teil mit Lazarus zu bauen wäre natürlich auch toll. Ich weiß nicht, ob ich mir das irgendwann vornehme.
  • Das Patchen der Resourcen-Datei dauert. In der großen ASAR-Resourcen-Datei wird (ineffizient) nach bestimmten Mustern gesucht, um dann Modifikationen vorzunehmen.
    Das ASAR-Format ist allerdings gut dokumentiert, man sollte die Resourcen eher entpacken, modifizieren, und die ASAR-Datei dann neu aufbauen.
    Damit könnte man dann auch noch weiter gehen und z.B. das JavaScript modifizieren, um noch weitere Änderungen am Client vornehmen zu können.
  • Das Patchen der Resourcen-Datei könnte man vielleicht auch ganz auslassen, wenn man sich früh genug in den Prozess einklinkt (Hook auf ReadFile()).
    Ich habe aber keine Idee, wie das ohne Treiber/globalen CreateProcess()-Hook gehen könnte und das wäre irgendwie zu viel des Guten.

Kompilieren

Sollte mit Delphi XE direkt funktionieren, mit neueren Delphis muss man bestimmt etwas an den "uses" ändern.
Vor dem Kompilieren muss in das "lib"-Verzeichnis dieses Repo hier ausgecheckt werden: https://github.com/MahdiSafsafi/delphi-detours-library


Falls jemand Verwendung hierfür hat und es testet würde ich mich über eine kurze Rückmeldung freuen .
Miniaturansicht angehängter Grafiken
resourcepatch.png  
Angehängte Grafiken
 
Angehängte Dateien
Dateityp: zip waenchant.zip (685,7 KB, 17x aufgerufen)
http://streamwriter.org

"I make hits. Not the public. I tell the DJ’s what to play. Understand?"

Geändert von wicht (13. Jul 2018 um 16:55 Uhr)
 
Themen-Optionen Thema durchsuchen
Thema durchsuchen:

Erweiterte Suche
Ansicht

Forumregeln

Es ist dir nicht erlaubt, neue Themen zu verfassen.
Es ist dir nicht erlaubt, auf Beiträge zu antworten.
Es ist dir nicht erlaubt, Anhänge hochzuladen.
Es ist dir nicht erlaubt, deine Beiträge zu bearbeiten.

BB-Code ist an.
Smileys sind an.
[IMG] Code ist an.
HTML-Code ist aus.
Trackbacks are an
Pingbacks are an
Refbacks are aus

Gehe zu:

Impressum · AGB · Datenschutz · Nach oben
Alle Zeitangaben in WEZ +1. Es ist jetzt 05:32 Uhr.
Powered by vBulletin® Copyright ©2000 - 2018, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2018 by Daniel R. Wolf