- and dlls

From: Hof, Philipp <"Hof,>
Date: Mon, 01 Aug 2005 11:03:29 +1200

----boundary-LibPST-iamunique-1009134479_-_-
Content-type: text/plain

Have a look to Dev/Docu/ComInterfaceGen.odc to automatically generate an
interface for a .dll from a type library. Type libraries are either linked
into the .dll or distributed as a separate file. Some .dlls have no type
libraries; hence there it won't work.

.sym files can not be edited. You will need to create an .odc file.
e.g.:

********************************

MODULE ExWinApi ["KERNEL32"];

IMPORT W := WinApi;

PROCEDURE RtlZeroMemory* (Destination: W.PtrVoid; Length: INTEGER);

END ExWinApi.

********************************

There are 2 ways to load a library, one as described in the Blackbox
documentation (above) and the other under program control using the Windows
API. The later may appear more complicate, but allows checking for errors
while loading dlls. (No .sym files required for number 2. All function need
to be declared as procedure variables.)

********************************

MODULE ExUser32;
                
IMPORT SYSTEM, WinApi;

CONST
        MBOk* = {};
        MBIconExclamation* = {4, 5};

VAR
        (* read-only export procedure variable*)
        MessageBox-: PROCEDURE (hWnd: WinApi.HWND; lpText, lpCaption:
WinApi.PtrSTR; uType: SET): INTEGER;
 
PROCEDURE Test*;
VAR
        dummy: INTEGER;
BEGIN
        dummy := MessageBox(0, "Hello World", "Hello World Caption", MBOk +
MBIconExclamation)
END Test;

(* Wrapper for getProcAddress. *)
PROCEDURE GetProcAddress*(hModule: WinApi.HMODULE; lpProcName:
WinApi.PtrSTR; VAR adr: WinApi.FARPROC);
BEGIN
        adr := WinApi.GetProcAddress(hModule, lpProcName)
END GetProcAddress;

PROCEDURE InitAPI();
        VAR mod: WinApi.HMODULE;
BEGIN
        mod := WinApi.LoadLibrary("User32.DLL");
        GetProcAddress(mod, "MessageBoxA", SYSTEM.VAL(WinApi.FARPROC,
MessageBox));
END InitAPI;

BEGIN
        InitAPI()
END ExUser32.

ExUser32.Test

********************************

The above example was ported from Oberon System 3.

Cheers, Philipp
http://www.elec.canterbury.ac.nz/PublicArea/Staff/hof/p50-win/



