Gong_XG
驱动太牛
驱动太牛
  • 注册日期2002-10-01
  • 最后登录2010-11-25
  • 粉丝0
  • 关注0
  • 积分313分
  • 威望46点
  • 贡献值0点
  • 好评度4点
  • 原创分0分
  • 专家分0分
阅读:1120回复:15

一个简单的vxd及测试程序

楼主#
更多 发布于:2002-12-17 19:55
一个简单的vxd(Ctrl+C)及测试程序
附件名称/大小 下载次数 最后更新
2002-12-17_GXG-4.RAR (29KB)  5
Gong_XG
驱动太牛
驱动太牛
  • 注册日期2002-10-01
  • 最后登录2010-11-25
  • 粉丝0
  • 关注0
  • 积分313分
  • 威望46点
  • 贡献值0点
  • 好评度4点
  • 原创分0分
  • 专家分0分
沙发#
发布于:2002-12-17 20:03
部分源码:
BOOL GxgadadDevice::OnSysDynamicDeviceInit()
{
pCC=new XCtrlCEvent();
if(pCC)
return pCC->hook();
else
return FALSE;

vxdstop=1;
return TRUE;
}

BOOL GxgadadDevice::OnSysDynamicDeviceExit()
{
        delete pCC;
return TRUE;
}
Gong_XG
驱动太牛
驱动太牛
  • 注册日期2002-10-01
  • 最后登录2010-11-25
  • 粉丝0
  • 关注0
  • 积分313分
  • 威望46点
  • 贡献值0点
  • 好评度4点
  • 原创分0分
  • 专家分0分
板凳#
发布于:2002-12-17 20:04
XCtrlCEvent::XCtrlCEvent() :
VHotKey(C_SCAN, SCAN_NORMAL, HKSS_Ctrl, CallOnPress) {}

VOID XCtrlCEvent::handler(BYTE scan, keyAction_t ka, DWORD shift,
PVOID refData, DWORD elapased)
{
//dout << \"Ctrl-C detected\" << endl;
vxdstop=0;

reflectToVM(Get_Cur_VM_Handle(), shift);
}
ic2001wsd
驱动牛犊
驱动牛犊
  • 注册日期2002-03-30
  • 最后登录2002-12-23
  • 粉丝0
  • 关注0
  • 积分0分
  • 威望0点
  • 贡献值0点
  • 好评度0点
  • 原创分0分
  • 专家分0分
地板#
发布于:2002-12-18 09:18
======Gong_XG=====
请Gong_XG公布全部的源码,让我们见识,见识哦!

驱动小虫
trent
驱动老牛
驱动老牛
  • 注册日期2002-03-01
  • 最后登录2014-09-18
  • 粉丝0
  • 关注0
  • 积分61分
  • 威望185点
  • 贡献值0点
  • 好评度2点
  • 原创分0分
  • 专家分0分
地下室#
发布于:2002-12-18 09:24
XCtrlCEvent::XCtrlCEvent() :
VHotKey(C_SCAN, SCAN_NORMAL, HKSS_Ctrl, CallOnPress) {}

VOID XCtrlCEvent::handler(BYTE scan, keyAction_t ka, DWORD shift,
PVOID refData, DWORD elapased)
{
//dout << \"Ctrl-C detected\" << endl;
vxdstop=0;

reflectToVM(Get_Cur_VM_Handle(), shift);
}
 

我曾经遇到一个问题,Ctrl_C我改为ctrl+alt+delete
当我reflectToVM时过几秒就蓝屏了,我一直也没解决这问题,你是试刊
我不仅要金子,我还要点石成金的手指!
Gong_XG
驱动太牛
驱动太牛
  • 注册日期2002-10-01
  • 最后登录2010-11-25
  • 粉丝0
  • 关注0
  • 积分313分
  • 威望46点
  • 贡献值0点
  • 好评度4点
  • 原创分0分
  • 专家分0分
5楼#
发布于:2002-12-19 01:17
ctrl+alt+del我试过多次,没解决!!!
Gong_XG
驱动太牛
驱动太牛
  • 注册日期2002-10-01
  • 最后登录2010-11-25
  • 粉丝0
  • 关注0
  • 积分313分
  • 威望46点
  • 贡献值0点
  • 好评度4点
  • 原创分0分
  • 专家分0分
6楼#
发布于:2002-12-19 01:19
估计静态的vxd更难解决。

主要问题:接收到信号后,想不出如何进一步处理。
d992901
驱动牛犊
驱动牛犊
  • 注册日期2002-11-18
  • 最后登录2003-02-26
  • 粉丝0
  • 关注0
  • 积分0分
  • 威望0点
  • 贡献值0点
  • 好评度0点
  • 原创分0分
  • 专家分0分
7楼#
发布于:2002-12-19 19:05
dout要输出的东西会在什么地方显示?谢谢
怎么vxd的虚拟键值和vc里的不一样啊,在哪有各个键的对应键值啊!!谢谢!
reflectToVM(Get_Cur_VM_Handle(), shift);
是将消息传递到虚拟机中,假如把这句去掉不就等于屏蔽这个键值了吗?如果去掉的话,是不是会出错?
马上毕业了!!!
OneWind
驱动小牛
驱动小牛
  • 注册日期2002-05-15
  • 最后登录2009-04-10
  • 粉丝0
  • 关注0
  • 积分82分
  • 威望11点
  • 贡献值0点
  • 好评度8点
  • 原创分0分
  • 专家分0分
