| 发表于:2007-05-09 17:42:1235楼 得分:0 |
去年刚接触c#的时候碰到过lz这样的的问题,当时我猜测 可能是在c#中,dll不能是可重入的。 我当时的解决办法是这样的: [dllimport( "kernel32 ")] public extern static int loadlibrary(string lplibfilename); [dllimport( "kernel32 ")] public extern static bool freelibrary(int hlibmodule); [dllimport( "kernel32 ", charset=charset.ansi)] public extern static int getprocaddress(int hmodule, string lpprocname); [dllimport( "user32 ", entrypoint= "callwindowproc ")] public static extern int callwindowproc(int lpprevwndfunc, int hwnd, int msg, int wparam, int lparam); private void button1_click(object sender, system.eventargs e) { int hmod=loadlibrary( "*****.dll "); int pfname=getprocaddress(hmod, "***** "); callwindowproc(pfname,0,0,0); freelibrary(hmod); } 这样在每次点击button1的时候,都可以重复加载该dll。 | | |
|