紫雨轩 .Net, DNGuard HVM , .Net VMProtect

DNGuard HVM - Advanced .NET Code Protection Technology

常用链接

统计

积分与排名

友情连接

最新评论

在 FlexGrid 控件中指定最右侧显示的列

FlexGrid 控件提供了指定左侧显示列的功能。因项目的需要,要求能够指定最右侧显示的列。
实现方法:
获取表格客户区宽度,然后通过每列的宽度计算出水平滚动条的位置。
但是有一个麻烦,就是垂直滚动条的问题。
首先要能判断是否有垂直滚动条,
然后有垂直滚动条时,需要减出垂直滚动条的宽度,
但是控件没有提供这方面的接口。

猜想控件的滚动条可能是两种情况:
1。FlexGrid是复合控件,其中包含了滚动条对象。
这样的话,用reflector查看一下对象命名,可以通过反射访问到内部的滚动条对象。

2。是传统Win32的滚动窗体。
这样的话,可以通过win32 api函数来判断。

用reflector看了一下控件代码,是第二种情况。
所以用win32 api来解决。
用api函数
lStyle = GetWindowLong(hWnd, GWL_STYLE);
获取Style然后判断
Style中是否有 WS_VSCROLL

如果有就代表有 垂直滚动条。
再获取 滚动条的最大值和最小值,如果相等则滚动条不可见。不相等则可见。

posted on 2008-06-26 11:22 紫雨轩 .Net 阅读(518) 评论(4)  编辑 收藏 所属分类: C# Winform编程

评论

#1楼  2008-06-27 17:28 菜菜灰      

找你有事呢,怎么不上QQ   回复  引用  查看    

#2楼  2008-06-30 15:56 xiaopohai_long [未注册用户]

想问您一些问题,不知道可以不?
我自己写了一个IL加密的程序和解密的钩子dll文件,可是加密和解密windows窗口程序时,出现窗口不显示的问题,而且从日志发现,钩子程序后期好像一直读一个地址的IL代码,也就是Forms的初始化代码部分,所以想问问你有没有遇到过这样的问题?想请教请教?   回复  引用    

#3楼 [楼主] 2008-06-30 16:11 紫雨轩 .Net      

你的程序为什么会一直读取一个地址的IL代码,别人怎么可能会知道原因。。。。
自己调试跟踪吧,肯定是程序代码错误。
程序没有,代码也没有,没有人能帮得了你的.....
  回复  引用  查看    

#4楼  2008-06-30 19:37 xiaopohai_long [未注册用户]

@紫雨轩 .Net
不好意思啊,现在没有代码,内容是这样的,在每个类方法中加入静态构造函数.cctor调用dll文件实时的去解密,dll文件首先获得mscorjit.dll中getJit方法,然后重写VirtualTable中的compile方法,调用自己的Compile方法。在调用自己的Compile方法中解密IL代码。目前好像猜出把mscorjit.dll方法中的compile方法重写了,好像有问题了。代码等有时间给你看看。

对啦,能介绍一些关于getJit hook的资料吗?我上网找了一些,都不能解决我的问题,不知道可以不?   回复  引用