使用如下代码调用DllWinMain函数,来是提示非法程序调用#include "stdafx.h"
#include "windows.h"int _tmain(int argc, _TCHAR* argv[])
{
typedef int * (*DllWinMain)(char * ,int);
HMODULE h = LoadLibraryA("vfp9r.dll");
DllWinMain vfpproc = (DllWinMain)GetProcAddress(h, "DllWinMain");
printf("%dhandle%d" ,h,vfpproc);
vfpproc("test.app" ,255);
FreeLibrary(h);
return 0;
}
在vfp中使用调用window api的方式则成功
下面是vfp9的代码
declare long DllWinMain in vfp9r.dll string sApp ,long nPara
DllWinMain("test.app" ,255)
先谢谢了
#include "windows.h"int _tmain(int argc, _TCHAR* argv[])
{
typedef int * (*DllWinMain)(char * ,int);
HMODULE h = LoadLibraryA("vfp9r.dll");
DllWinMain vfpproc = (DllWinMain)GetProcAddress(h, "DllWinMain");
printf("%dhandle%d" ,h,vfpproc);
vfpproc("test.app" ,255);
FreeLibrary(h);
return 0;
}
在vfp中使用调用window api的方式则成功
下面是vfp9的代码
declare long DllWinMain in vfp9r.dll string sApp ,long nPara
DllWinMain("test.app" ,255)
先谢谢了
解决方案 »
- 使用ADO如何连接sql数据库文件,是文件哦!
- 支持2次开发的软件对技术有什么特殊要求??
- 请教一个vc坐标系统的问题,绕来绕去的
- CHttpConnection POST布尔值
- 关于定时器的问题
- 刚学vc,不懂资源怎么编辑,请指点::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::
- MSFLEXGRID不能注册 请大家帮忙解决 谢谢
- VC 调用InternetOpenUrl函数问题
- directshow文字流提取
- DLL注入到system进程后
- 谁有speex编解码的封装源代码?
- lib文件怎么用
加载dll成功后,直接调用dll导出的test函数
775C3B2F jne 775D28AB
775C3B35 ret
775C3B36 mov edx,dword ptr [ebp+0Ch]
775C3B39 lea eax,[ebp-10h]
775C3B3C push eax
775C3B3D push esi ;执行到这里
775C3B3E push dword ptr [ebp-8]
775C3B41 or edx,2
775C3B44 push dword ptr [ebp+10h]
775C3B47 mov ecx,ebx
775C3B49 call 775C375D
775C3B4E mov edi,eax
775C3B50 jmp 775BDF86
775C3B55 mov dword ptr [ebp-0C0h],edi
775C3B5B mov eax,dword ptr [edi+4]
775C3B5E mov ecx,dword ptr [ebp-2Ch]
775C3B61 cmp ecx,eax
775C3B63 jae 775C2A42
775C3B69 mov dword ptr [ebp-84h],ecx
775C3B6F mov dword ptr [ebp-9Ch],edi
775C3B75 mov ecx,dword ptr [ebp-84h]
775C3B7B sub ecx,dword ptr [edi+14h]
775C3B7E mov edx,dword ptr [edi+18h]
775C3B81 mov dword ptr [ebp+10h],edx
775C3B84 mov eax,dword ptr [edx+4]
775C3B87 mov dword ptr [ebp-94h],eax
775C3B8D cmp edx,eax
775C3B8F je 775CFE62 堆栈信息> ntdll.dll!775c3b3d()
[Frames below may be incorrect and/or missing, no symbols loaded for ntdll.dll]
ntdll.dll!775c3b4e()
ntdll.dll!775bf46c()
vfp9r.dll!0c1d996d()
vfp9r.dll!0c1d99cc()
vfp9r.dll!0c123c10()
msvcr71.dll!7c34246e()
ntdll.dll!775e87b9()
ntdll.dll!775e878b()
ntdll.dll!775e872e()
ntdll.dll!775a010f()
test.app没有全路径
vfpproc("" ,255);则vfp弹出个选择app,fxp,exe等各种类型文件的对话框,这时选择了,能运行。
但是运行后还是会出现下面的错误Run-Time Check Failure #0 - The value of ESP was not properly saved across a function call. This is usually a result of calling a function declared with one calling convention with a function pointer declared with a different calling convention.
如果需要导出此函数,可以用export命令。
DllWinMain这个函数是vfp9r.dll的导出函数来的。
DllMain才是dll的入口点。
多谢提醒。改成stdcall以后
执行vfpproc("" ,255);这行后不会出现错误了。但是执行
vfpproc("test.app" ,255);依然是有错误。我猜测是不是第一个参数传入有些问题。不知道怎么去试。