2012-09-26 37 views
1

我有一個2用戶之間的屏幕共享項目,然後遠程控制screen.I有一個visual C++代碼,我通過它調用Java屏幕共享方法來共享screen.That工作非常好。從Visual C++代碼調用時機器人事件不會觸發

現在我正在嘗試調用其他機器人事件,如(mouseMove,keypress等)。我可以順利地從我的C++代碼中調用Java方法(其中包含機器人事件調用),並且該函數總是返回true到我的C++代碼,從而顯示成功執行,但用Java方法編寫的機器人事件沒有被燒燬。任何人都可以幫助我找到正確的方向。我的代碼如下:

C++代碼:

status= m_pJVM->InvokeClassMethod(m_sccObj,"keyPress", 
           "(D)V", NULL, 
           keyCode); 
    if (status) 
    { 
     GetLogger()->Log(_T("Successfull key Press")); 
    } 
    else 
    { 
     GetLogger()->Log(_T("Unsuccessfull key Press")); 
    } 

在這裏,我總是在控制檯上輸出「Successfull key press」。

在Java端的代碼是:

public boolean keyPress(double key) 
    { 
     try 
     { 
      this.robot = new Robot(); 
      if(robot != null) 
      { 
      robot.delay(5000); 
      robot.keyPress(java.awt.event.KeyEvent.VK_T); 
      robot.keyPress(KeyEvent.VK_E); 
      robot.keyPress(KeyEvent.VK_S); 
      robot.keyPress(KeyEvent.VK_T); 
      return true; 
      } 
      else 
      { 
       return false; 
      } 
     } 
     catch(Exception e) 
     { 
      return false; 
     } 
    } 

誰能告訴我是否缺少anythng這裏。

謝謝, 任何幫助將不勝感激。

回答

0

java進程應該在可訪問current desktop的用戶空間中運行。
檢查它啓動的憑據。如果通過以服務爲它的運行確保:

>[Your host service]>Log On>Allow service to interact with desktop 檢查。

雖然你說它已經能夠訪問屏幕 - 這可能是而不是是問題。

+0

感謝Ujjwal的快速​​回覆,但正如你建議這可能不是問題。我創建了測試應用程序,然後調用機器人事件,它的工作方式就像charm.seems他們是一些問題,同時調用C++代碼 –

+0

'測試你創建的應用程序是在Java中?正確 –

+0

您如何更改KeyPress返回類型和值以檢查代碼流:將返回類型更改爲'Integer'並返回成功時返回99,失敗返回11。此外,我看到沒有使用輸入參數「key」到'KeyPress' java fn。 –