gpt4 book ai didi

Java 访问桥 C# : Only MouseClicked event firing?

转载 作者:太空宇宙 更新时间:2023-11-03 16:44:09 24 4
gpt4 key购买 nike

我一直在摆弄 Java Access Bridge,并设法使它的大部分正常工作,但有一个异常(exception):我只能在 Java 窗口中 Hook 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 窗口收到 MouseClick 时,处理它的代码也会触发 - 太棒了。但是,当我尝试 Hook 另一个事件时,我什么也没得到。不管发生什么事,我都没有收到任何东西。这是一个例子:

[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 文档、源代码和示例,两者的调用约定和变量类型是相同的。

我还没有想出任何办法,我尝试使用 documentation 中提供的很多很多事件没有任何效果。我束手无策 - 即使对正在发生的事情有一个大概的了解也会有所帮助。

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

最佳答案

您是否将函数指针设置为回调?

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

关于Java 访问桥 C# : Only MouseClicked event firing?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/6562512/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com