Win Api zugriff! (Fenster in B3D)
Übersicht

![]() |
XenonBetreff: Win Api zugriff! (Fenster in B3D) |
![]() Antworten mit Zitat ![]() |
---|---|---|
Hi,
ich habe ne kleine DLL geschrieben die die windowmessages an BB schickt, man kann rest genauso wie mit der normalen WinApi in C++ nutzen. Allerdings gibts ein paar Probs. welche sich bei mir in Absturtz des Programmes nach dem beenden und manchmal funktioniert bei den Editfeldern die Eingabe nicht ?_? Zur funktionsweise: Die Windowmessages werden in eine LinkedList gespeichert, welche man dann mit BBRecvMsg abrufen kann (siehe Beispiel). Die WindowMessages werden bis auf WM_CLOSE an DefWindowProc weitergeleitet. In der Datei sind: Example, die DLL, die Userilbs, meine sämtlichen Userlibs die ich bis jetzt zu den windows DLLs(kernel32, user32, ...) gesammelt habe und die von mir umgewandelte winuser.h nach winuser.bb mit allen wichtigen konstanten (+ die funktionen HIWORD und LOWORD + ein paar konstanten die ich fürs example brauchte) Downloaden Mfg Xenon |
||
![]() |
Vertex |
![]() Antworten mit Zitat ![]() |
---|---|---|
Hey Schnuckel, super gemacht!
Aber mal eien WinAPI Frage dazu: Heißt das, ich könnte auch ohne Deine DLL die Messages von einem neu erstellten Fenster(über CreateWindowEx, RegisterClass etc.) die Messages abfangen, oder brauche ich unbedingt einen Funktionspointer zu einer BBFunktion(was ja nicht möglich ist)? mfg olli |
||
![]() |
Xenon |
![]() Antworten mit Zitat ![]() |
---|---|---|
Tjo so in etwa.
Wenn du die Nachrichten selbst verarbeitet willst, brauchst du wohl oder übel nen Funktionspointer. Ich dachte schon an ne ASM Funkion, die dir die Rücksprungoffsets aus dem Stack rausliest und dann dort nach dem code vom CALL sucht und damit den Funktionspointer findet aber das wäre sehr schwer, zumal du nicht weisst wo im stack die Rücksprungadresse steht, da die lokalen Variablen der Funktion ja auch auf den Stack gespeichert werden und man keine Ahnung hat, wie viele die Funktion verwendet... Andernfalls gäbe es noch die Möglichkeit zu DefWindowProc weiterleiten, allerdings muss man dann die Nachrichten abfangen (kA ob das geht) und WM_CLOSE zB würde das Fenster gleich schließen ohne das der BB-Progger das verhindern kann. Ausserdem muss der Benutzer die Nachrichtenliste verarbeiten (While GetEvent(........).....) und müsste einen 2. Thread laufen haben 0_o da wären dann wieder Funktionspointer Klasse, da man die um einen 2. Thread zu starten ja braucht -_-. Also ein Wort gegen Pointer und HS (HEEAAAAADSHOOOOOT!!!!) =) Mfg Xenon/Skate |
||
![]() |
Vertex |
![]() Antworten mit Zitat ![]() |
---|---|---|
Hi!
Mark lädt am Anfang ziemlich viel auf den Stack: Code: [AUSKLAPPEN] ; Hier ist Adresse 10223014
push dword ptr [edx+edi] ; [edx+edi] auf den Stack xor dword ptr [esp], ebx ; esp xor ebx pop dword ptr [edx+edi] ; Stackentry in [edx+edi] laden nop ; No Operation - Platzhalter/Zeitschinden ?! sub edi, 00000004 ; von edi 4 abziehen nop ; No Operation nop ; No Operation jne 10223014 ; Zurückspringen(in abhängigikeit von ZF) Und ich denke mal, das dies die Funktionen sein müssen. mfg olli |
||
![]() |
Xenon |
![]() Antworten mit Zitat ![]() |
---|---|---|
W00t hack0r =) vorrausgesetzt du kannst jetzt daraus die funktionsadresse ermitteln und BB übergibt die parameter wie windoofs das bei den Windowprocs das macht dann wär das unglaublich! =)
Also sieh zu das du das schaffst, ich hab leider andere Sorgen im Moment. Mfg Xenon |
||
Edlothiol |
![]() Antworten mit Zitat ![]() |
|
---|---|---|
Wenn du das schaffen würdest, dann wär das genial ![]() ![]() |
||
![]() |
Xenon |
![]() Antworten mit Zitat ![]() |
---|---|---|
Hmm ich hab jetzt mal die WindowProc von der aktuellen B3D Version gedisassembliert. Ist aber leider nix besonderes ![]() Code: [AUSKLAPPEN] test ecx,ecx
mov eax,[esp+0x10] push eax jz 0x21a mov edx,[esp+0x10] mov eax,[esp+0xc] push edx mov edx,[esp+0xc] push eax push edx call 0xfffffa44 |
||
![]() |
klin |
![]() Antworten mit Zitat ![]() |
---|---|---|
hallo...
Ich wollt mir mal die userlib runterladen... doch dann hab ich gemerkt, das der link tot is ![]() Wäre nett wenn ihr das hinbekommen könntet ![]() MFG Klin |
||
Übersicht


Powered by phpBB © 2001 - 2006, phpBB Group