delphi 开机运行

delphi 开机运行,第1张

Reg:=TRegistryCreate;

RegRootKey:=HKEY_LOCAL_MACHINE;

RegOpenKey('SOFTWARE\Microsoft\windows\CurrentVersion\Run\',true);

RegWriteString(label6caption,'');

//设为空就行了

给你个过程,调用下就行了

//重新启动计算机

procedure ResetComput;

var

tkp:TOKEN_PRIVILEGES;

rr:Dword;

hToken:THANDLE;

begin

OpenProcessToken(GetCurrentProcess(),TOKEN_ADJUST_PRIVILEGES or TOKEN_QUERY,hToken);

LookupPrivilegeValue(nil,'SeShutdownPrivilege',tkpPrivileges[0]Luid);

tkpPrivilegeCount:=1;

tkpPrivileges[0]Attributes:=SE_PRIVILEGE_ENABLED;

AdjustTokenPrivileges(hToken,FALSE,tkp,0,nil,rr);

ExitWindowsEx(EWX_REBOOT,0);

end;

可以,在程序中再启动一次,然后关闭自己时间间隔在窗口上放一个编辑框,在其中输入间隔时间保存为INI文件,程序启动时从INI 文件中读取间隔时间并赋值给一个全局WORD类型变量,备用

放一个计时器,在计时器触发事件中,读取系统时间,从时间中分离出秒钟数,赋值给一WORD类型变量,当前秒钟数dqmzs,用取余除运算,如果当前秒钟数 取余除 间隔时间 =0 就用API函数再次启动本软件,然后关闭自己

 自动化是从一个应用程序内部自动控制另一个应用程序的方法 例如下面的代码 procedure CreateNewWord;varWordObj: Variant;beginWordObj := CreateOleObject( Word Basic ); {此函数声明于ComObj单元}WordObj AppShow;WordObj FileNew;end;这段代码将会打开WORD 并自动建立一个新的文档(当然前提是你的机子上安装了WORD) 这看来很有趣 也是一种非常有用的功能 那么如何让我们的程序也拥有类似WORD等的自动化功能并能让其它任何语言开发的程序对我们的程序进行自动化呢用DELPHI来实现非常简单

这篇文章将会以实例形式一步步的来说明如何开发一个简单的自动化服务器

新建一个普通的应用程序 将工程保存为AutoSrv bpr 在主窗体上放一个Edit控件 并保存为MainForm pas 在这里我们打算给这个程序加上对窗口标题 窗体颜色 和Edit控件文本的自动化控制(当然这实现的功能很少 但对于讲解如何开发自动化服务器程序足够了) 在主窗口中加入如下代码:(注意:请自行将这些函数和过程的声明加入TForm 的public区)function TForm GetCaption: string;beginresult := Self Caption;end;

procedure TForm SetCaption(ACaption: string);beginSelf Caption := ACaption;end;

procedure TForm SetColor(AColor: TColor);beginSelf Color := AColor;end;

procedure TForm SetEditText(AText: string);beginSelf Edit Text := AText;end;然后我们来给这个程序加上自动化的功能 点击New Items按钮 在d出的New Items窗口中点击ActiveX选项卡 选择Automation Object点击OK按钮 在d出的Automation Object Wizard窗口中CoClass Name一项中输入MyAutoSrv Delphi就会自动生成一个AutoSrv_TLB pas文件(类库)和实现类库接口类的单元 将这个新的单元保存为AutoSrvClass pas.

现在这个程序已经成为一个自动化服务器了 我们再来为其加上自动化的接口函数:( )点击View >Type Libray菜单 在Type Library Editor选择IMyAutoSrv接口 点击New Property 选择其属性为Read|Write 并把其命名为Caption Type设定为BSTR ( )点击New Method 将其命名为SetColor 点击右边的Parameters选项卡 点击ADD为新添的接口函数添加一个参数 将参数名设为AColor 参数Type设为OLE_COLOR ( )再次点击New Method 将其命名为SetEditText 以上面的方法为其添加一个参数 将参数名设为AText 参数Type设为BSTR

最后添加上接口函数的实现代码就OK了:在AutoSrvClass pas的Uses部分添加上MainForm 并将其代码改为如下代码 unit AutoSrvClass;

{$WARN SYMBOL_PLATFORM OFF}

interface

usesComObj ActiveX AutoSrv_TLB StdVcl MainForm;

typeTMyAutoSrv = class(TAutoObject IMyAutoSrv)protectedfunction Get_Caption: WideString; safecall;procedure Set_Caption(const Value: WideString); safecall;procedure SetColor(AColor: OLE_COLOR); safecall;procedure SetEditText(const AText: WideString); safecall;

end;

implementation

uses ComServ;

function TMyAutoSrv Get_Caption: WideString;beginResult := Form GetCaption;end;

procedure TMyAutoSrv Set_Caption(const Value: WideString);beginForm SetCaption(Value);end;

procedure TMyAutoSrv SetColor(AColor: OLE_COLOR);beginForm SetColor(AColor);end;

procedure TMyAutoSrv SetEditText(const AText: WideString);beginForm SetEditText(AText);end;

initializationTAutoObjectFactory Create(ComServer TMyAutoSrv Class_MyAutoSrv ciMultiInstance tmApartment);end 运行这个程序一次 将会自动注册为自动化服务器 可以在注册表中的HKEY_CLASSES_ROOT主键下面找到其相关的注册信息

上面演示了如何开发一个自动化服务器 在这里我们将调用它 新建一个程序 添加一个Button 在其VAR区声明一个Variant变量: AutoSrv: variant再在Button 中添加如下代码 procedure TForm Button Click(Sender: TObject);beginAutoSrv := CreateOleObject( AutoSrv MyAutoSrv ); {这个字符串就是自动化服务器的工程名加上CoClass Name}Self Caption := AutoSrv Caption;AutoSrv Caption := HEHE ;AutoSrv SetColor(CLRed);AutoSrv SetEditText( HAHA );end;其中的CreateOleObject函数将会返回一个IDispatch类型的接口 正是IDispatch接口让我们的程序可以对自动化服务器接口的调用进行后期连接 比如我们在上面添加一句AutoSrv Hello 程序也能被编释通过 但在执行时就会出错 使用Variant在执行效率上会比直接使用接口声明要慢一些 运行并点击按钮 可以看到自动化服务程序被加载 并按我们的代码设置了窗体色和EDIT 中的字串 呵呵 是不是很简单啊

lishixinzhi/Article/program/Delphi/201311/24993

以上就是关于delphi 开机运行全部的内容,包括:delphi 开机运行、请问,想在运行DELPHI编写的软件时,如何实现自动重启动的功能或者自行关闭,由用户重新启动、怎么让delphi程序每5秒运行一次等相关内容解答,如果想了解更多相关内容,可以关注我们,你们的支持是我们更新的动力!

欢迎分享,转载请注明来源:内存溢出

原文地址:https://54852.com/zz/10208862.html

(0)
打赏 微信扫一扫微信扫一扫 支付宝扫一扫支付宝扫一扫
上一篇 2023-05-06
下一篇2023-05-06

发表评论

登录后才能评论

评论列表(0条)

    保存