找回密码
 立即注册
搜索
热搜: 活动 交友 discuz
查看: 27|回复: 1

编程的进来顶顶啊

[复制链接]

36

主题

1031

回帖

8万

积分

新手上路

积分
81310
发表于 2004-8-4 06:59:32 | 显示全部楼层 |阅读模式
二、 利用VC++编程实现程序自动启动的编程实例。 微软公司提供的VC++ 6.0程序开发工具功能非常强大。在VC++ 6.0中同时具有对注册表和*.INI文件操作的函数。笔者经过一段时间的摸索,成功的利用VC++ 6.0开发成功了一个小软件,该软件利用系统自动启动程序的原理,将原来需要的繁琐的手动工作转变成成计算机的自动设置工作,使系统自动启动相关程序的设置工作变的非常简单可靠。 1.程序功能概述: 程序的主界面是对话框,在主界面对话框中有编辑框(EDIT BOX),圆形按钮(RADIO BUTTON)和普通按钮(COMMON BUTTON)组成。操作者通过向编辑框中添加需要自动加载的程序的全文件名(也可以通过浏览按钮来完成),然后通过对两个RADIO BUTTON的选择,进而完成对加载方式的选择(是选用注册表方式还是选者修改WIN.INI文件的方式),最后操作者通过点击"应用"按钮实现程序的自动加载功能,同时系统会提示操作者是否将操作计算机重新启动,以便观察程序的具体功能完成情况。程序在WIN98中调试运行正常。 2.编码说明: ① 浏览按钮的功能代码: void CAutoloadDlg::OnLiulan() { // TOD Add your control notification handler code here CFileDialog fileDlg(TRUE,_T("EXE"),_T("*.exe"),OFN_HIDEREADONLY|OFN_OVERWRITEPROMPT,(_T("Executable Files (*.exe) |*.exe ||")));//显示打开文件的对话框 if(fileDlg.DoModal()==IDOK)//当操作者选择OK时,程序,取得选择文//件的全路径名(包括文件的路径及文件名称),并将相应的数值传输给相//关的控件变量。 { m_filename=fileDlg.GetPathName();//m_filename是EDIT BOX控件的相应的变量。 UpdateData(FALSE);//向将变量中的数值传输给控件显示出来。 } } ② 应用按钮的功能代码: void CAutoloadDlg::OnOK() { // TOD Add extra validation here LPCTSTR title; UpdateData(TRUE); if(m_title.IsEmpty())//如果操作者没有填写要设置项的标题,程序显示对话框,提示操作者进行相关的填写。 { MessageBox(_T("Please input the title name")); return; } title=m_title; if(m_filename.IsEmpty())//如果操作者没有选择要设置的程序的全路径文//件名,程序显示对话框,提示操作者进行相关的选择。 { MessageBox(_T("Please input the programe file name")); return; } if(IsDlgButtonChecked(IDC_RADIO1))//如果操作者选择注册表方式,程序修改系统的注册表。 { HKEY hKey; LPCTSTR data_Set="SoftwareMicrosoftWindowsCurrentVersionRun";//设置注册表中相关的路径 Longret0=(::RegOpenKeyEx(HKEY_LOCAL_MACHINE,data_Set,0,KEY_WRITE,&hKey));//打开注册表中的相应项 if(ret0!=ERROR_SUCCESS) { MessageBox("错误0"); } int length=m_filename.GetLength()+1;//将控件中的内容进行转换,以达到注册表修改函数的参数调用需求。 for(int i=0;i{ if(m_filename==92) length=length+1; } DWORD cbData=length; LPBYTE lpb=new BYTE[length]; int j=0; for(i=0;i{ if(m_filename==92) { lpb[j]=92; j++; lpb[j]=92; j++; } else { lpb[j]=m_filename; j++; } } lpb[j]=0; long ret1=(::RegSetvalueEx(hKey,title,NULL,REG_SZ,lpb,cbData));//将相关的信息写入注册表。 if(ret1!=ERROR_SUCCESS)//判断系统的相关注册是否成功? { MessageBox("错误1"); } delete lpb; ::RegCloseKey(hKey);//关闭注册表中的相应的项 } if(IsDlgButtonChecked(IDC_RADIO2))//如果操作者选择用修改WIN.INI文件的方式 { LPCTSTR filename; filename=m_filename; WritePrivateProfileString(_T("windows"),_T("load"),filename,_T("c:windowswin.ini")); WritePrivateProfileString(_T("windows"),_T("run"),filename,_T("c:windowswin.ini")); } yzdlg.DoModal();//显示对话框,提示操作者是否需要重新启动计算机,以便验证程序的功能。 CDialog::OnOK(); } ③ 重新启动按钮的功能代码: void yanzheng::OnOK() { OSVERSIONINFO OsVerInfo;//保存系统版本信息的数据结构 OsVerInfo.dwOSVersionInfoSize=sizeof(OSVERSIONINFO); GetVersionEx(&OsVerInfo);//取得系统的版本信息 if(OsVerInfo.dwPlatformId==VER_PLATFORM_WIN32_WINDOWS) { ExitWindowsEx(EWX_REBOOT,0);//重新启动计算机 } CDialog::OnOK(); }
海的思念绵延不绝 终于和天在地平线交会 爱如果走得够远 应该也会跟幸福相见 有时候你不知道自己有多少潜力,但是不段的努力,就会给自己带来惊喜 努力加油~~~~~~~~~~~~~~~~~~~~~~
回复

使用道具 举报

128

主题

2448

回帖

19万

积分

新手上路

积分
194464
发表于 2004-9-9 03:51:03 | 显示全部楼层

看不懂

但顶

[glow=255,red,2][url=http://www.ccec.cn/nbbs/dispbbs.asp?boardID=23&ID=6231&page=1]诚邀各大水鬼加入“似水流年--灌水独立师”(点击加入)[/url][/glow][glow=255,blue,2]灌水独立师师长 1#人物 ===〉〉走召弓虽[/glow]
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

QQ|Archiver|手机版|小黑屋|似水流年

GMT+8, 2026-9-4 14:07 , Processed in 0.026858 second(s), 22 queries .

Powered by Discuz! X5.0

© 2001-2026 Discuz! Team.

快速回复 返回顶部 返回列表