能不能帮我把下面的代码生成DLL文件,我在VB里引用啊谢谢!!!!
Re: 奇迹窗口源代码
我的用的工具是c++builder,下面是dll文件的源代码,相信会编程的都能看懂,大家自己写个执行文件将钩子安装进去就行,最简单的方法就是放一个Timer,然后用GetAsyncKeyState函数设定一个热键,在回调函数中
将钩子安装进去。
然后运行游戏,在游戏中呼叫热键就可以了。
当然,这里面还有很多问题我还没有考虑,毕竟我很菜,多多谅解!
//---------------------------------------------------------------------------#include <vcl.h>#include <windows.h>#pragma hdrstop#pragma argsused//---------------------------------------------------------------------------//三个输出函数 extern "C" { __declspec(dllexport) __stdcall void ShowForm(void); __declspec(dllexport) __stdcall bool SetHook(HWND hwindow); __declspec(dllexport) __stdcall bool RemoveHook(void); }HWND hwndmu;HHOOK hhook;HINSTANCE hinstance;bool bs=false;FARPROC oldproc;LRESULT CALLBACK HookProc(int ,WPARAM ,LPARAM);LRESULT CALLBACK WINPROC(HWND hwnd,UINT umsg,WPARAM wparam,LPARAM lparam); bool __stdcall winmu(void);//--------------------------------------------------------------------------int WINAPI DllEntryPoint(HINSTANCE hinst, unsigned long reason, void* lpReserved){hinstance=hinst ; return 1;}//---------------------------------------------------------------------------//安装WH_GETMESSAGE钩子到指定的线程中bool __stdcall SetHook(HWND hwindow){DWORD thid;if(hhook==NULL)//获取前端窗口句炳,当然也可以用FindWindow(NULL,"MU")来替代thid=GetWindowThreadProcessId(hwindow,NULL);hhook=SetWindowsHookEx(WH_GETMESSAGE,(HOOKPROC)HookProc,hinstance,thid);if(hhook==NULL){ShowMessage("Set Hook fails");return false;}return true;}//---------------------------------------------------------//卸载钩子bool __stdcall RemoveHook(void){ if(hhook==NULL) { ShowMessage("Hook Removed"); return false; } UnhookWindowsHookEx(hhook); return true;}//-------------------------------------------------------//钩子回调函数LRESULT CALLBACK HookProc(int ncode,WPARAM wparam,LPARAM lparam){ if(ncode<0) return CallNextHookEx(hhook,ncode,wparam,lparam);//用一个bool变量让我们的winmu()只调用一次 if (!bs) winmu(); bs=true; return CallNextHookEx(hhook,ncode,wparam,lparam); } //-------------------------------------------------------bool __stdcall winmu(void) { long style; long exstyle; TDeviceMode devmode; hwndmu=GetForegroundWindow(); if(EnumDisplaySettings(0, 0, &devmode)) { devmode.dmPelsWidth=1024; devmode.dmPelsHeight=768; devmode.dmBitsPerPel=32; devmode.dmDisplayFrequency=75; ChangeDisplaySettings(&devmode,0); }//修改窗体的style属性style= GetWindowLong(hwndmu,GWL_STYLE);style=style | WS_CAPTION ;SetWindowLong(hwndmu,GWL_STYLE,style);//修改窗体的exstyle属性exstyle=GetWindowLong(hwndmu,GWL_EXSTYLE);exstyle=exstyle | WS_EX_APPWINDOW | WS_EX_WINDOWEDGE ;SetWindowLong(hwndmu,GWL_EXSTYLE,exstyle);//设置窗体的位置,取消其最前端显示,为图简单807,632是我自己随便设的//当然最好是先用AdjustWindowRect函数调整一下大小SetWindowPos(hwndmu,HWND_NOTOPMOST,0,0,807,632,SWP_SHOWWINDOW);ShowWindow(hwndmu,SW_SHOWNORMAL);//修改窗体的回调函数地址到我们自己定义的回调函数oldproc=(FARPROC)GetWindowLong(hwndmu,GWL_WNDPROC);if(SetWindowLong(hwndmu,GWL_WNDPROC,(long)WINPROC)==0)return false;return true;}//---------------------------------------------------------//自己定义的回调函数LRESULT CALLBACK WINPROC(HWND hwnd,UINT umsg,WPARAM wparam,LPARAM lparam){//消息过滤 switch (umsg) { case WM_ACTIVATEAPP: case WM_ACTIVATE: case WM_KILLFOCUS: case WM_SETFOCUS: case WM_CLOSE: return 0;//这里是个关键,把这个计时器kill case WM_TIMER: if(wparam==0x3e9) KillTimer(hwnd,wparam); break; } return CallWindowProc(oldproc,hwnd,umsg,wparam,lparam); }//---------------------------------------------------------
网址:
http://www.gameres.com/bbs/showthread.asp?threadid=3741
我的用的工具是c++builder,下面是dll文件的源代码,相信会编程的都能看懂,大家自己写个执行文件将钩子安装进去就行,最简单的方法就是放一个Timer,然后用GetAsyncKeyState函数设定一个热键,在回调函数中
将钩子安装进去。
然后运行游戏,在游戏中呼叫热键就可以了。
当然,这里面还有很多问题我还没有考虑,毕竟我很菜,多多谅解!
//---------------------------------------------------------------------------#include <vcl.h>#include <windows.h>#pragma hdrstop#pragma argsused//---------------------------------------------------------------------------//三个输出函数 extern "C" { __declspec(dllexport) __stdcall void ShowForm(void); __declspec(dllexport) __stdcall bool SetHook(HWND hwindow); __declspec(dllexport) __stdcall bool RemoveHook(void); }HWND hwndmu;HHOOK hhook;HINSTANCE hinstance;bool bs=false;FARPROC oldproc;LRESULT CALLBACK HookProc(int ,WPARAM ,LPARAM);LRESULT CALLBACK WINPROC(HWND hwnd,UINT umsg,WPARAM wparam,LPARAM lparam); bool __stdcall winmu(void);//--------------------------------------------------------------------------int WINAPI DllEntryPoint(HINSTANCE hinst, unsigned long reason, void* lpReserved){hinstance=hinst ; return 1;}//---------------------------------------------------------------------------//安装WH_GETMESSAGE钩子到指定的线程中bool __stdcall SetHook(HWND hwindow){DWORD thid;if(hhook==NULL)//获取前端窗口句炳,当然也可以用FindWindow(NULL,"MU")来替代thid=GetWindowThreadProcessId(hwindow,NULL);hhook=SetWindowsHookEx(WH_GETMESSAGE,(HOOKPROC)HookProc,hinstance,thid);if(hhook==NULL){ShowMessage("Set Hook fails");return false;}return true;}//---------------------------------------------------------//卸载钩子bool __stdcall RemoveHook(void){ if(hhook==NULL) { ShowMessage("Hook Removed"); return false; } UnhookWindowsHookEx(hhook); return true;}//-------------------------------------------------------//钩子回调函数LRESULT CALLBACK HookProc(int ncode,WPARAM wparam,LPARAM lparam){ if(ncode<0) return CallNextHookEx(hhook,ncode,wparam,lparam);//用一个bool变量让我们的winmu()只调用一次 if (!bs) winmu(); bs=true; return CallNextHookEx(hhook,ncode,wparam,lparam); } //-------------------------------------------------------bool __stdcall winmu(void) { long style; long exstyle; TDeviceMode devmode; hwndmu=GetForegroundWindow(); if(EnumDisplaySettings(0, 0, &devmode)) { devmode.dmPelsWidth=1024; devmode.dmPelsHeight=768; devmode.dmBitsPerPel=32; devmode.dmDisplayFrequency=75; ChangeDisplaySettings(&devmode,0); }//修改窗体的style属性style= GetWindowLong(hwndmu,GWL_STYLE);style=style | WS_CAPTION ;SetWindowLong(hwndmu,GWL_STYLE,style);//修改窗体的exstyle属性exstyle=GetWindowLong(hwndmu,GWL_EXSTYLE);exstyle=exstyle | WS_EX_APPWINDOW | WS_EX_WINDOWEDGE ;SetWindowLong(hwndmu,GWL_EXSTYLE,exstyle);//设置窗体的位置,取消其最前端显示,为图简单807,632是我自己随便设的//当然最好是先用AdjustWindowRect函数调整一下大小SetWindowPos(hwndmu,HWND_NOTOPMOST,0,0,807,632,SWP_SHOWWINDOW);ShowWindow(hwndmu,SW_SHOWNORMAL);//修改窗体的回调函数地址到我们自己定义的回调函数oldproc=(FARPROC)GetWindowLong(hwndmu,GWL_WNDPROC);if(SetWindowLong(hwndmu,GWL_WNDPROC,(long)WINPROC)==0)return false;return true;}//---------------------------------------------------------//自己定义的回调函数LRESULT CALLBACK WINPROC(HWND hwnd,UINT umsg,WPARAM wparam,LPARAM lparam){//消息过滤 switch (umsg) { case WM_ACTIVATEAPP: case WM_ACTIVATE: case WM_KILLFOCUS: case WM_SETFOCUS: case WM_CLOSE: return 0;//这里是个关键,把这个计时器kill case WM_TIMER: if(wparam==0x3e9) KillTimer(hwnd,wparam); break; } return CallWindowProc(oldproc,hwnd,umsg,wparam,lparam); }//---------------------------------------------------------
网址:
http://www.gameres.com/bbs/showthread.asp?threadid=3741
...全文
相关推荐
vb制作DLL并引用DLL
VB(Visual Basic)是微软开发的一种面向对象的编程语言,它同样支持创建和使用DLL。下面我们将深入探讨如何在VB中制作DLL以及如何在VB项目中引用DLL。一、制作VB DLL1.
VB.NET写的DLL调用问题
一般dll可以通过Declare 语句在模块级用于声明对动态链接库 (DLL) 中的外部过程的引用。Private Declare Sub myFunc1 Lib "mylib.dll" (ByVal strName As String)但是,VB.NET,C#.NET创建的DLL是个类库,不能生成标准的 DLL 文件,不能采用declare ()的方式。应该在解决方案资源管理器下的需要引
VS2010 VB如何生成DLL文件,调用DLL
DLL是一种可重用代码的库,多个应用程序可以共享其功能,从而减少内存占用并提高效率。下面我们将详细探讨如何在VS2010中使用VB.NET生成DLL文件以及如何调用这个DLL。
vb 可以引用的 directx7 directx8的dll文件
标题提到的“vb可以引用的DirectX7 Directx8的dll文件”,这意味着VB程序员可以通过引入特定的DLL动态链接库文件来利用DirectX的功能。
vb 引用dll 详解
总结,VB引用DLL的过程包括了添加引用、声明函数、调用函数等步骤,而封装DLL则涉及到创建新的VB项目,编写导出函数,以及生成DLL文件。