8楼#
发布于:2002-12-20 09:10
部分源码:
BOOL GxgadadDevice::OnSysDynamicDeviceInit()
{
     pCC=new XCtrlCEvent();
     if(pCC)
          return pCC->hook();
     else
          return FALSE;

   vxdstop=1;    //请问这两个语句能够被执行吗?
   return TRUE;
}
嘿,大家好!
trent
驱动老牛
驱动老牛
  • 注册日期2002-03-01
  • 最后登录2014-09-18
  • 粉丝0
  • 关注0
  • 积分61分
  • 威望185点
  • 贡献值0点
  • 好评度2点
  • 原创分0分
  • 专家分0分
9楼#
发布于:2002-12-20 11:16
dout要输出的东西会在什么地方显示?谢谢
怎么vxd的虚拟键值和vc里的不一样啊,在哪有各个键的对应键值啊!!谢谢!
reflectToVM(Get_Cur_VM_Handle(), shift);
是将消息传递到虚拟机中,假如把这句去掉不就等于屏蔽这个键值了吗?如果去掉的话,是不是会出错?

看dout输出可以用DriverMonitor 或dbgview
你的ctrl-c不是用的是c的scan code 吗?
如果去掉这句话不会出错。是屏蔽盖键值。
对ctrl_shift_alt,屏蔽和取消可以在别的地方实现,不用在reflectToVM也是可以的,想想就知道了 :D
我不仅要金子,我还要点石成金的手指!
trent
驱动老牛
驱动老牛
  • 注册日期2002-03-01
  • 最后登录2014-09-18
  • 粉丝0
  • 关注0
  • 积分61分
  • 威望185点
  • 贡献值0点
  • 好评度2点
  • 原创分0分
  • 专家分0分
10楼#
发布于:2002-12-20 11:19
部分源码:
BOOL GxgadadDevice::OnSysDynamicDeviceInit()
{
     pCC=new XCtrlCEvent();
     if(pCC)
          return pCC->hook();
     else
          return FALSE;

   vxdstop=1;    //请问这两个语句能够被执行吗?
   return TRUE;
}
 

你说呢?当然不能了,faint。vxd用的就是C嘛。 :D
我不仅要金子,我还要点石成金的手指!
Gong_XG
驱动太牛
驱动太牛
  • 注册日期2002-10-01
  • 最后登录2010-11-25
  • 粉丝0
  • 关注0
  • 积分313分
  • 威望46点
  • 贡献值0点
  • 好评度4点
  • 原创分0分
  • 专家分0分
11楼#
发布于:2002-12-20 12:31
部分源码:
BOOL GxgadadDevice::OnSysDynamicDeviceInit()
{
     pCC=new XCtrlCEvent();
     if(pCC)
          return pCC->hook();
     else
          return FALSE;

   vxdstop=1;    //请问这两个语句能够被执行吗?
   return TRUE;
}
 


完全可以执行,我的应用程序就是监督它的.
trent
驱动老牛
驱动老牛
  • 注册日期2002-03-01
  • 最后登录2014-09-18
  • 粉丝0
  • 关注0
  • 积分61分
  • 威望185点
  • 贡献值0点
  • 好评度2点
  • 原创分0分
  • 专家分0分
12楼#
发布于:2002-12-20 15:39
[quote]部分源码:
BOOL GxgadadDevice::OnSysDynamicDeviceInit()
{
     pCC=new XCtrlCEvent();
     if(pCC)
          return pCC->hook();
     else
          return FALSE;

   vxdstop=1;    //请问这两个语句能够被执行吗?
   return TRUE;
}
 


完全可以执行,我的应用程序就是监督它的. [/quote]
当真?汗,为什么?
我不仅要金子,我还要点石成金的手指!
trent
驱动老牛
驱动老牛
  • 注册日期2002-03-01
  • 最后登录2014-09-18
  • 粉丝0
  • 关注0
  • 积分61分
  • 威望185点
  • 贡献值0点
  • 好评度2点
  • 原创分0分
  • 专家分0分
13楼#
发布于:2002-12-20 15:41
前面return 了后面还可以吗?
我不仅要金子,我还要点石成金的手指!
Gong_XG
驱动太牛
驱动太牛
  • 注册日期2002-10-01
  • 最后登录2010-11-25
  • 粉丝0
  • 关注0
  • 积分313分
  • 威望46点
  • 贡献值0点
  • 好评度4点
  • 原创分0分
  • 专家分0分
14楼#
发布于:2002-12-20 19:45
前面是判断hook.
d992901
驱动牛犊
驱动牛犊
  • 注册日期2002-11-18
  • 最后登录2003-02-26
  • 粉丝0
  • 关注0
  • 积分0分
  • 威望0点
  • 贡献值0点
  • 好评度0点
  • 原创分0分
  • 专家分0分
15楼#
发布于:2002-12-22 12:42
真的是c的虚拟键值吗?
我在msdn上查的c的键值是43啊,
在vxd里是46了.为什么啊!!
马上毕业了!!!
游客

返回顶部