码迷,mamicode.com
首页 > 其他好文 > 详细

自动添加打印机

时间:2018-07-19 22:58:31      阅读:300      评论:0      收藏:0      [点我收藏+]

标签:std   dll   efi   use   turn   日常   需要   display   cas   

 1 /*
 2  *   Name   :ConnectPrinter.c
 3  *   Author :null
 4  *   Date   :07/19/2018
 5  *   Purpose:本程序是一个用于自动连接打印机的小程序,目的在于减轻管理员的日常管理工作。
 6  *   只需要将此小程序发给局域网内需要连接打印机的同事,即可自动连接相应的打印机。当然,
 7  *   需要事先在打印主机上安装 64 和 32 位的驱动程序,以便运行不同操作系统的机器顺利连接。
 8  */
 9 
10 /* 加这一行是因为使用 MinGW 进行编译的时候,不论使用 -std=c99 还是 -std=c11,都会无法识别 %hhu
11  * 具体参考 https://stackoverflow.com/questions/36531893/c-scanf-unsigned-char
12  */
13 #define __USE_MINGW_ANSI_STDIO 1
14 #include <stdio.h>
15 #include <windows.h> // system()
16 
17 void DisplayMenu(void);
18 
19 
20 int main(void)
21 {
22     unsigned char choice,ret;
23 
24     DisplayMenu();
25     printf("\n请选择要连接的打印机(输入选项前的数字): ");
26     ret = scanf("%hhu",&choice);    
27     getchar();/* 这里的getchar() 不能少,否则会陷入无限循环 */
28     while(ret != 1 || choice <1 || choice > 5) /* 检查输入是否合法,不合法则提示错误并重新输入 */
29     {
30             DisplayMenu();
31             printf("\n输入错误,请重新选择!\n(输入选项前的数字): ");
32             ret = scanf("%hhu",&choice);    
33             getchar();
34     }
35     switch(ret)
36     {
37             /* 关于rundll32 printui.dll,PrintUIEntry 连接打印机可参考
38              * https://docs.microsoft.com/en-us/windows-server/administration/windows-commands/rundll32-printui
39              */
40         case 1:
41             system("rundll32 printui.dll,PrintUIEntry /in /n \\\\ServerName\\PrinterName01"); /* printer 1 */
42             break;
43         case 2:
44             system("rundll32 printui.dll,PrintUIEntry /in /n \\\\ServerName\\PrinterName02"); /* printer 2 */           
45             break;
46         case 3:
47             system("rundll32 printui.dll,PrintUIEntry /in /n \\\\ServerName\\PrinterName03"); /* printer 3 */
48             break;
49         case 4:
50             system("rundll32 printui.dll,PrintUIEntry /in /n \\\\ServerName\\PrinterName04"); /* printer 4 */
51             break;
52         case 5:
53             system("rundll32 printui.dll,PrintUIEntry /in /n \\\\ServerName\\PrinterName02"); /* printer 5 */
54             break;
55     }
56 
57     return 0;
58 }    
59 
60 void DisplayMenu(void)
61 {
62     system("cls");
63     puts("***************************************");
64     puts("*                                     *");
65     puts("*          打印机连接程序             *");
66     puts("*      可帮助你自主连接打印机         *");
67     puts("*                                     *");
68     puts("***************************************");
69     puts("");    
70     puts("");    
71     puts("1. printer 1");
72     puts("2. printer 2");
73     puts("3. printer 3");
74     puts("4. printer 4");    
75     puts("5. printer 5");    
76 }
/*Result:

***************************************
*                                     *
*        打印机连接程序        *
*      可帮助你自主连接打印机      *
*                      *
***************************************


1. printer 1
2. printer 2
3. printer 3
4. printer 4
5. printer 5

请选择要连接的打印机(输入选项前的数字):

 

*/

 

自动添加打印机

标签:std   dll   efi   use   turn   日常   需要   display   cas   

原文地址:https://www.cnblogs.com/randomname/p/9338870.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!