Win Api zugriff! (Fenster in B3D)
Übersicht BlitzBasic DLLs und Userlibs
XenonBetreff: Win Api zugriff! (Fenster in B3D) |
So, Jun 27, 2004 21:28 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 |
Mo, Jun 28, 2004 14:43 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 |
Di, Jun 29, 2004 16:27 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 |
Di, Jun 29, 2004 17:57 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 |
Mi, Jun 30, 2004 17:08 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 |
Mi, Jun 30, 2004 18:29 Antworten mit Zitat |
|
---|---|---|
Wenn du das schaffen würdest, dann wär das genial Ich könnte das auch sehr gut gebrauchen | ||
Xenon |
Do, Aug 26, 2004 11:56 Antworten mit Zitat |
|
---|---|---|
Hmm ich hab jetzt mal die WindowProc von der aktuellen B3D Version gedisassembliert. Ist aber leider nix besonderes 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 |
So, März 11, 2007 13:19 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 BlitzBasic DLLs und Userlibs
Powered by phpBB © 2001 - 2006, phpBB Group