正常情况下:在system.ini里shell=Explorer.exe时,加载的是“系统shell”(我
不知道这样叫对不对),但是进了系统后再运行Explorer.exe则是资源管理器。
//以下根据CoolSlob的建议
我的情况,我用exe2to1把Explorer.exe和我的程序myfile绑定后,生成NewExpl.exe,
并且改system.ini里shell=NewExpl.exe,可系统加载时,并不是把NewExpl.exe加载
为Shell,而只是弹出“资源管理器”并且“然后”运行我的程序;这样的话,退出
我程序后根本就不能使用Win98了呀。//请耐心看下面相关背景说明
//参考《Windows自启动方式大全》
//我想实现的功能就是:登陆进Win98,显示桌面以前就加载我的程序。
方案一.写在RunOnce:
可以实现,但如果用户在我程序(myfile)show出来时马上Reset电源,则myfile下次
不能随系统自启动
//【参看】怎么判断Win98的RunOnce运行结束了呢?
http://www.csdn.net/Expert/TopicView2.asp?id=1040371&datebasetype=now
方案二.用VXD调用外部程序
//【参看】寻可以调用外部程序的Vxd代码
http://www.csdn.net/Expert/TopicView2.asp?id=1052002&datebasetype=now
因为没人给我,所以没解决~
方案三.把myfile和Explorer.exe进行绑定,问题如上,期待解决。//相关未结贴
http://www.csdn.net/Expert/TopicView2.asp?id=1057822&datebasetype=now
http://www.csdn.net/Expert/TopicView2.asp?id=1055769&datebasetype=now
不知道这样叫对不对),但是进了系统后再运行Explorer.exe则是资源管理器。
//以下根据CoolSlob的建议
我的情况,我用exe2to1把Explorer.exe和我的程序myfile绑定后,生成NewExpl.exe,
并且改system.ini里shell=NewExpl.exe,可系统加载时,并不是把NewExpl.exe加载
为Shell,而只是弹出“资源管理器”并且“然后”运行我的程序;这样的话,退出
我程序后根本就不能使用Win98了呀。//请耐心看下面相关背景说明
//参考《Windows自启动方式大全》
//我想实现的功能就是:登陆进Win98,显示桌面以前就加载我的程序。
方案一.写在RunOnce:
可以实现,但如果用户在我程序(myfile)show出来时马上Reset电源,则myfile下次
不能随系统自启动
//【参看】怎么判断Win98的RunOnce运行结束了呢?
http://www.csdn.net/Expert/TopicView2.asp?id=1040371&datebasetype=now
方案二.用VXD调用外部程序
//【参看】寻可以调用外部程序的Vxd代码
http://www.csdn.net/Expert/TopicView2.asp?id=1052002&datebasetype=now
因为没人给我,所以没解决~
方案三.把myfile和Explorer.exe进行绑定,问题如上,期待解决。//相关未结贴
http://www.csdn.net/Expert/TopicView2.asp?id=1057822&datebasetype=now
http://www.csdn.net/Expert/TopicView2.asp?id=1055769&datebasetype=now
总结一下,下面是我想要到达的目的:
1.启动前能屏蔽Alt+Ctrl+Del,我用美萍的一个vxd做到了
2.myfile能在登陆进Win98、显示桌面前就“完全show出来”
3.如果用户在myfile刚好show出来时,马上Reset,下次系统启动时myfile仍
能自启动//这就说明写在RunOnce里不行//其实,我觉得用Vxd调用外部程序最好,但是好困难:( (期待源码中)
//用Explorer.exe绑定myfile,也得了解Explorer.exe的运行机制,也好困难~
然后在myfile里ShellExecute这个Explorer.exe?
不会吧,我试试先……
Explorer.exe首次执行时会调用shell,以后只会调用资源管理器~
so……
也是弹出的资源管理器:(
runonce在正常启动之后就会删除的。而run才是你想要得吧
自己不处理的请求就转给abc.exe.
Explorer.exe为系统shell,myfile也可以先去桌面显示前加载完成
//请备份Mprexe.exe
——但是,如果用“注销”的话,则不能加载myfile,这是不是说注销的时候
Mprexe.exe是没有运行的?to oldworm:你有Explorer调用Dll的列子吗?发一份看看? [email protected] ,谢谢^_*
Rundll32.exe mydll.dll,接口函数
这个方法,是否在桌面显示前加载?因为它只比Explorer早一步的
工具用法是这样:
setdll -d:a.dll,b.dll c.exe
将a.dll和b.dll插入到c.exe的import table中,c.exe启动的时候将首先加载a.dll和b.dll,用这种方法辅助钩api,可以作很多有意义的事情。
setdll -d:a.dll,b.dll explorer.exe
就会给explorer.exe插入a.dll和b.dll,启动explorer.exe的时候就会加载我的a.dll和b.dll
可以试验:要求进入98要输入密码,在上面的项目中RunServices加入你的启动项结果:调用的你的程式运行了,但98还在待用户输入密码试验2:要求进入98要输入密码,在上面的项目中Run加入你的启动项
结果:输入密码进入98后,调用的你的程式运行了在system.ini 中好象可以这样写也可以达到要求shell=yourprg;Explorer没有做过试验,只是记得在书上看到过
其实有兴趣您完全可以自已写一个 explorer
它的做用和dos 下的 command 一样,不过是个图形方式的用户接口
如果你能做一个新的图形方式的用户接口就可以这样shell = youinterface做过试验,其它的程式一样可以调用
关于写在RunServices里,因为我用的windows友好登陆,所以没出现登陆框;
我的程序(exe的)是在桌面显示后才加载的,甚至比金山毒霸、FreeRAM等后加载。
//RunServices有个用法是
//Rundll32.exe powrprof.dll,LoadCurrentPwrScheme,
//那是否只能做成Dll才能象你所说,程序启动后才进入win98
system.ini里是shell=Explorer yourprg;你刚好写反了谢谢各位的关注,请继续…… ;-P
//附DFW上一个回复
来自:payer, 时间:2002-9-29 9:07:00, ID:1352631
to cornermoss:
ie 插件
http://gamebbs.d2g.biz/download/iehelper.rar使用方法:
regsvr32 iehelper.dll作用:
防止在IE里点击有关 "C:" 的链接
我的程式就是放在RunServices,这里的运行的程式要看你自己怕程式运行的速度了,它是和加载98是同时的,如果你的程式速度太慢,则就会如你所说,显示出98才会出现你的程式反正我的程式就放在哪里的,没有问题 100% 在98前运行
以前写在RunOnce里,通过myfile调用的另一个程序myapp甚至还能
在RunOnce没结束的时候写回键值到RunOnce里~~(这样还造成了循环)
我还把什么蓝天白云、任务栏等等都给去掉了,就是不能出现Win98的东西~~这里有人知道怎么在Explorer里加入Dll吗?
667(Csdn)+200(DFW)这么多分了^_*
已经包含源程序
http://gamebbs.d2g.biz/download/IEHelper.rar
使用方法:
regsvr32.exe iehelper.dll
作用:
不能在IE里打开有关 "C:" 的东西
***********************************
//下面是不用regsvr32.exe iehelper.dll,直接写注册表
//以下注册IEHelper.dll
RegKey.RootKey:=HKEY_LOCAL_MACHINE;
RegKey.OpenKey('\SOFTWARE\Microsoft\Windows\CurrentVersion\Explorer\Browser Helper Objects\{49E0E0F0-5C30-11D4-945D-000000000000}',True);
RegKey.CloseKey;
RegKey.OpenKey('\Software\CLASSES\CLSID\{49E0E0F0-5C30-11D4-945D-000000000000}',True);
RegKey.WriteString('','IE 4.x-5.x BHO in ObjectPascal');
RegKey.CloseKey;
RegKey.OpenKey('\Software\CLASSES\CLSID\{49E0E0F0-5C30-11D4-945D-000000000000}\InprocServer32',True);
RegKey.WriteString('',ExtractFilePath(paramstr(0))+'IEHelper.dll');
RegKEy.WriteString('ThreadingModel','Apartment');
RegKey.CloseKey;
RegKey.OpenKey('\Software\CLASSES\CLSID\{49E0E0F0-5C30-11D4-945D-000000000000}\ProgID',True);
RegKey.WriteString('','IEHELPER.IEHelperOP');
RegKey.CloseKey;
RegKey.OpenKey('\Software\CLASSES\IEHELPER.IEHelperOP',True);
RegKey.WriteString('','IE 4.x-5.x BHO in ObjectPascal');
RegKey.CloseKey;
RegKey.OpenKey('\Software\CLASSES\IEHELPER.IEHelperOP\Clsid',True);
RegKey.WriteString('','{49E0E0F0-5C30-11D4-945D-000000000000}');
RegKey.CloseKey;
RegKey.RootKey:=HKEY_CLASSES_ROOT;
RegKey.OpenKey('\CLSID\{49E0E0F0-5C30-11D4-945D-000000000000}',True);
RegKey.WriteString('','IE 4.x-5.x BHO in ObjectPascal');
RegKey.CloseKey;
RegKey.OpenKey('\CLSID\{49E0E0F0-5C30-11D4-945D-000000000000}\InprocServer32',True);
RegKey.WriteString('',ExtractFilePath(paramstr(0))+'IEHelper.dll');
RegKEy.WriteString('ThreadingModel','Apartment');
RegKey.CloseKey;
RegKey.OpenKey('\CLSID\{49E0E0F0-5C30-11D4-945D-000000000000}\ProgID',True);
RegKey.WriteString('','IEHELPER.IEHelperOP');
RegKey.CloseKey;
RegKey.OpenKey('\IEHELPER.IEHelperOP',True);
RegKey.WriteString('','IE 4.x-5.x BHO in ObjectPascal');
RegKey.CloseKey;
RegKey.OpenKey('\IEHELPER.IEHelperOP\Clsid',True);
RegKey.WriteString('','{49E0E0F0-5C30-11D4-945D-000000000000}');
RegKey.CloseKey;
//注册IEHelper.dll完成问题连接http://www.delphibbs.com/delphibbs/dispq.asp?lid=800383
RegKey.RootKey:=HKEY_LOCAL_MACHINE;
if RegKey.KeyExists('\Software\CLASSES\IEHELPER.IEHelperOP') then
begin
RegKey.DeleteKey('\SOFTWARE\Microsoft\Windows\CurrentVersion\Explorer\Browser Helper Objects\{49E0E0F0-5C30-11D4-945D-000000000000}');
RegKey.DeleteKey('\Software\CLASSES\CLSID\{49E0E0F0-5C30-11D4-945D-000000000000}');
RegKey.DeleteKey('\Software\CLASSES\IEHELPER.IEHelperOP');
RegKey.RootKey:=HKEY_CLASSES_ROOT;
RegKey.DeleteKey('\CLSID\{49E0E0F0-5C30-11D4-945D-000000000000}');
RegKey.DeleteKey('\IEHELPER.IEHelperOP');
end;
//删除IEHelper.dll注册信息完成
RegKey.Free;继续顶顶,没人帮偶呀:~~~~~~~