您的位置:首页 > 编程语言

关于一段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);



因为是别人的代码,功能单一,也就懒得去做什么优化,总体改了之后减少了几行代码,而且个人觉得更直观,好理解

这就是整个的经过,哈哈!

再次声明一下,写本篇文章没有什么想法,有的也是觉得好玩,大家或许可以学习一下如果实现自动运行应用程序该功能。
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: