簡體   English   中英

Java Access Bridge C#:只有 MouseClicked 事件觸發?

[英]Java Access Bridge C#: Only MouseClicked event firing?

我一直在搞亂 Java Access Bridge 並設法使其大部分工作,除了一個例外:我只能在 Java Z05B8C74CBD96FBF2DE4C1A352702 中掛鈎 MouseClicked 事件。

這段代碼:

[DllImport("WindowsAccessBridge.dll", CallingConvention = CallingConvention.Cdecl)]
private extern static void setMouseClickedFP(MouseClickedDelegate fp);

[UnmanagedFunctionPointer(CallingConvention.Cdecl)]
delegate void MouseClickedDelegate(System.Int32 vmID, IntPtr jevent, IntPtr ac);

static MouseClickedDelegate mcd;
mcd = new MouseClickedDelegate(HandleMouseClicked);

static void HandleMouseClicked(System.Int32 vmID, IntPtr jevent, IntPtr ac)
{
    getVersionInfo(vmID, out vi);
    releaseJavaObject(vmID, ac);
    releaseJavaObject(vmID, jevent);
}

工作沒有問題。 每當 Java window 收到鼠標點擊時,處理它的代碼也會觸發 - 太棒了。 但是,當我嘗試掛鈎另一個事件時,我什么也得不到。 不管發生什么事件,我什么都沒有收到。 這是一個例子:

[DllImport("WindowsAccessBridge.dll", CallingConvention = CallingConvention.Cdecl)]
private extern static void setFocusGainedFP(FocusGainedDelegate fp);

[UnmanagedFunctionPointer(CallingConvention.Cdecl)]
delegate void FocusGainedDelegate(System.Int32 vmID, IntPtr jevent, IntPtr ac);

static FocusGainedDelegate fgd;
fgd = new FocusGainedDelegate(HandleFocusGained);

static void HandleFocusGained(System.Int32 vmID, IntPtr jevent, IntPtr ac)
{
    AccessibleContextInfo aci = new AccessibleContextInfo();
    getAccessibleContextInfo(vmID, ac, out aci);
}

上面的代碼不會被觸發,即使根據 oracle 文檔、源代碼和示例,兩者的調用約定和變量類型都是相同的。

我無法弄清楚任何事情,並且我嘗試使用文檔中提供的許多許多事件,但沒有任何效果。 我已經束手無策了——即使是對正在發生的事情有一個大致的了解也會有所幫助。

注意:如果它是每種事件類型所需的特定方法,我希望使用的是 PropertyValueChangeFP、PropertySelectionChangeFP、PropertyTextChangeFP。

您是否將 function 指針設置為回調?

/* Setup */
private void InitAccessBridge()
{
    Windows_run();
    FocusGainedDelegate fgd= new FocusGainedDelegate(HandleFocusGained);
    /* right here */
    setFocusGainedFP(fgd);
}

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM