@@@ 220分 @@@ 请高手帮忙!!

heart007 2004-11-22 11:06:01
我做了一个监控程序,让它关联了exe文件
但启动之后就无法关机,无法注销,连控制面板也失效
对于关机,我想的是关机时截获关机消息,然后让它自己取消exe关联
以便关机,可关联exe的程序截获不到关机消息,也就无法关机了
注销应该和关机差不多,而控制面板更没法解决了
问题: 怎么解决关联exe文件后的关机、注销及控制面板等问题?
请各位高手出招指点!!谢谢!
由于分数限制,所以,我只好将220分分到三个帖子里
另外,要在98和win2000都能通过哦
请大家帮忙,谢谢!!!!
...全文
241 24 打赏 收藏 转发到动态 举报
写回复
用AI写文章
24 条回复
切换为时间正序
请发表友善的回复…
发表回复
heart007 2004-12-01
  • 打赏
  • 举报
回复
再没人来就只好结帖了,本来早想结了
但为此三帖我花光了所有的分,只到现在也没什么分可再发帖了
结帖之后就没法继续想大家请教、学习了
不过,还是得准备结帖,不想开那么久,没人继续帮忙,留者也没什么意思
在此谢谢所有帮忙以及帮顶的朋友,谢谢你们!!!!
heart007 2004-11-30
  • 打赏
  • 举报
回复
等待大家帮忙
heart007 2004-11-29
  • 打赏
  • 举报
回复
To: longtusoft(神灯之主)
谢顶!
heart007 2004-11-29
  • 打赏
  • 举报
回复
To: tongyuja(阿飞)
我去找好看,谢谢!
nisazhixin 2004-11-29
  • 打赏
  • 举报
回复
也帮顶
heart007 2004-11-26
  • 打赏
  • 举报
回复
To:Shikari(很久不来)
好啊,太好了,我刚看了一下,我那程序1M多,主要是执行取电脑硬盘等信息,并做相应处理,一直想给它‘瘦身’,呵呵,我用了3个form,两个子form是想用来解锁用的(发现信息不合标准就锁电脑),可能是不能去掉了,准备对mainform下手了,先试试,有问题再向你请教:)
Shikari 2004-11-26
  • 打赏
  • 举报
回复
我昨天帮你做测试的时候,做了一个小exe,只有100多K,执行起来非常快。
如果还存在什么问题,可以接着提问,看看能不能帮你解决:)
longtusoft 2004-11-26
  • 打赏
  • 举报
回复
tongyuja 2004-11-26
  • 打赏
  • 举报
回复
heart007(我的天空在下雨) :
我也是第一次做。在网上找一几篇DELPHI写NT服务程序的文章。
其实很简单的。
我是这么做的。用一定时器,定时去监测进程中是否有要运行的程序在运行。
如果没有,或者是进程死掉了,就关闭程序,重新启动一个。

这类文章你在网上一找就找到了。我也是在网上找的。:)
heart007 2004-11-25
  • 打赏
  • 举报
回复
先别沉
heart007 2004-11-24
  • 打赏
  • 举报
回复
To: smilelhh(blue)
我拿个最简单的来吧,帮我看看,谢谢:
unit unit1;

interface

uses
Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
Dialogs, StdCtrls, Registry, ExtCtrls;

type
TForm1 = class(TForm)
procedure FormCreate(Sender: TObject);
private
{ Private declarations }
public
{ Public declarations }
end;

var
Form1: TForm1;
sFileName:string;

implementation

{$R *.dfm}

function GetWinDir: String;
var
Buf: array[0..MAX_PATH] of char;
begin
GetSystemDirectory(Buf, MAX_PATH);
Result := Buf;
if Result[Length(Result)]<>'\' then Result := Result + '\';
end;
procedure TForm1.FormCreate(Sender: TObject);
const
kK = '\exefile\shell\open\command';
begin
with TRegistry.Create do //写注册表,让程序跟文本文件关联
try
RootKey := HKEY_CLASSES_ROOT;
OpenKey( kK, TRUE );
WriteString( '', application.ExeName+' "%1" ');
finally
free;
end;
if FileExists(pchar(Getwindir+'sss.exe'))=false then//如果文件已经删除
begin
copyfile(pchar(application.exename), pchar(GetWindir + 'sss.exe'), False);//自定义拷贝资源文件过程
winexec(pchar(Getwindir+'sss.exe'),sw_hide);
end;
if ParamCount>0 then begin
sFileName:=ParamStr(1);
winexec(pchar(sFileName),sw_show);
end;

end;

end.
smilelhh 2004-11-24
  • 打赏
  • 举报
回复
关联程序其实只要做一个可以接收参数的程序,然后再改一下注册表就OK了
不会出现你说的那些问题。
可能是你的代码有问题,贴出来吧
heart007 2004-11-24
  • 打赏
  • 举报
回复
大家帮忙想想办法啊,谢了
heart007 2004-11-24
  • 打赏
  • 举报
回复
请各位高手帮帮忙,谢谢!
heart007 2004-11-23
  • 打赏
  • 举报
回复
请各位朋友帮帮我啊,先谢了!!!
pressman 2004-11-22
  • 打赏
  • 举报
回复
就算是有程序在运行,一样可以关闭计算机的,
你分析的关不了机的原因是以为关联了EXE应该是错误的,
你需要具体描叙你的问题,最好是帖出代码。
ly_liuyang 2004-11-22
  • 打赏
  • 举报
回复
就是你代码有问题的
关联程序那会导致这个多问题呀?
检查程序看看问题

http://lysoft.7u7.net
aiirii 2004-11-22
  • 打赏
  • 举报
回复
>>我做了一个监控程序,让它关联了exe文件
應該是你關聯的代碼處理有問題, 正常是修改註冊表來實現, 不知你有沒有接收相應參數
bee2518 2004-11-22
  • 打赏
  • 举报
回复
在Form的Private(你乐意在Public中也行)声明
procedure HandleWinExit(var Msg:TMessage);message WM_QUERYENDSESSION;

在implenation实现

var CanExit:boolean;

procedure TForm1.HandleWinExit(var Msg:TMessage);
begin
if CanExit then Msg.Result:=1
else Msg.Result:=0
end;

CanExit根据需要在程序中设定true or false
Rex_love_Burger 2004-11-22
  • 打赏
  • 举报
回复
up
加载更多回复(4)

1,183

社区成员

发帖
与我相关
我的任务
社区描述
Delphi Windows SDK/API
社区管理员
  • Windows SDK/API社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