Can I Call method on one JVM from another through a dll?

Let me explain.
I have this java jar file that I can only have one instance of running at any given time. I'm using a shared data segment in a dll to store a bool indicating whether the program is already running or not. If it's already running, I have to not run the second instance and give focus to the current running instance.
The jar file calls a native method "canInstantiate()" on a dll to see if there's already an app running. If there isn't, the env and obj are stored in the shared data segment of the dll and we return true. If there is already an instance of the program running, I want canInstantiate call a function on the current instance of the jar (like a callback) to tell it to request focus. It's not working. Can someone tell me if my code is right?
The .h file
#include "stdafx.h"
#include <jni.h>
#include "CardServer.h"
#pragma data_seg("SHARED") // Begin the shared data segment.
static volatile bool instanceExists = false;
static JavaVM *theJavaVM = NULL;
static JNIEnv* theJavaEnv= NULL;
static jobject instanceObject = NULL;
static jmethodID mid = NULL;
static jclass cls = NULL;
#pragma data_seg()
#pragma comment(linker, "/section:SHARED,RWS")
jdouble canInstantiate(JNIEnv *env, jobject obj);
jdouble instantiate(JNIEnv *env, jobject obj);
jdouble uninstantiate(JNIEnv *env, jobject obj);
void grabFocus();
</code>
The .cpp file:
<code>
#include "MyFunctions.h"
#include <string.h>
#include <stdlib.h>
#include "stdafx.h"
#include <iostream.h>
jdouble canInstantiate(JNIEnv *env, jobject obj)
printf("In canInstantiate!!");
if (!instanceExists)
printf("No instance exists!!");
return (jdouble)0.0;
else
printf("An instance already exists!!");
grabFocus();
return (jdouble)1.0;
jdouble instantiate(JNIEnv *env, jobject obj)
printf("**In CPP: Instantiate!!\n");
cout << "At start, env is: " << env << endl;
cout << "At start, obj is: " << obj << endl;
if (instanceExists == false)
instanceExists = true;
theJavaEnv = env;
instanceObject = obj;
theJavaEnv->GetJavaVM(&theJavaVM);
cls = (theJavaEnv)->FindClass("TheMainClassOfTheJar");
if (cls == 0) {
fprintf(stderr, "Can't find Prog class\n");
exit(1);
mid = (theJavaEnv)->GetMethodID(cls, "grabFocusInJava", "(I)I");
if (mid == 0) {
fprintf(stderr, "Can't find grabFocusInJava\n");
exit(1);
printf("About to call grabFocusInJava\n");
grabFocus();
printf("CPP: After the grab focus command in instantiate!!\n");
cout << "At end, env is: " << env << endl;
cout << "At end, obj is: " << obj << endl;
return 0.0;
else
printf("CPP: Finished Instantiate!!\n");
return 1.0;
jdouble uninstantiate(JNIEnv *env, jobject obj)
printf("CPP: In uninstantiate!!\n");
if (instanceExists == true)
instanceExists = false;
theJavaVM = NULL;
instanceObject = NULL;
printf("CPP: Finishing uninstantiate!!\n");
return 0.0;
else
printf("CPP: Finishing uninstantiate!!\n");
return 1.0;
void grabFocus()
printf("In CPP::GrabFocus!!\n");
instanceObject = theJavaEnv->NewGlobalRef(instanceObject);
cls = (theJavaEnv)->FindClass("CardFormatter");
if (cls == 0) {
fprintf(stderr, "Can't find Prog class\n");
exit(1);
printf("Got the cls id again!!\n");
if (cls == 0)
printf("IT'S INVALID!!\n");
mid = (theJavaEnv)->GetMethodID(cls, "grabFocusInJava", "(I)I");
if (mid == 0) {
fprintf(stderr, "Can't find grabFocusInJava\n");
exit(1);
theJavaEnv->CallIntMethod(instanceObject, mid, 2);
printf("Called grabFocusInJava\n");
</code>
thanks in advance

Can I Call method on one JVM from another through a dll
...The rest of your question merely expands on your title.
And the answer to that question is no.
When you call a method you are executing a "thread of execution." A thread of execution exists only in a single process. It can not exist in another process.
If the dll is doing some interesting things then you could call a method that sets a flag. Data can move between instances. But you would then have to have a thread in that different process monitoring that flag. And sharing data in a dll is not a normal process, so it would have to be coded appropriately.
If all you want to do is set the current focus to the existing application, then that can be done with existing windows functionality. You don't need to do anything special in your dll. You can probably search these forums to find the exact code. If not there are countless examples in windows repositories (like MSDN) on how to do that.

Similar Messages

  • Is there any way to call methods of one view from another

    Hi experts,
    I am new to webdynpro.I am having some requirement in which I need to call methods of one view from some other view of same component .So is there any way to do this.

    Dear Pradeep,
    This will solve your problem......( plz 1st read everything ..)
    There are 2 views  :
    i) Mandatory Attributes ' view(V1)
    ii) Button' s  View..(V2)
    1. Create a method in Component Controller.( M1).
    2. Goto V2 . In the Action Handler method of Button , call method  M1 of component controller.
    3. Write your Code in M1 instead of  V2 method.
    4. Create an EVENT ( E1 ) in component controller.
    5. Fire this event  from M1 before executing Action Code.
    6. Now  Add the event handler method of  E1 in  V1 ( i.e. Mandatory attributes view. )   ..........clear????? .. set "METHOD TYPE" = Event Handler. instead of  Method.
    7. In this event handler method in V1 , write the "check_mandatory_attribute_view" method.
    8. use necessary flags..
    Regards ,
    Aditya.

  • Calling a method of one class from another withing the same package

    hi,
    i've some problem in calling a method of one class from another class within the same package.
    for eg. if in Package mypack. i'm having 2 files, f1 and f2. i would like to call a method of f2 from f1(f1 is a servlet) . i donno exactly how to instantiate the object for f2. can anybody please help me in this regard.
    Thank u in advance.
    Regards,
    Fazli

    This is what my exact problem.
    i've created a bean (DataBean) to access the database. i'm having a servlet program (ShopBook). now to check some details over there in the database from the servlet i'm in need to use a method in the DataBean.
    both ShopBook.java and DataBean.java lies in the package shoppack.
    in ShopBook i tried to instantiate the object to DataBean as
    DataBean db = new DataBean();
    it shows the compiler error, unable to resolve symbol DataBean.
    note:
    first i compiled DataBean.java, it got compiled perfectly and the class file resides inside the shoppack.
    when i'm trying to compile the ShopBook its telling this error.
    hope i'm clear in explaining my problem. can u please help me?
    thank u in advance.
    regards,
    Fazli

  • Can we call sceen of one program into another?

    Hi ABAPers,
      I wish to know whether, is it possible to call the screen of one program through another program? I know, calling a subroutine of a program from another is possible but i want to know whether calling screen of one program from another is possible or not?
      Also if its possible then how?
    Regards,
    Sonu.

    Hi,
    We can call the subscreens ...
    CALL SUBSCREEN <area> INCLUDING [<prog>] <dynnr>.
    The screen of a subscreen that you call is placed in the subscreen area <area> on the main screen.
    If you do not specify a program <prog>, the system uses a screen from the current ABAP program. If you do specify a program <prog>, the system uses a screen from the program <prog> for the subscreen. This program is treated in the same way as an external subroutine call. In other words, it is loaded into the program group of the calling program, or, if it is a function group, as its own program group in the same internal session as the calling ABAP program.
    Regards
    Sudheer

  • Getting all the threads running in one JVM from another JVM ...

    I want to get all the threads running in one JVM from another JVM.
    Is it possible ?
    namanc

    I am going to write a java application that prints all the java application running at the background. And this application has a control over all the threads. means killing the threads, restart the thread etc
    namanc

  • How to call main method in one class from another class

    Suppose i have a code like this
    class Demo
    public static void main(String args[])
    System.out.println("We are in First class");
    class Demo1
    public static void main(String args[])
    System.out.println("We are in second class");
    In the above program how to call main method in demo calss from Demo1 class......???????

    No, i dont know how to call other than main methods from other classes
    And one more doubt i have i.e. Like in C can we see the execution of the program like how the code is being compiled step by step and how the value of the variable changes from step to step like(Add Watch).........

  • How can we call methods of one web dynpro component in another one

    Hello Team,
    How do I call  one Web Dynpro component methods in another Web Dynpro component.
    How do we use public parts.
    thanks

    Hi,
    You want to use Comp2's getData() method in Comp1
    If both the WebDynpro components are in the same DC:
    1. Create a wrapper method (with the same signature) in the Comp2's Interface controller. And invoke the Component contorller's getData() method in this method using the below code.
    wdThis.wdGetComp2Controller.getData()
    2. Now Go to the Comp1 and right click on UsedWebDynproComps and add this Comp2 as a UsedWebDypro component.
    3. Now go to the Component Controller of Comp1 and in properties tab add the usage declaration of Interface controller of Comp2.
    4. Now using this below code you can access the method of InterfaceController of Comp2.
    wdThis.wdGetComp2Interface().getData();
    If both the WebDynpro components are in different DCs:
    1. Right click on Comp2 and select Add to public part on Comp2 in DC2.
    2. Now Add this public part in DC1 UsedDCs.
    Now repeat the above stpes 1...to..4. of  "If both the WebDynpro components are in the same DC" same.
    Regards,
    Charan

  • How can we call creen of one program from some other dynpro Program

    Hi,
    Is it possible to call a screen of one program from some other program as pop up or full scree.
    please give you input if it is possible.
    Thanks in advance.
    Thanks and Regards,
    Praveen.

    Hi,
    But is there is any function module through we can call screen of some other program. PLease let me know if you are aware of that.
    Thanks

  • Need call a method of one iview from another iview

    Hi,
    There are 2 iviews in a component.
    1) FirstView - contains abc() method & xyz() methods
    2) SecondView (a popup) - asdf() method
    i want to call abc() method from asdf() method. i.e. i want to call a method of the firstview from the secondview.
    Note:
    1) i couldn't able to copy the code of abc() method to component controller, as it has the code which uses (iview) local attributes (this can be done by context mapping) & main reason is from the method it calls the xyz() method of the same view (again i couldn't call a method of iview from component controller).
    2) firstView contain 5 tabs, i want to be in the same tab from which secondview (popup) was called, if i use fire plugs between both view, the current tab will be chnaged (i suppose, not sure).
    3) can we use event handlers, if yes how can we do that.
    Please provide a better solution for calling a method of view from another view.
    Thanks
    Maha
    Edited by: Maha Hussain on Jan 13, 2009 12:40 PM

    Hi Maha,
    It is better to have such methods in the component controller to make it reusable and avoid writing same code again and again.
    You can have that method in component controller and call that method on click on a button from Iview1 and can pass the parameters in the mthgod only.
    for example.
    Say Method abc() which is currently in Iview1 and you are passing values from context say aa bb cc to the method now what i am suggesting is
    have that method abc(String aa, String bb, String cc) ;
    and call it on click on button in Iview1 and pass the required parameters.
    Hope this will help
    Regards
    Narendra

  • How to Call Methods of one component into another Component

    Hi Experts,
    I have one requirement...
    I have 2 components A and B, i used A comp in B, i need to call Comp A methods in Component B, can anybody give me the syntax?? please...
    Thanks and Regards,
    Kissna.

    Hi Manas Thanks for your fast reply,
    My question is, for example we have wd_comp_controller or wd_this objects to call methods of view from view and comp controller right.. like this we have any methods to call used component methods? if yes can u please give me the objects syntax?...
    Thanks and regards,
    Kissna.

  • How to call a method in one JSP from another JSP?

    say that I have 2 JSPs.
    JSP one has a button.
    JSP two has some method that, say, find the square root of the number passed from JPS one.
    How to - when click - the button on page one call the method on page two?
    Please note that I can not use object binding, but I want passing the actual parameter and call the method on page two.
    Please note that this is an update of a previous post on the same topic called "Object scope".
    Thank you all very much.

    No, i dont know how to call other than main methods from other classes
    And one more doubt i have i.e. Like in C can we see the execution of the program like how the code is being compiled step by step and how the value of the variable changes from step to step like(Add Watch).........

  • How to call method of one View into another view?

    Hi Gurus,
    I am having 2 views defined in a main window say view1 & view2 i have method get_data defined in view1 & now want to call it in view2.
    Is this possible?
    Can this is also possible if the 2 views belong to a different window?
    Regards
    Rahul

    Hi.
    what type of sample code do you need? You do already have the method.
    What ever you do in it do it in the component controller.
    when calling it from the view instead of wd_this->get_data call wd_comp_controller->get_data( ).
    What data do you fetch in this method?
    If you just read context data you have to put these nodes in the component controller context also to share it between multiple views.
    If you need more info just paste the code of the get data method and explain what you are doing in it.
    Cheers,
    Sascha

  • How can I open tabs on one computer from another computer

    I used to be able to open a tab from my home computer while using my computer at work. Now, I don't seem to be able to do it. I have a sync account set up. How can I open a tab from one computer at a different computer?

    First, be sure you're Syncing correctly:
    https://support.mozilla.org/en-US/kb/how-do-i-set-up-firefox-sync?esab=a&s=Sync&r=4&as=s
    As far as I know, Last Session is synced, too, so you can use
    History -> Restore Previous Session
    or
    History -> Recently Closed Tabs

  • Call method with an argument from another view controller

    I have a UIViewController MainViewController that brings up a modal view that is of the class AddPlayerViewController. When the user clicks 'Save' in the modal view I need to pass the Player data (which is a Player class) from the modal view to the MainViewController in addition to triggering a method in the MainViewController. What's the best way to accomplish this? I'm new to cocoa and have only tried using delegates and some ugly hacks to no avail.
    Thanks for the help.

    If I understand correctly, you have:
    1. A model object, Player.
    2. A top view controller, MainViewController.
    3. Another view controller, AddPlayerViewController, which MainViewController displays modally.
    I'm guessing that AddPlayerViewController creates a new Player object and lets the user set its values, and you need a way to get that new Player into MainViewController once they're done.
    So, here's what I'd do:
    1. Create an AddPlayerViewControllerDelegate protocol. It should declare two methods, "- (void)addPlayerViewController:(AddPlayerViewContrller*)controller didAddPlayer:(Player*)newPlayer" and "- (void)addPlayerViewControllerNotAddingPlayer:(AddPlayerViewController*)controll er".
    2. Add an attribute of type "id <AddPlayerViewControllerDelegate>" called delegate to AddPlayerViewController. Also add a property with "@property (assign)" and "@synthesize".
    3. Modify AddPlayerViewController so that if you click the "Save" button, addPlayerViewController:didAddPlayer: gets called, passing "self" and the new Player object as the two arguments. Also arrange for clicking the "Cancel" button to call addPlayerViewControllerNotAddingPlayer:.
    4. Modify MainViewController to declare that it conforms to AddPlayerViewControllerDelegate. Implement those two methods (addPlayerViewControllerNotAddingPlayer: might be an empty method if you don't want to do anything).
    5. When you create your AddPlayerViewController, set its delegate to your MainViewController.
    If you need more detail, let me know what parts you need me to elaborate on.

  • Error calling Method on Managed Bean from another Managed Bean

    Hi
    (Jdev 11.1.1.2.0)
    Help please:
    I have a managed bean (page flow scope) which is used by my main page for dynamic region flow navigation:
    *public class RegionNavigationBean implements Serializable{*+
    private String dynamicTaskFlowId = "/WEB-INF/home-task-flow-definition.xml#home-task-flow-definition";+
    *public RegionNavigationBean() {*+
    *public TaskFlowId getDynamicTaskFlowId() {*+
    return TaskFlowId.parse(dynamicTaskFlowId);+
    *public void setDynamicTaskFlowId(String taskFlowId) {*+
    this.dynamicTaskFlowId = taskFlowId;+
    taskFlowId property on main page def is set to +*${pageFlowScope.regionNavigationBean.dynamicTaskFlowId}*+
    In a DB table (i.e. View Object on my model layer) I store a menu ID and a corresponding task_flow_id.
    Then I have created an action listener class (RegionNavigationListener - page flow scope) which I link to my menu items on my main page (action listener property on menu item = +*#{pageFlowScope.regionNavigationAction.processAction}*+ )
    In this action listener (processAction method), I retrieve the row set from the menu VO and find the record which matches my menu ID which caused the action event, thereby retrieving the task_flow_id which must be navigated to.
    I then try to retrieve the instance of the RegionNavigationBean with the following statement: RegionNavigationBean regNav = (RegionNavigationBean)JSFUtils.getManagedBeanValue("regionNavigationBean");+
    This seems to work fine, but as soon as I try and use this I get NullPointerException error, e.g.:
    regNav.setDynamicTaskFlowId(menusRow.gettaskFlowId());+
    or even:
    System.out.println("%%% " + regNav.toString());+
    This is all quite new to me... any help would be appreciated!
    Thanks
    Mario

    Hi Mario,
    I think JSFUtils.getManagedBeanValue(String) has difficult to evaluate the "regionNavigationBean" managed bean.
    What JSFUtils.getManagedBeanValue(String) do is important. I remember that "JSF scoped" bean can be found by JSF style find method, such as requestScope, sessionScope, applicationScope. For a managed bean put in these scope, scope prefix is not needed, for example: using #{beanName} to locate a requestScope bean. The #{requestScope} prefix is not needed.
    But pageFlowScope is different. If a bean is put in the pageFlowScope, you must use #{pageFlowScope.beanName} to locate it.
    Say, ManagedBean is the java class of your manged bean.
    FacesContext ctx = FacesContext.getCurrentInstance();
    Application app = ctx.getApplication();
    ManagedBean mb = (ManagedBean)app.evaluateExpressionGet(ctx, "#{pageFlowScope.managedBeanName}", ManagedBean.class);
    Hope it helps.
    Todd
    Edited by: Todd Bao on Nov 26, 2009 9:58 PM

Maybe you are looking for

  • How to share things with aplication express?

    The most important thing for using a database is sharing things, but why I grant even all of one of my table to one user, but she even cannot use it, just say: error; userxxx don't have the right to access the content? Very strange, and the Synonm is

  • How to trace a USER in oracle?

    Hi Sir, I have a rquirement that I need to Trace a session created through the Application. The only data I have is that I know the application will connect to a Database schema and nothing else. How is it possilbe that I can create a trace file for

  • Billing not Possible- Overall Status Blocked

    Hello All, I have  a problem while creation of the Billing document based on Order. Our Scenario is of Service Billing i.e. Contract->Order--> Billing. Problem:  While creating Billing -Error Log is created stating  " Document xxxxxxxx blocked for bi

  • Need Some Quick Assistance with Project Settings

    Hi, I'm doing a project that needs to be played back on and HD television set and am creating all the graphics and text myself. I have set the project settings to HD 720p, but am wondering if I should do an output to HD Broadcast 1080i60 (1920x1080).

  • Problems shutting down illustrator cs3

    greetings - just curious if anyone else has had issues w/ illustrator not shutting down (i.e., file/exit). i have yet to attempt an uninstall/reinstall since it took a long time to install cs3 on my machine the first time (had to restart it once). ab