简单去掉Dexeperience(DX)未注册限制
[C#适用]
DXperience是一款相当强大的控件,很多人都喜欢用它,但是注册费用太贵了。破解的吧,又不像是一个普通的EXE那么便捷,网上也有一些破解的版本存在。我找了一些试用,但破解过程复杂,而且,不知道是不是我RP不行啊,总是不成功。
后来发现,其实未注册的只是程序运行的时候会弹出一个讨厌的版权框,(没有源码和最后程序没有关系),把这个框点击关闭之后就一切正常了。于是萌发了让程序自己把它去掉的想法。
思路很简单:程序运行时,在控件初始化之前创建一个线程,这个线程一直查找这个提示框,然后给它发送WM_CLOSE 的消息即可。
下面是代码,在VS2005上测试通过:
1
using System.Threading; //添加创建线程的引用
2
using System.Runtime.InteropServices; //添加使用API的引用
3![]()
4
//声明两个API
5
[DllImport("user32.dll")]
6
static extern IntPtr FindWindow(IntPtr ptr1, string strWindow); //这里比较特殊,后面会讲到
7
[DllImport("user32.dll")]
8
static extern int PostMessage(IntPtr hWnd, int msg, int wParam, int lParam);
9![]()
10
public frmMain()
11
{
12
// 此处关闭窗口
13
Thread myThread = new Thread(new ThreadStart(this.KillDXThread));
14
myThread.Start();
15
// 关闭代码应该在初始化组件之前调用,否则会被DX截停.
16
InitializeComponent();
17
}
18![]()
19
public void KillDXThread()
20
{
21
do
22
{
23
IntPtr dxWin = FindWindow(IntPtr.Zero, "Information");
24
if(dxWin != IntPtr.Zero)
25
{
26
PostMessage(dxWin, 0x10, 0, 0);
27
break;
28
}
29
} while (true);
30
;
31
}
正常的 FindWindow函数两个参数都应该是String,只是DX的弹窗的CLASS总是在发生变化(标题不变),所以干脆直接传一个NULL(IntPtr.Zero)给第一个参数,第二个参数是DX的标题.
PostMessage第二个参数是消息,WM_CLOSE 是 0x10H.
运行程序,弹窗一闪而过,是不是很简单!(我用的是DX7.3.5版本.)

2

3

4

5

6

7

8

9

10

11

12

13

14

15

16

17

18

19

20

21

22

23

24

25

26

27

28

29

30

31
