关于一段while(1)改为do{}while(...);代码
2010-05-17 17:39
316 查看
首先声明一下,写这篇文章没有什么目的,只是确实太过碰巧,为什么?
本社区有一段《关于do{}while()的代码PK》(地址就不提供了,相信很多人也看过,自己搜索一下吧)的讨论,看后我觉得很搞笑,就一个小问题,大伙的讨论还很积极的;虽说本人对一些意见不敢苟同,但工作重要,就简单评论了一下,然后继续工作;
很快工作要实现一个在windows自动启动应用程序,相信很多人就会想到写注册表,没错,我找到下面这段代码:
/******************
char * strRegName[5] ={"SOFTWARE","Microsoft","Windows","CurrentVersion","Run"};
HKEY hKey = HKEY_LOCAL_MACHINE;
HKEY hSubKey;
int indx = 0;
long lRC;
char svBuffer[256];
char strFileName[] = "YourProgram.Exe";
DWORD dwSize = 256;
BOOL bReg = FALSE;
while(1)
{
lRC = RegOpenKeyEx(hKey, strRegName[indx], 0,
KEY_READ | KEY_WRITE, &hSubKey) ;
if(lRC != ERROR_SUCCESS)
{
RegCloseKey(hKey);
return -1;
}
hKey = hSubKey;
indx++;
if (indx >= 5)
break;
}
lRC = RegQueryValueEx(hKey, "YourProgram", NULL, NULL,
(BYTE *)svBuffer, &dwSize);
if (lRC != ERROR_SUCCESS)
{
lRC = RegSetValueEx (hKey, "YourProgram", 0, REG_SZ,
(BYTE *)strFileName,strlen(strFileName));
bReg = FALSE;
}
else
bReg = TRUE;
黑体是我加的,地址在这:http://topic.csdn.net/t/20020614/20/804665.html;我记得很多年前也是用的类似这段代码,可以实现我想要的功能。
第一感觉我就觉得这个while (1)在这里,怎么看就怎么别扭,就简单改了一下,代码如下:
do
{
lRC = RegOpenKeyEx(hKey, strRegName[indx], 0,
KEY_READ | KEY_WRITE, &hSubKey) ;
if(lRC != ERROR_SUCCESS)
{
RegCloseKey(hKey);
return -1;
}
hKey = hSubKey;
} while (++indx < 5);
因为是别人的代码,功能单一,也就懒得去做什么优化,总体改了之后减少了几行代码,而且个人觉得更直观,好理解;
这就是整个的经过,哈哈!
再次声明一下,写本篇文章没有什么想法,有的也是觉得好玩,大家或许可以学习一下如果实现自动运行应用程序该功能。
本社区有一段《关于do{}while()的代码PK》(地址就不提供了,相信很多人也看过,自己搜索一下吧)的讨论,看后我觉得很搞笑,就一个小问题,大伙的讨论还很积极的;虽说本人对一些意见不敢苟同,但工作重要,就简单评论了一下,然后继续工作;
很快工作要实现一个在windows自动启动应用程序,相信很多人就会想到写注册表,没错,我找到下面这段代码:
/******************
char * strRegName[5] ={"SOFTWARE","Microsoft","Windows","CurrentVersion","Run"};
HKEY hKey = HKEY_LOCAL_MACHINE;
HKEY hSubKey;
int indx = 0;
long lRC;
char svBuffer[256];
char strFileName[] = "YourProgram.Exe";
DWORD dwSize = 256;
BOOL bReg = FALSE;
while(1)
{
lRC = RegOpenKeyEx(hKey, strRegName[indx], 0,
KEY_READ | KEY_WRITE, &hSubKey) ;
if(lRC != ERROR_SUCCESS)
{
RegCloseKey(hKey);
return -1;
}
hKey = hSubKey;
indx++;
if (indx >= 5)
break;
}
lRC = RegQueryValueEx(hKey, "YourProgram", NULL, NULL,
(BYTE *)svBuffer, &dwSize);
if (lRC != ERROR_SUCCESS)
{
lRC = RegSetValueEx (hKey, "YourProgram", 0, REG_SZ,
(BYTE *)strFileName,strlen(strFileName));
bReg = FALSE;
}
else
bReg = TRUE;
黑体是我加的,地址在这:http://topic.csdn.net/t/20020614/20/804665.html;我记得很多年前也是用的类似这段代码,可以实现我想要的功能。
第一感觉我就觉得这个while (1)在这里,怎么看就怎么别扭,就简单改了一下,代码如下:
do
{
lRC = RegOpenKeyEx(hKey, strRegName[indx], 0,
KEY_READ | KEY_WRITE, &hSubKey) ;
if(lRC != ERROR_SUCCESS)
{
RegCloseKey(hKey);
return -1;
}
hKey = hSubKey;
} while (++indx < 5);
因为是别人的代码,功能单一,也就懒得去做什么优化,总体改了之后减少了几行代码,而且个人觉得更直观,好理解;
这就是整个的经过,哈哈!
再次声明一下,写本篇文章没有什么想法,有的也是觉得好玩,大家或许可以学习一下如果实现自动运行应用程序该功能。
相关文章推荐
- 关于do{}while()的代码讨论
- 由一段小代码引发的关于“表达式”和“语句”的探讨
- 关于asp里面的(do while loop )(while wend )(for next)运行的时间
- Cocos2D-x中关于do{}while(0)和CC_BREAK_IF的用法
- something with buffer 有意思的缓冲区:关于setbuf()一段很有意思的代码
- opencv关于摄像机标定的一段代码
- 一段程序代码的修改,将原来按分钟活动的方式改为秒级滑动,可以提供数据分析的精度
- 使用do...while的方法输入一个月中所有的周日(实例代码)
- 一段代码的欣赏--------关于super.xx()方法的使用
- 一段关于浏览器兼容的事件定位代码,经过测试!
- cocos 3.X 关于代码实现一段动画的播放 20180312 day4
- 一段关于自增1输出的垃圾代码
- 关于输出null对象,以及try/catch/finally比较好玩的一段代码
- 一段关于在nodejs 中处理cookie的代码
- 关于宏中使用do{}while(0)的作用
- 关于JAVA do--while的简单示例说明记录
- 关于hashtable线程安全的一个关键字和一段代码
- if,while和do..while语句的汇编形式代码
- 从一段经典错误代码说起——关于局部变量指针和函数传参的问题分析
- 使用do...while的方法输入一个月中所有的周日(实例代码)