Win Api zugriff! (Fenster in B3D)

Übersicht BlitzBasic DLLs und Userlibs

Neue Antwort erstellen

Xenon

Betreff: Win Api zugriff! (Fenster in B3D)

BeitragSo, Jun 27, 2004 21:28
Antworten mit Zitat
Benutzer-Profile anzeigen
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

BeitragMo, Jun 28, 2004 14:43
Antworten mit Zitat
Benutzer-Profile anzeigen
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

BeitragDi, Jun 29, 2004 16:27
Antworten mit Zitat
Benutzer-Profile anzeigen
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

BeitragDi, Jun 29, 2004 17:57
Antworten mit Zitat
Benutzer-Profile anzeigen
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

BeitragMi, Jun 30, 2004 17:08
Antworten mit Zitat
Benutzer-Profile anzeigen
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

BeitragMi, Jun 30, 2004 18:29
Antworten mit Zitat
Benutzer-Profile anzeigen
Wenn du das schaffen würdest, dann wär das genial Very Happy Ich könnte das auch sehr gut gebrauchen Smile

Xenon

BeitragDo, Aug 26, 2004 11:56
Antworten mit Zitat
Benutzer-Profile anzeigen
Hmm ich hab jetzt mal die WindowProc von der aktuellen B3D Version gedisassembliert. Ist aber leider nix besonderes Sad lediglich eine Weiterleitung zu einer anderen Funktion...

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

BeitragSo, März 11, 2007 13:19
Antworten mit Zitat
Benutzer-Profile anzeigen
hallo...
Ich wollt mir mal die userlib runterladen... doch dann hab ich gemerkt, das der link tot is Confused
Wäre nett wenn ihr das hinbekommen könntet Smile
MFG
Klin

Neue Antwort erstellen


Übersicht BlitzBasic DLLs und Userlibs

Gehe zu:

Powered by phpBB © 2001 - 2006, phpBB Group