楼主: 神思

[原创发布] 重置RM窗口过程

  [复制链接]

彩色的银子

梦石
0
星屑
50
在线时间
190 小时
注册时间
2006-6-13
回帖
1260

贵宾

 楼主| 发表于 2009-11-27 01:00:53 | 显示全部楼层
VC6下编译OK
  1. // WndProc.cpp : Defines the entry point for the DLL application.
  2. //
  3. #include "stdafx.h"
  4. #include<stdio.h>
  5. // 窗口过程原型
  6. LRESULT CALLBACK        WndProc(HWND, UINT, WPARAM, LPARAM);
  7. // 旧的过程
  8. WNDPROC OldWndProc;
  9. // 连接库句柄
  10. HINSTANCE hInst = NULL;
  11. // RGSS
  12. long (*LoadRGSS)(LPCTSTR);
  13. BOOL BreakRM = false;
  14. // 重置过程
  15. extern "C" __declspec(dllexport) long ReSetProc(HWND hWnd)
  16. {
  17.          OldWndProc = (WNDPROC)GetWindowLong(hWnd, GWL_WNDPROC);
  18.          return SetWindowLong(hWnd, GWL_WNDPROC, (long)WndProc);
  19. }
  20. // 设置RGSS连接库
  21. extern "C" __declspec(dllexport) void SetDLL(LPCTSTR lib_name)
  22. {
  23.          hInst = LoadLibrary(lib_name);
  24.          LoadRGSS = (long (*)(LPCTSTR))GetProcAddress(hInst, "RGSSEval");
  25. }
  26. extern "C" __declspec(dllexport) void OldProc(HWND hWnd, UINT message, WPARAM wParam, LPARAM lParam)
  27. {
  28.          OldWndProc(hWnd, message, wParam, lParam);
  29. }
  30. extern "C" __declspec(dllexport) void SetBreak()
  31. {
  32.          BreakRM = true;
  33. }
  34. extern "C" __declspec(dllexport) void SetMousePos(HWND hWnd, long x, long y)
  35. {
  36.         SendMessage(hWnd, WM_MOUSEMOVE, 0, MAKEWPARAM(x, y));
  37. }
  38. // 窗口过程
  39. LRESULT CALLBACK WndProc(HWND hWnd, UINT message, WPARAM wParam, LPARAM lParam)
  40. {
  41.         char rgss[128];
  42.         sprintf(rgss, "WndProc.proc(%d,%d,%d,%d)", hWnd, message, wParam, lParam);
  43.         LoadRGSS(rgss);
  44.         if(!BreakRM)
  45.                 return OldWndProc(hWnd, message, wParam, lParam);
  46.         else
  47.                 BreakRM = false;
  48.                 return 0;
  49. }
  50. BOOL APIENTRY DllMain( HANDLE hModule,
  51.                        DWORD  ul_reason_for_call,
  52.                        LPVOID lpReserved
  53.                                          )
  54. {
  55.     return TRUE;
  56. }

复制代码
-.-
回复

使用道具 举报

梦石
1
星屑
11993
在线时间
4534 小时
注册时间
2005-10-22
回帖
7091

开拓者贵宾

发表于 2009-11-27 10:52:16 | 显示全部楼层
感谢神思,偶去学习一下 囧
回复

使用道具 举报

彩色的银子

梦石
0
星屑
50
在线时间
190 小时
注册时间
2006-6-13
回帖
1260

贵宾

 楼主| 发表于 2009-11-27 22:37:08 | 显示全部楼层
呵呵...小蛇子客气了.
-.-
回复

使用道具 举报

头像被屏蔽
梦石
0
星屑
50
在线时间
0 小时
注册时间
2009-10-27
回帖
9
发表于 2009-11-27 23:44:05 | 显示全部楼层
提示: 作者被禁止或删除 内容自动屏蔽
回复

使用道具 举报

头像被屏蔽
梦石
0
星屑
50
在线时间
0 小时
注册时间
2005-11-17
回帖
16
发表于 2009-12-1 17:31:19 | 显示全部楼层
提示: 作者被禁止或删除 内容自动屏蔽
回复

使用道具 举报

彩色的银子

梦石
0
星屑
50
在线时间
190 小时
注册时间
2006-6-13
回帖
1260

贵宾

 楼主| 发表于 2009-12-2 12:41:36 | 显示全部楼层
用个全局变量转接过去..
-.-
回复

使用道具 举报

头像被屏蔽
梦石
0
星屑
50
在线时间
0 小时
注册时间
2009-8-15
回帖
88
发表于 2009-12-12 19:08:49 | 显示全部楼层
提示: 作者被禁止或删除 内容自动屏蔽
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 注册会员

本版积分规则

Powered by Discuz! X5.0 © 2001-2026 Discuz! Team.

在本版发帖返回顶部