18岁一个月啪几次正常:让VFP的程序在Windows启动后自动运行

来源:百度文库 编辑:中财网 时间:2024/05/02 02:24:34
在编译完VFP程序之后,可能你马上会运行VFP自带的安装向导向其他用户来发布你的应用程序。但是,由于VFP自带的发布向导是预先做好了的,在许多方面并不能如你愿。比如,利用VFP的安装向导,你不可能将你的应用程序放入Windows启动组中让VFP程序在Windows启动时自动运行。如果想实现程序自动运行,那该怎么办呢?

  一、编程原理

  我们知道,系统在启动时自动运行哪些程序主要是取决于启动组内容和系统注册表的设定。修改过注册表的朋友对HKEY—LOCAL—MACHINE\Software\Microsoft\windows\CurrentVersion\run下的内容并不会感到陌生,该键值下的内容决定了系统在启动时所要运行的程序。因此,我们通过修改注册表,就能够随心所欲地决定在Windows启动时所自动运行的程序。

  同样,如果在VFP的程序设计中对系统的注册表进行修改,在HKEY—LOCAL—MACHINE\Software\Microsoft\windows\CurrentVersion\run下新添键值,让VFP程序在Windows启动时自动运行是可实现的。但是利用VFP自身提供的命令是无法修改注册表的,必须调用API函数

  在Windows的各种动态链接库中,我们能够轻易地找到修改注册表的相关函数,如RegCreateKeyEx(新建键值)、 RegSetValue(设定键值)之类的。如果在VFP程序中使用RegSetValue函数来在RUN键值中加入你想自动运行的VFP应用程序的名称,那么Windows在启动时就能够如你所愿。通过查看MSDN可知,RegSetValue的调用格式如下(用C语言表示):

  LONG RegSetValue(HKEY hKey, LPCTSTR lpSubKey,DWORD dwType, LPCTSTR lpData, DWORD cbData)

  其中各个参数的含义如下:

  hKey: 注册表中的预置主键(该参数的类型为整数型)

  lpSubKey: 欲修改主键的名称

  dwType: 修改后键值的类型(该函数只支持字符型)

  LpData: 写入主键的字符串

  cbData: 写入字符串的长度如果操作成功,返回值为0。

  二、程序代码

  假如你已新建了一项目(项目的主入口程序为main.prg)并生成了VFP应用程序TEST.EXE,然后打开main.prg,往main.prg加入修改注册键值的代码即可。下面是用VFP修改注册表的具体实例(一个完整的main.prg程序代码):

  #define HKEY—LOCAL—MACHINE -2147483646

  *在WindowsAPI编程中,HKEY—LOCAL—MACHINE 被预置为0x80000002,即十进制的-2147483646

  clear menu all

  set sysme off

  注册API函数

  Declare Integer RegSetValue In Win32API integer nHkey,STRING cSubKey, integer dwType,string@ lpDatainteger,integer@ count

  /newValue即为编译成功后的EXE文件,再次编译时,必须保证项目所生成的.exe文件名为newValue的值/

  newValue=″D:\database\TEST.exe″

  i=len(newValue)

  nResult=RegSetValue(HKEY—LOCAL—MACHINE,″Software\Microsoft\windows\CurrentVersion\run″,1,@newvalue,@i)

  if nResult#0

  wait wind ″修改注册表失败!″

  endi

 调用表单

  do form wb.scx

  read event

  clea even

  quit

  运行上述程序之后,打开注册表,进入HKEY—LOCAL—MACHINE\Software\Microsoft\windows\CurrentVersion\run,你会发现在该主键下新添了一项键值,其值正是程序写入的内容“D:\database\TEST.exe”。

  该程序设计的关键是:在注册表中的RUN下面写入VFP应用程序的名称。所以,你应事先知道编译后VFP程序的名称,否则,往注册表中写入了不正确的程序名,在Windows启动时,会提示你找不到应用程序。
怎么让一个程序在WINDOWS(XP)启动的时候不自动运行啊? windows的自动启动程序 如何让程序启动后自动最小化 有社么办法让windows在启动时让一个程序自动最小化运行 怎样让一些程序不自动启动?如windows message 怎么让机器开机后不自动启动windows messenger? 怎样让某个程序开机后 自动启动 在开机后有自动启动的程序(在开始菜单中的启动中没有)怎样不让起自动启动? 怎样让一些程序在开机后不自动运行?开机启动程序我已删除的只剩输入法了! 如何让一个自动启动的程序自动最小化运行? 怎样才能把开机自动启动的程序关掉呢?让它在开机的时候不自动启动。 在windows-xp系统上如何设置才能阻止不需要的程序自动启动? 如何在启动WINDOWS时禁止自动运行程序的运行 如何让程序在Windows XP启动期间运行 能不能让电脑在启动时就自动运行u盘里的某个程序? 怎样消除windows的开机自动启动程序? 请问怎么让Windows自动的在网上寻找打开某个文件的程序 如何让开机启动的程序自动转入后台 我想问一下,电脑在启动的时候自动的启动一些程序,怎么样才能让他不自动启动呢。 怎么能让迅雷在网络连接后自动启动 哪个高人告诉我 如果想让WINDOWS启动就自动运行一个程序,怎么弄?? 开机时总是自动启动WINDOWS内置的MSN,如何让它开机不自动启动? 我的电脑启动后有一个文件夹自动到桌面上,在启动程序里是空的怎么办? 怎么实现让程序在一段时间后自动按按钮