2011-02-13 27 views
3

我有一个不使用标准库的应用程序。相反,它使用存根来调用LoadLibrary/GetProcAddress,然后通过结果函数指针调用函数。进入拖放过程(或任何其他系统调用)

使用上述方法我的应用程序调用ole32.dll中的DoDragDrop。该调用正在返回E_UNEXPECTED,这显然意味着'catastophic失败'。

我想问的是有没有人知道一种方法来发现DoDragDrop调用中发生了什么?具体而言,我可以发现它正在寻找但找不到的函数或变量吗? (我猜想它想要访问某些函数或变量,而这些函数或变量在我调用DoDragDrop时没有加载,如果我可以明确加载它,则调用将成功。)显然,我无法进入调用 - 试图仅仅尝试在DoDragDrop调用之后,在我的代码中运行函数和步骤。

:)

(我使用VS2005在XP中。)

+1

我不能说我真的建议它,但如果切换到反汇编窗口,然后单步执行,则可以进入系统调用(至少是用户模式部分)。但是,除非你习惯使用汇编语言,否则它可能不会对你有很大帮助。 – 2011-02-13 17:39:38

回答

0

当我忘了打电话OleInitialize(防爆)/ CoInitialize的(防爆)的制线会发生这样的事情我记得有电话。请注意,公寓必须是STA。

相关问题