-----Original Message-----
From: A Thomas [mailto:ant{([at]})nowhere.xy
Sent: Saturday, 30 July 2005 1:44 a.m.
To: blackbox{([at]})nowhere.xy
Subject: [BlackBox] - [BlackBox] and dlls

Hei BlackBox world,

        When you want to use a dll in a BlackBox application an interface
module for the dll must be write. In the BB documentation it says the name
of the dll without any path and without the .dll extension must be placed
inside square brackets after the name of the module.

Looking at the BlackBox source code some of the interface modules have a
.dll after the name of the dll. Why is this and does it matter?

Also there are sym files for some dll that are in the windows/system32
directory but no interface modules for these dll. Can I make the missing
interface modules by editing the corresponding sym file and compiling?

Has anyone experience of running BlackBox with Wine? There seem to be linux
so equivalents of the Windows dll available. Maybe BlackBox would work with
these on linux.

Regards

        Andrew

--- BlackBox
--- send subject HELP or UNSUBSCRIBE to blackbox{([at]})nowhere.xy

--- BlackBox
--- send subject HELP or UNSUBSCRIBE to blackbox{([at]})nowhere.xy



----boundary-LibPST-iamunique-1009134479_-_-
Content-type: application/rtf
Content-transfer-encoding: base64
Content-Disposition: attachment; filename="rtf-body.rtf"

e1xydGYxXGFuc2lcYW5zaWNwZzEyNTJcZnJvbXRleHQgXGRlZmYwe1xmb250dGJsDQp7XGYwXGZz
d2lzcyBBcmlhbDt9DQp7XGYxXGZtb2Rlcm4gQ291cmllciBOZXc7fQ0Ke1xmMlxmbmlsXGZjaGFy
c2V0MiBTeW1ib2w7fQ0Ke1xmM1xmbW9kZXJuXGZjaGFyc2V0MCBDb3VyaWVyIE5ldzt9fQ0Ke1xj
b2xvcnRibFxyZWQwXGdyZWVuMFxibHVlMDtccmVkMFxncmVlbjBcYmx1ZTI1NTt9DQpcdWMxXHBh
cmRccGxhaW5cZGVmdGFiMzYwIFxmMFxmczIwIEhhdmUgYSBsb29rIHRvIERldi9Eb2N1L0NvbUlu
dGVyZmFjZUdlbi5vZGMgdG8gYXV0b21hdGljYWxseSBnZW5lcmF0ZSBhblxwYXINCmludGVyZmFj
ZSBmb3IgYSAuZGxsIGZyb20gYSB0eXBlIGxpYnJhcnkuIFR5cGUgbGlicmFyaWVzIGFyZSBlaXRo
ZXIgbGlua2VkXHBhcg0KaW50byB0aGUgLmRsbCBvciBkaXN0cmlidXRlZCBhcyBhIHNlcGFyYXRl
IGZpbGUuIFNvbWUgLmRsbHMgaGF2ZSBubyB0eXBlXHBhcg0KbGlicmFyaWVzOyBoZW5jZSB0aGVy
ZSBpdCB3b24ndCB3b3JrLlxwYXINClxwYXINCi5zeW0gZmlsZXMgY2FuIG5vdCBiZSBlZGl0ZWQu
IFlvdSB3aWxsIG5lZWQgdG8gY3JlYXRlIGFuIC5vZGMgZmlsZS5ccGFyDQplLmcuOlxwYXINClxw
YXINCioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqXHBhcg0KXHBhcg0KTU9EVUxFIEV4
V2luQXBpIFsiS0VSTkVMMzIiXTtccGFyDQpccGFyDQpJTVBPUlQgVyA6PSBXaW5BcGk7XHBhcg0K
XHBhcg0KUFJPQ0VEVVJFIFJ0bFplcm9NZW1vcnkqIChEZXN0aW5hdGlvbjogVy5QdHJWb2lkOyBM
ZW5ndGg6IElOVEVHRVIpO1xwYXINClxwYXINCkVORCBFeFdpbkFwaS5ccGFyDQpccGFyDQoqKioq
KioqKioqKioqKioqKioqKioqKioqKioqKioqKlxwYXINClxwYXINClRoZXJlIGFyZSAyIHdheXMg
dG8gbG9hZCBhIGxpYnJhcnksIG9uZSBhcyBkZXNjcmliZWQgaW4gdGhlIEJsYWNrYm94XHBhcg0K
ZG9jdW1lbnRhdGlvbiAoYWJvdmUpIGFuZCB0aGUgb3RoZXIgdW5kZXIgcHJvZ3JhbSBjb250cm9s
IHVzaW5nIHRoZSBXaW5kb3dzXHBhcg0KQVBJLiBUaGUgbGF0ZXIgbWF5IGFwcGVhciBtb3JlIGNv
bXBsaWNhdGUsIGJ1dCBhbGxvd3MgY2hlY2tpbmcgZm9yIGVycm9yc1xwYXINCndoaWxlIGxvYWRp
bmcgZGxscy4gKE5vIC5zeW0gZmlsZXMgcmVxdWlyZWQgZm9yIG51bWJlciAyLiBBbGwgZnVuY3Rp
b24gbmVlZFxwYXINCnRvIGJlIGRlY2xhcmVkIGFzIHByb2NlZHVyZSB2YXJpYWJsZXMuKVxwYXIN
ClxwYXINCioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqXHBhcg0KXHBhcg0KTU9EVUxF
IEV4VXNlcjMyO1xwYXINClx0YWIgXHRhYiBccGFyDQpJTVBPUlQgU1lTVEVNLCBXaW5BcGk7XHBh
cg0KXHBhcg0KQ09OU1RccGFyDQpcdGFiIE1CT2sqID0gXHtcfTsgXHBhcg0KXHRhYiBNQkljb25F
eGNsYW1hdGlvbiogPSBcezQsIDVcfTtccGFyDQpccGFyDQpWQVJccGFyDQpcdGFiICgqIHJlYWQt
b25seSBleHBvcnQgcHJvY2VkdXJlIHZhcmlhYmxlKilccGFyDQpcdGFiIE1lc3NhZ2VCb3gtOiBQ
Uk9DRURVUkUgKGhXbmQ6IFdpbkFwaS5IV05EOyBscFRleHQsIGxwQ2FwdGlvbjpccGFyDQpXaW5B
cGkuUHRyU1RSOyB1VHlwZTogU0VUKTogSU5URUdFUjtccGFyDQogXHBhcg0KUFJPQ0VEVVJFIFRl
c3QqO1xwYXINClZBUlxwYXINClx0YWIgZHVtbXk6IElOVEVHRVI7XHBhcg0KQkVHSU5ccGFyDQpc
dGFiIGR1bW15IDo9IE1lc3NhZ2VCb3goMCwgIkhlbGxvIFdvcmxkIiwgIkhlbGxvIFdvcmxkIENh
cHRpb24iLCBNQk9rICtccGFyDQpNQkljb25FeGNsYW1hdGlvbilccGFyDQpFTkQgVGVzdDtccGFy
DQpccGFyDQooKiBXcmFwcGVyIGZvciBnZXRQcm9jQWRkcmVzcy4gKilccGFyDQpQUk9DRURVUkUg
R2V0UHJvY0FkZHJlc3MqKGhNb2R1bGU6IFdpbkFwaS5ITU9EVUxFOyAgbHBQcm9jTmFtZTpccGFy
DQpXaW5BcGkuUHRyU1RSOyBWQVIgYWRyOiBXaW5BcGkuRkFSUFJPQyk7XHBhcg0KQkVHSU5ccGFy
DQpcdGFiIGFkciA6PSBXaW5BcGkuR2V0UHJvY0FkZHJlc3MoaE1vZHVsZSwgbHBQcm9jTmFtZSlc
cGFyDQpFTkQgR2V0UHJvY0FkZHJlc3M7XHBhcg0KXHBhcg0KUFJPQ0VEVVJFIEluaXRBUEkoKTtc
cGFyDQpcdGFiIFZBUiBtb2Q6IFdpbkFwaS5ITU9EVUxFO1xwYXINCkJFR0lOXHBhcg0KXHRhYiBt
b2QgOj0gV2luQXBpLkxvYWRMaWJyYXJ5KCJVc2VyMzIuRExMIik7XHBhcg0KXHRhYiBHZXRQcm9j
QWRkcmVzcyhtb2QsICJNZXNzYWdlQm94QSIsIFNZU1RFTS5WQUwoV2luQXBpLkZBUlBST0MsXHBh
cg0KTWVzc2FnZUJveCkpO1xwYXINCkVORCBJbml0QVBJO1xwYXINClxwYXINCkJFR0lOXHBhcg0K
XHRhYiBJbml0QVBJKClccGFyDQpFTkQgRXhVc2VyMzIuXHBhcg0KXHBhcg0KRXhVc2VyMzIuVGVz
dFxwYXINClxwYXINCioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqXHBhcg0KXHBhcg0K
VGhlIGFib3ZlIGV4YW1wbGUgd2FzIHBvcnRlZCBmcm9tIE9iZXJvbiBTeXN0ZW0gMy5ccGFyDQpc
cGFyDQpDaGVlcnMsIFBoaWxpcHBccGFyDQpodHRwOi8vd3d3LmVsZWMuY2FudGVyYnVyeS5hYy5u
ei9QdWJsaWNBcmVhL1N0YWZmL2hvZi9wNTAtd2luL1xwYXINClxwYXINClxwYXINClxwYXINCi0t
LS0tT3JpZ2luYWwgTWVzc2FnZS0tLS0tXHBhcg0KRnJvbTogQSBUaG9tYXMgW21haWx0bzphbnRA
cm5pLmhlbHNpbmtpLmZpXSBccGFyDQpTZW50OiBTYXR1cmRheSwgMzAgSnVseSAyMDA1IDE6NDQg
YS5tLlxwYXINClRvOiBibGFja2JveEBvYmVyb24uY2hccGFyDQpTdWJqZWN0OiBbQmxhY2tCb3hd
IC0gW0JsYWNrQm94XSBhbmQgZGxsc1xwYXINClxwYXINCkhlaSBCbGFja0JveCB3b3JsZCxccGFy
DQpccGFyDQpcdGFiIFdoZW4geW91IHdhbnQgdG8gdXNlIGEgZGxsIGluIGEgQmxhY2tCb3ggYXBw
bGljYXRpb24gYW4gaW50ZXJmYWNlXHBhcg0KbW9kdWxlIGZvciB0aGUgZGxsIG11c3QgYmUgd3Jp
dGUuIEluIHRoZSBCQiBkb2N1bWVudGF0aW9uIGl0IHNheXMgdGhlIG5hbWVccGFyDQpvZiB0aGUg
ZGxsIHdpdGhvdXQgYW55IHBhdGggYW5kIHdpdGhvdXQgdGhlIC5kbGwgZXh0ZW5zaW9uIG11c3Qg
YmUgcGxhY2VkXHBhcg0KaW5zaWRlIHNxdWFyZSBicmFja2V0cyBhZnRlciB0aGUgbmFtZSBvZiB0
aGUgbW9kdWxlLlxwYXINClxwYXINCkxvb2tpbmcgYXQgdGhlIEJsYWNrQm94IHNvdXJjZSBjb2Rl
IHNvbWUgb2YgdGhlIGludGVyZmFjZSBtb2R1bGVzIGhhdmUgYVxwYXINCi5kbGwgYWZ0ZXIgdGhl
IG5hbWUgb2YgdGhlIGRsbC4gV2h5IGlzIHRoaXMgYW5kIGRvZXMgaXQgbWF0dGVyPyBccGFyDQpc
cGFyDQpBbHNvIHRoZXJlIGFyZSBzeW0gZmlsZXMgZm9yIHNvbWUgZGxsIHRoYXQgYXJlIGluIHRo
ZSB3aW5kb3dzL3N5c3RlbTMyXHBhcg0KZGlyZWN0b3J5IGJ1dCBubyBpbnRlcmZhY2UgbW9kdWxl
cyBmb3IgdGhlc2UgZGxsLiBDYW4gSSBtYWtlIHRoZSBtaXNzaW5nXHBhcg0KaW50ZXJmYWNlIG1v
ZHVsZXMgYnkgZWRpdGluZyB0aGUgY29ycmVzcG9uZGluZyBzeW0gZmlsZSBhbmQgY29tcGlsaW5n
P1xwYXINClxwYXINCkhhcyBhbnlvbmUgZXhwZXJpZW5jZSBvZiBydW5uaW5nIEJsYWNrQm94IHdp
dGggV2luZT8gVGhlcmUgc2VlbSB0byBiZSBsaW51eFxwYXINCnNvIGVxdWl2YWxlbnRzIG9mIHRo
ZSBXaW5kb3dzIGRsbCBhdmFpbGFibGUuIE1heWJlIEJsYWNrQm94IHdvdWxkIHdvcmsgd2l0aFxw
YXINCnRoZXNlIG9uIGxpbnV4LlxwYXINClxwYXINClJlZ2FyZHNccGFyDQpccGFyDQpcdGFiIEFu
ZHJld1xwYXINClxwYXINCi0tLSBCbGFja0JveFxwYXINCi0tLSBzZW5kIHN1YmplY3QgSEVMUCBv
ciBVTlNVQlNDUklCRSB0byBibGFja2JveEBvYmVyb24uY2hccGFyDQpccGFyDQotLS0gQmxhY2tC
b3hccGFyDQotLS0gc2VuZCBzdWJqZWN0IEhFTFAgb3IgVU5TVUJTQ1JJQkUgdG8gYmxhY2tib3hA
b2Jlcm9ufX0AP01CInIEkANgFAAhdA==


----boundary-LibPST-iamunique-1009134479_-_---
Received on Mon Aug 01 2005 - 01:03:29 UTC

This archive was generated by hypermail 2.3.0 : Thu Sep 26 2013 - 06:28:11 UTC