Well, I think the program is compiled with Delphi 2010 studio, but the syntax is the same with FreePascal. I don't really understand which language the program uses, maybe Delphi's object is FreePascal or something like that.
I have no control over the program, but I have control of the .dll and its function that the program calls. In my understanding, with SimpleIPC I would be able to communicate with two dlls one in FP and the other in VB. So, when the function is called, instead of showing delphi form from FP dll I will call another function from VB dll to show VB form.
Ideally, I would like to replace FP dll with VB dll and communicate directly, but if that's not possible I will use two dlls. SimpleIPC sounds promising, I will check it out along with COM.
http://wiki.lazarus.freepascal.org/SimpleIPC_Library