|
本帖最后由 sunsili 于 2021-11-26 23:52 编辑 & p9 H. W0 S( Q f* M$ H I
. i% q7 n, Q$ L% O
C语言中打开一个应用程序可以调用或运行命令system(),也可以调用操作系统的API函数,比如Windows系统可以调用CreateProcess()、ShellExecuteEx()等函数来打开一个应用程序。8 O7 U# D( c8 U" d* F
( _# g/ D6 i1 \! ]& U4 X& z+ \0 T( N1 Y3 p) T+ Y u5 E: v( M
举例
/ G: ~7 w: A" M, R! U9 X- #include <stdio.h>
" Z% y1 v( G6 X. ^) s - #include <stdlib.h>, C6 N2 A/ F4 r
- 0 `1 {: t2 t# `
- int main()
2 b1 c. U' Y* m4 L: R: V5 D - {9 s2 o4 n3 d0 h: R1 { `
- printf("在windows上打开记事本程序\n");
5 E( E. M6 x6 n0 J - system("notepad.exe");8 w' T; g: L' f r
- return 0;
) U# x- q' e) {0 K# j - }
复制代码 7 ~8 q$ q# z- h8 o8 p6 {) m
3 y! ^: ~2 J9 O3 d7 J7 ^7 l2 s7 ^% M9 K; A, M
/ @7 K" G% Y5 k8 t
默认路径是源文件的路径。6 O' z: z; a3 l- ~5 S3 l) t
如果指定别的路径,两种方法:
% s! G0 R/ J$ [8 Y* f9 x; h一是相对当前默认路径指定路径。* [+ Q5 Y* S8 Y; n
二是指定绝对路径。- O$ Y) ^) F* R% {% J# H6 A
譬如:3 u7 t6 u7 }8 t7 @7 I- ~
E:\C\c.c 这是源文件
8 e+ m! }( w Y$ yE:\C\abc.exe
. o8 S( F. T% V$ T7 {E:\D\abcd.exe0 [, ?4 V$ W; R1 y8 _
C:\A\aaa.exe) \: L2 C# l+ i9 v+ e: y/ P
如果想执行abc.exe,那么可以不指定路径:4 L3 u4 n' X1 T- H9 o9 l
- #include <stdlib.h>
8 ^& m4 F8 ^9 t - ) j1 n/ M, r( m7 J
- int main()
2 R) f% z, o. ]/ n9 b3 e - { }0 L( b) e9 o& d! c
- char *cmd="abc.exe";
: s9 R# J; H! z- U - system(cmd);
, E8 J2 I0 G9 ]% O b: p# u2 w -
9 L5 t0 [; t6 L ]5 k. k- h - return 0;
3 S. O# n1 a+ Z5 Q! O - }
复制代码 & v/ w- b; T' Y4 K4 j# C) ]7 W% g
+ n: P' F% H0 l( V: z* D9 q如果想执行abcd.exe,那么可如下指定路径:
3 `, Z! ?3 B; M1 r0 {0 Z- include <stdlib.h>4 d) e, D5 N* B- D
9 P( z- q+ c d5 H- M; g3 {, C+ z- int main()
+ x/ ~2 t6 F) p - {
5 M; X: r+ l D6 l8 {$ ~ - char *cmd="..\\D\\abcd.exe";
) k. D6 ~3 W c- Z, c - //指定相对路径
2 U0 A! Q& N: t) l; a% C+ d! _ - //char *cmd="E:\\D\\abcd.exe";: D9 Y3 K5 A& u G2 ~
- //指定绝对路径- v' W3 F) I: g% J: q
- system(cmd);! |" u& ]* W, R; v0 ?2 A
-
4 a: J. P y0 v' v - return 0;
) n+ z5 N% ]! V% V$ z - }
复制代码 0 k; }* x) X- N
( y L% H% n H) G: g
如果想执行aaa.exe,则必须指定绝对路径:; Z M C N0 e. F7 ?0 k7 t
- #include <stdlib.h>
& ?* l# E9 l6 `/ a4 q* P# i. G
9 L( P7 ?9 u% a* F1 _7 E/ b- J: e- E- int main()* _5 P/ h g( S* o% A8 s
- {5 p$ _" k$ A: R7 T
- char *cmd="C:\\A\\aaa.exe";! }, z6 y( @1 j
- system(cmd);- [6 y; i# \6 m3 L# Z; P
- * I' ?% C/ o( M* e1 m/ Y' i
- return 0;& Z7 E! w) V3 w8 z3 M
- }
复制代码 ) U8 Q+ }. s" D8 a& W- I
! @5 |) X3 z% y/ D
对于空格问题,可按如下方法解决
, ?3 V! l2 f+ g! p- x9 c: r- #include <stdlib.h>' }# J( T1 C# |" a: z
, Y0 [; K7 A, h2 R. K4 J- int main()# `/ w* s: U" v& _
- {7 x3 P( }- J( A; l& m1 `! z
- char *cmd="E:\\AB\" \"CD\\xyz.exe";
' A8 e- v8 H' m$ X3 m* ~, a1 R - //即执行E:\AB CD\xyz.exe
+ i8 j4 m. H1 ?$ c - system(cmd);
x. y2 a( {4 E& V6 K/ R* f -
$ y4 \# }: s) t, ]" @ - return 0;# Q: g& b U, O* T l1 H+ P9 C; O
- }
复制代码 ' Z1 _6 T; o* M% L/ ^9 |; w+ b
0 x% f7 Q0 X3 y; q
$ r6 G; Z$ C. i6 E" B8 c" B6 M ; l0 _7 p: y4 e9 O- H
|
|