C++实现添加桌面右键新建菜单

2025-05-27 0 43

对于程序员来说,新建一个cpp文件是再频繁不过的事情了。

为了方便,我们习惯在桌面右键新建文件,而不是新建一个文本文档,然后修改后缀名。

百度谷歌查询了一下,终于知道如何添加注册表。

手痒,抽出时间用cpp写了一个程序,方便以后操作。

客户需求是永远无法满足的,经同学测试,陆续写了三个版本。

接下来直接贴代码~

第一个版本,只能添加c、cpp、java三种后缀。

?

1

2

3

4

5

6

7

8

9

10

11

12

13

14

15

16

17

18

19

20

21

22

23

24

25

26

27

28

29

30

31

32

33

34

35

36

37

38

39

40

41

42

43

44

45

46

47

48

49

50

51

52

53
/*

* Author: Haipz

* School: HDU

* File Name: registry1.0.cpp

*/

#include <cstdio>

#include <cmath>

#include <ctime>

#include <cctype>

#include <cstring>

#include <cstdlib>

#include <climits>

#include <cfloat>

#include <iostream>

#include <vector>

#include <stack>

#include <queue>

#include <set>

#include <map>

#include <algorithm>

using namespace std;

char s[1024], buffer[128], result[1024*4];

void work_1() {

system("reg add \\"HKEY_CLASSES_ROOT\\\\.c\\\\ShellNew\\" /v \\"NullFile\\" /t REG_SZ");

}

void work_2() {

system("reg add \\"HKEY_CLASSES_ROOT\\\\.cpp\\\\ShellNew\\" /v \\"NullFile\\" /t REG_SZ");

}

void work_3() {

system("reg add \\"HKEY_CLASSES_ROOT\\\\.java\\\\ShellNew\\" /v \\"NullFile\\" /t REG_SZ");

}

int main() {

printf("Add registry for C, C++ and Java\\n");

printf("Author: Haipz\\nSchool: HDU\\n");

printf("1 for C;\\n2 for C++;\\n3 for Java.\\n");

printf("Example: 12 to add C and C++.\\n");

printf("Please make choice(s): ");

gets(s);

for (int i = 0; s[i] != '\\0'; ++i) {

printf("Working...\\n");

if (s[i] == '1') work_1();

else if (s[i] == '2') work_2();

else if (s[i] == '3') work_3();

else printf("%c is a wrong enter!\\n", s[i]);

}

system("pause");

return 0;

}

第二个版本,精简了代码,支持添加用户输入的后缀。

?

1

2

3

4

5

6

7

8

9

10

11

12

13

14

15

16

17

18

19

20

21

22

23

24

25

26

27

28

29

30

31

32

33

34

35

36

37

38

39

40

41

42
/*

* Author: Haipz

* School: HDU

* File Name: registry2.0.cpp

*/

#include <cstdio>

#include <cmath>

#include <ctime>

#include <cctype>

#include <cstring>

#include <cstdlib>

#include <climits>

#include <cfloat>

#include <iostream>

#include <vector>

#include <stack>

#include <queue>

#include <set>

#include <map>

#include <algorithm>

using namespace std;

char a[1024];

char b[1024] = "reg add \\"HKEY_CLASSES_ROOT\\\\.";

char c[1024] = "\\\\ShellNew\\" /v \\"NullFile\\" /t REG_SZ";

void work(char* a) {

strcat(b, a);

strcat(b, c);

system(b);

}

int main() {

printf("Function: Add registry to build a new file simply!\\n");

printf("Author: Haipz\\nSchool: HDU\\n");

printf("Example: Enter c to add C and enter cpp to add C++.\\n");

printf("Your opion: ");

gets(a);

work(a);

system("pause");

return 0;

}

第三个版本,支持多次添加,并允许删除已添加的注册表。

?

1

2

3

4

5

6

7

8

9

10

11

12

13

14

15

16

17

18

19

20

21

22

23

24

25

26

27

28

29

30

31

32

33

34

35

36

37

38

39

40

41

42

43

44

45

46

47

48

49

50

51

52

53

54

55

56
/*

* Author: Haipz

* School: HDU

* File Name: registry2.0.cpp

*/

#include <cstdio>

#include <cmath>

#include <ctime>

#include <cctype>

#include <cstring>

#include <cstdlib>

#include <climits>

#include <cfloat>

#include <iostream>

#include <vector>

#include <stack>

#include <queue>

#include <set>

#include <map>

#include <algorithm>

using namespace std;

char key[1024];

char a[1024];

void add(char* t) {

char b[1024] = "reg add \\"HKEY_CLASSES_ROOT\\\\.";

char c[1024] = "\\\\ShellNew\\" /v \\"NullFile\\" /t REG_SZ";

strcat(b, t);

strcat(b, c);

system(b);

}

void del(char* t) {

char d[1024] = "reg delete \\"HKEY_CLASSES_ROOT\\\\.";

char e[1024] = "\\\\ShellNew\\" /f";

strcat(d, t);

strcat(d, e);

system(d);

}

int main() {

printf("Function: Build a new file simply!\\n");

printf("Author: Haipz\\nSchool: HDU\\n");

printf("Example: Enter \\"c\\" to add C and enter \\"cpp\\" to add C++;\\n");

printf(" Enter \\"-c\\" to delete C.\\n");

do {

printf("Your opion: ");

gets(a);

if (a[0] == '-') del(a + 1);

else add(a);

printf("Enter \\"r\\" to run again or any other key to quit: ");

gets(key);

} while (key[0] == 'r');

return 0;

}

打包下载地址:

Regedity.zip

注意,如果系统提示缺少某dll文件,请到网上下载,并复制到C:\\Windows\\System32目录下。

收藏 (0) 打赏

感谢您的支持,我会继续努力的!

打开微信/支付宝扫一扫,即可进行扫码打赏哦,分享从这里开始,精彩与您同在
点赞 (0)

声明:本站所有文章,如无特殊说明或标注,均为本站原创发布。任何个人或组织,在未征得本站同意时,禁止复制、盗用、采集、发布本站内容到任何网站、书籍等各类媒体平台。如若本站内容侵犯了原著者的合法权益,可联系我们进行处理。

快网idc优惠网 建站教程 C++实现添加桌面右键新建菜单 https://www.kuaiidc.com/74922.html

相关文章

发表评论
暂无评论