dszsun
驱动牛犊
驱动牛犊
  • 注册日期2002-08-07
  • 最后登录2006-08-13
  • 粉丝0
  • 关注0
  • 积分0分
  • 威望0点
  • 贡献值0点
  • 好评度0点
  • 原创分0分
  • 专家分0分
阅读:1427回复:6

怎样用vxd在win98出现登陆对话框之前先运行自定义的对话框??

楼主#
更多 发布于:2002-08-24 15:37
因为软件设计需要,我要在win98出现登陆对话框之前先运行一个我自定义的对话框,这个对话框里也要像登陆对话框一样有输入功能,曾经看过有书介绍在vxd的OnDeviceInit()函数中执行SHELL_CallAtAppyTime(&trick, hSysVM, 0, 0)就可实现(用的是vtoolsd + vc6.0),不过书上的例子只是出现一个对话框,而没有输入功能,因资料特别缺乏兼刚学vxd不久,暂时找不到很好的解决方法,请高手出手相救!!!!究竟在vxd中调用什么的Shell服务能实现输入功能。(声明:我在搞的是一个硬盘加密程序,不是黑客工具)
开发环境:WIN98,VTOOLSD3.0,VC++6.0,SOFTICE。
dszsun
驱动牛犊
驱动牛犊
  • 注册日期2002-08-07
  • 最后登录2006-08-13
  • 粉丝0
  • 关注0
  • 积分0分
  • 威望0点
  • 贡献值0点
  • 好评度0点
  • 原创分0分
  • 专家分0分
沙发#
发布于:2002-08-25 23:52
 :mad:怎么没人帮我解决问题呀?
再次声明:我搞的不是黑客工具,是一个硬盘加密程序,现在绝大部分的问题都解决了。这问题还困扰着我。如果大家觉得这处理方法不方便向大众公布的话,可以发到我email上吗?
dszsun@sina.com
dszsun
驱动牛犊
驱动牛犊
  • 注册日期2002-08-07
  • 最后登录2006-08-13
  • 粉丝0
  • 关注0
  • 积分0分
  • 威望0点
  • 贡献值0点
  • 好评度0点
  • 原创分0分
  • 专家分0分
板凳#
发布于:2002-08-25 19:29
Hellp!!!
有人能帮帮我吗?我是在编一个硬盘加密的程序,就差这一步啦 :D
虽然我找到了代替的办法,但是不比这样做的好。
我查了很多资料了,读查不到。有人能告诉我吗?
dszsun
驱动牛犊
驱动牛犊
  • 注册日期2002-08-07
  • 最后登录2006-08-13
  • 粉丝0
  • 关注0
  • 积分0分
  • 威望0点
  • 贡献值0点
  • 好评度0点
  • 原创分0分
  • 专家分0分
地板#
发布于:2002-08-25 07:46
我把我实验的源码贴出来吧,但它没有输入功能,该加点什么进去才能有输入功能呢?急盼回复。

---------------------vxd(静态的)中的cpp文件---------------
// GETCODE.cpp - main module for VxD TRICK

#define DEVICE_MAIN
#include \"getcode.h\"
Declare_Virtual_Device(GETCODE)
#undef DEVICE_MAIN

//添加变量
PPVOID pp;
char* msg=\"DHL硬盘加密\";
char* cap=\"请输入你的帐号密码:\";
SHELLMessage_THUNK thunk;


//添加shell_exe函数
void _cdecl shell_exe (PVOID p, DWORD flags)
{
struct
{
WORD nCmdShow;
DWORD lpCmdLine;
}winex;
winex.nCmdShow = 3;
winex.lpCmdLine = SHELL_LocalAllocEx (LMEM_STRING, 0, \"Explorer.exe\", pp);
SHELL_CallDll (\"KERNEL\", \"WINEXEC\", sizeof(winex), &winex);
SHELL_LocalFree (winex.lpCmdLine);
}

//添加msgcall函数
void _stdcall msgcall (DWORD resid, PVOID refdata)
{
SHELL_CallAtAppyTime (&shell_exe, 0, 0, 0);
}

//添加getcode函数
void _cdecl getcode (PVOID p, DWORD flags)
{
SHELL_Message ((VMHANDLE) p, MB_OK, msg, cap, msgcall, 0, &thunk);
}
BOOL GetcodeDevice::OnDeviceInit(VMHANDLE hSysVM, PCHAR pszCmdTail)
{

return SHELL_CallAtAppyTime (&getcode, hSysVM, 0, 0);
}

那输入服务的函数怎样编???要调用什么Shell服务?
dszsun
驱动牛犊
驱动牛犊
  • 注册日期2002-08-07
  • 最后登录2006-08-13
  • 粉丝0
  • 关注0
  • 积分0分
  • 威望0点
  • 贡献值0点
  • 好评度0点
  • 原创分0分
  • 专家分0分
地下室#
发布于:2002-08-24 23:17
盼望高手来帮我解决问题呀!
dszsun
驱动牛犊
驱动牛犊
  • 注册日期2002-08-07
  • 最后登录2006-08-13
  • 粉丝0
  • 关注0
  • 积分0分
  • 威望0点
  • 贡献值0点
  • 好评度0点
  • 原创分0分
  • 专家分0分
5楼#
发布于:2002-08-24 19:36
回zxy2845986:
但我用的是vtoolsd,在vtoolsd里能实现吗?我在vtoolsd里已经有办法让他出现一个窗口,点击确定才进去,但还没找到可以让用户输入的办法。该调用什么Shell服务来让用户输入呀!

呵:)我还没学ddk,麻烦大家啦。

开发环境:WIN98,VTOOLSD3.0,VC++6.0,SOFTICE。



zxy2845986
驱动牛犊
驱动牛犊
  • 注册日期2002-08-21
  • 最后登录2016-01-07
  • 粉丝0
  • 关注0
  • 积分1分
  • 威望10点
  • 贡献值0点
  • 好评度0点
  • 原创分0分
  • 专家分0分
6楼#
发布于:2002-08-24 16:25
 ddk 有例子,可以把登陆对话框替换为你自己的对话框,在DDK下找一个“GENA”的例子
游客

返回顶部