Solved

Calling a VB active dll from Java

Posted on 2003-11-25
12
1,051 Views
Last Modified: 2012-08-13
I am in a very unusal situation.

I have a java application that I use JACOB to call an activex program. That's all good but the activex quit function only hides the program and leaves it running in the backgound in task manager (we are using an NT environment). I need to kill the darn thing, and before anyone asks, there are no other quit or kill functions in the activex object.

So far, I have created vb code that calls kernel32.dll for killing and turned it into an activex dll. I tried using JACOB and have not succeeded. Maybe I  have to register the dll somehow? Forgive me, vb and dlls are not my strong point.

Here is an example of what happens

      Variant[] vari = {};
      Variant vari2 = new Variant();
      comp = new ActiveXComponent(ID);
      vari2 = comp.invoke("theMethod",vari);

And i get this exception message
            Invoke of: theMethod
            Source: Project1
            Description: Object required

Gonna look into JNI... but is that only c++????

I may be going down the completely wrong path. Alternatives are welcome! And if you know a way to talk to the kernel32.dll. Any links to any code, sites, anything would help. Cannot seem to find what I am looking for anywhere.
I have the VB code to call the kernel32.dll. Got it from the microsoft website. I can send it if needed. I have tested the code and it works fine.
Help!
boog
0
Comment
Question by:imnotahomey
  • 4
  • 4
  • 3
12 Comments
 
LVL 14

Expert Comment

by:sudhakar_koundinya
ID: 9822913
There is a commercial product called jintegra (http://www.linar.com) that
makes what you want to do really easy.

There are some royalties associated with the product, but they are not as
bad as they might have been. It is comprised of a library that forms a
bridge from Java to COM/ActiveX, and the library is 100% pure java. Their
web site has a downloadable fuly functioning trial version, and they have
lots of really good tutorial material.
0
 
LVL 14

Expert Comment

by:sudhakar_koundinya
ID: 9822928
EZ JCom lets you call COM objects from Java.

Using EZ JCom is very straightforward. You give it a COM object, and it will generate a set of Java source files, plus a command file for compiling these Java source files. Your Java program can then use these to instantiate COM objects, to get their interfaces, to call methods provided by the COM objects, and to register event listeners for any events the COM objects might generate. EZ-JCom also extracts the COM documentation and places it in a Javadoc format, to help you understand how your COM object works and how to use it.

If your COM object is an ActiveX control that needs to have a visual display, EZ JCom will let you embed it in a Swing or AWT program.

Their site:

http://www.ezjcom.com/google.html
0
 
LVL 14

Expert Comment

by:sudhakar_koundinya
ID: 9822945
if you think there is a problem with registering the activex dlls the do like this

Runtime.exec("regsvr32     yourdll.ocx");
0
 
LVL 15

Accepted Solution

by:
dualsoul earned 500 total points
ID: 9822972
> Gonna look into JNI... but is that only c++???
hm...i'm not really understand your problem, but when i was need to call some activex from java, i was writing JNI method in C++, which calls ActiveX, and then use this method from java. All works fine.
     
0
 

Author Comment

by:imnotahomey
ID: 9822988
Looks like EZ JCom lets me do exactly what I want... except I will have to ask the client to pay.
The client is not going to want to spend the money when they can click Ctrl-Alt-Delete to quit the program.
Might have to look at talking directly to kernel32.dll
any suggestions?
0
Is Your Active Directory as Secure as You Think?

More than 75% of all records are compromised because of the loss or theft of a privileged credential. Experts have been exploring Active Directory infrastructure to identify key threats and establish best practices for keeping data safe. Attend this month’s webinar to learn more.

 
LVL 15

Expert Comment

by:dualsoul
ID: 9822998
i think, if you need only call once your AciveX, there are no sence in frameworks, just implement it in JNI by hand, it's very easy.
  But if you need to use COM classes, as Java Classes and vice versa, thah - yes, you some framework, which allow you transparently call COM.
0
 
LVL 15

Expert Comment

by:dualsoul
ID: 9823014
look, please expalin one more what's problem?
you call ActiveX from Java, and when it's finished, it's hide your Java program?
0
 

Author Comment

by:imnotahomey
ID: 9823078
There is another program (not a java program) i call from java. When I quit the program, it disappears, but still shows in the task manager. I need to kill it in task manager.
0
 

Author Comment

by:imnotahomey
ID: 9823097
I think I will try and call the dll from some c code and use jni.
I have only created one method in the dll that I need to call.
Know of any examples of calling a dll in c or c++?
0
 

Author Comment

by:imnotahomey
ID: 9823771
Thank you all for your help.
It has been most useful.
Too bad I couldn't accept more than one comment.
0
 
LVL 14

Expert Comment

by:sudhakar_koundinya
ID: 9823778
i think only  EZ JCom helps your problem
0

Featured Post

Is Your Active Directory as Secure as You Think?

More than 75% of all records are compromised because of the loss or theft of a privileged credential. Experts have been exploring Active Directory infrastructure to identify key threats and establish best practices for keeping data safe. Attend this month’s webinar to learn more.

Question has a verified solution.

If you are experiencing a similar issue, please ask a related question

Suggested Solutions

Title # Comments Views Activity
splitOdd10 challenge 5 80
What is the latest versions eclipse neon 2 140
Eclipse IDE - Cannot copy/paste from console output 8 127
stackato and cloud 4 72
Java had always been an easily readable and understandable language.  Some relatively recent changes in the language seem to be changing this pretty fast, and anyone that had not seen any Java code for the last 5 years will possibly have issues unde…
Go is an acronym of golang, is a programming language developed Google in 2007. Go is a new language that is mostly in the C family, with significant input from Pascal/Modula/Oberon family. Hence Go arisen as low-level language with fast compilation…
Viewers will learn about the different types of variables in Java and how to declare them. Decide the type of variable desired: Put the keyword corresponding to the type of variable in front of the variable name: Use the equal sign to assign a v…
Viewers will learn about basic arrays, how to declare them, and how to use them. Introduction and definition: Declare an array and cover the syntax of declaring them: Initialize every index in the created array: Example/Features of a basic arr…

920 members asked questions and received personalized solutions in the past 7 days.

Join the community of 500,000 technology professionals and ask your questions.

Join & Ask a Question

Need Help in Real-Time?

Connect with top rated Experts

15 Experts available now in Live!

Get 1:1 Help Now