- c - 在位数组中找到第一个零
- linux - Unix 显示有关匹配两种模式之一的文件的信息
- 正则表达式替换多个文件
- linux - 隐藏来自 xtrace 的命令
这是我的 ClickMouse() 函数代码:
[DllImport("user32.dll", CharSet = CharSet.Auto, CallingConvention = CallingConvention.StdCall)]
public static extern void mouse_event(long dwFlags, long dx, long dy, long cButtons, long dwExtraInfo);
private const long MOUSEEVENTF_LEFTDOWN = 0x02;
private const long MOUSEEVENTF_LEFTUP = 0x04;
private const long MOUSEEVENTF_RIGHTDOWN = 0x08;
private const long MOUSEEVENTF_RIGHTUP = 0x10;
private void ClickMouse()
{
long X = Cursor.Position.X;
long Y = Cursor.Position.Y;
mouse_event(MOUSEEVENTF_LEFTDOWN | MOUSEEVENTF_LEFTUP, X, Y, 0, 0);
}
由于某些原因,当我的程序运行到这段代码时,它会抛出这样的错误信息:
PInvokeStackImbalance was detected Message: A call to PInvoke function 'WindowsFormsApplication1!WindowsFormsApplication1.Form1::mouse_event' has unbalanced the stack. This is likely because the managed PInvoke signature does not match the unmanaged target signature. Check that the calling convention and parameters of the PInvoke signature match the target unmanaged signature.
请帮忙?
最佳答案
看起来你的 DllImport 声明是错误的。特别是使用 Int64(长整数),而不是 UInt32。
下面是 PInvoke 引用中的一些细节:
http://www.pinvoke.net/default.aspx/user32.mouse_event
[DllImport("user32.dll")]
static extern void mouse_event(uint dwFlags, uint dx, uint dy,
uint dwData,UIntPtr dwExtraInfo);
关于C#——在记录良好的函数上检测到 PInvokeStackImbalance?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/2943883/
我的代码有点问题。我有一个非托管 C++ .dll,我想将其与 C# 应用程序一起使用。 dll 中的 C++ 函数如下所示: void EXPORT_API vSetLights(BYTE byLi
这是我的 ClickMouse() 函数代码: [DllImport("user32.dll", CharSet = CharSet.Auto, CallingConvention = Cal
我刚从 vs2008 切换到 vs2010。完全相同的解决方案,除了现在对 C++ dll 的每次调用都会产生“pinvokestackimbalance”异常。 此异常在 2008 年没有被触发。我
我正在创建一个非常简单的PInvoke示例: extern "C" __declspec(dllexport) int Add(int a, int b) { return a + b; }
[DllImport( "zlib32" )] private static extern ZLibError compress2( byte[] dest,
我是 Pinvoke 的新手。 我有一个大型项目调用名为 vtmail.dll 的 DLL。它在 .Net 3.5 中运行良好,但在升级到 .NET 4.0 时我得到了一个 PinvokeStackI
我正在尝试了解 .Net 编码,现在我正在处理字符串。我写了一个应用程序,但它没有按预期工作。我在这里做错了什么? C++ EXPORT void GetString(wchar_t **pBuff)
异常: 托管调试助手“PInvokeStackImbalance”在“D:\UI_still_in_progress\user_interface\bin\Debug\WindowsFormsAppl
我想用 C# 直接在桌面上绘制(作为墙纸或全部,我不介意),但我一直找不到方法。我发现了这个: using System; using System.Drawing; using System.Dra
我不知道这里有什么问题。 我有很多 p/invoke 调用都正常工作...除了这个。 我已经设法将我的问题简化为以下示例代码。 如果我删除任何一个结构成员(double 或 int)它都可以正常工作。
我在 .Net 3.5 项目中使用 msvcrt.dll 中的 strlen 函数。更具体地说: private unsafe static extern int strlen( byte *pByt
当我尝试 PInvoke 第三方 DLL 时,我很难解决 PInvokeStackImbalance 异常。根据我在下面的描述,有人可以建议后续的故障排除步骤吗? 我在这里花了一些时间研究与 PInv
切换到 VS2010 后,托管调试助手显示一个错误,即从 C# 应用程序调用非托管 C++ 函数导致堆栈不平衡。 通常的嫌疑人似乎没有导致问题。还有什么我应该检查的吗? VS2008 构建的 C++
我正在编写一个 WPF 应用程序,它需要调用一些存在于我编写的 dll 中的 C++ 代码。我总是收到 PInvokeStackImbalance 错误,即使使用最基本的测试功能也是如此。例如,在 C
我有一个 C++ 函数,我想从 C# 访问它。问题是我不断收到 PInvokeStackImbalance 异常,我不知道为什么。当检查该异常关闭时,一切都运行良好并且符合预期。 我的 C++ 函数的
我非常接近完成并运行我的上一份报告。我在任何其他报告中都没有遇到过这个问题。我正在尝试根据数据库记录创建报告。当我通过 LocalReport 创建报告并为报告创建参数时,我收到错误消息“托管调试助手
在处理 C++/CLI 项目以包装 native C++ DLL 时,我遇到了一个接受 std::string 的 native 函数。类似于以下内容: class NativeApi { publi
我正在尝试使用 system(string str) 命令在 C# 中进行 dos 操作。 namespace XYZ { internal class Program {
我正在尝试使用 system(string str) 命令在 C# 中进行 dos 操作。 namespace XYZ { internal class Program {
这可能是个菜鸟问题,但在过去的几个小时(或几天)里它一直让我感到困惑... 我在 .NET Framework 4.0 的代码中从 DLL 调用方法 [DllImport("xeneth.dll"
我是一名优秀的程序员,十分优秀!