谷动谷力

 找回密码
 立即注册
查看: 3262|回复: 1
收起左侧

C语言中应用程序运行系统命令system()CreateProcess()ShellExecuteEx()

[复制链接]
发表于 2018-6-25 23:44:45 | 显示全部楼层 |阅读模式
本帖最后由 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
  1. #include <stdio.h>
    " Z% y1 v( G6 X. ^) s
  2. #include <stdlib.h>, C6 N2 A/ F4 r
  3. 0 `1 {: t2 t# `
  4. int main()
    2 b1 c. U' Y* m4 L: R: V5 D
  5. {9 s2 o4 n3 d0 h: R1 {  `
  6.     printf("在windows上打开记事本程序\n");
    5 E( E. M6 x6 n0 J
  7.     system("notepad.exe");8 w' T; g: L' f  r
  8.     return 0;
    ) U# x- q' e) {0 K# j
  9. }
复制代码
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
  1. #include <stdlib.h>
    8 ^& m4 F8 ^9 t
  2. ) j1 n/ M, r( m7 J
  3. int main()
    2 R) f% z, o. ]/ n9 b3 e
  4. {  }0 L( b) e9 o& d! c
  5.      char *cmd="abc.exe";
    : s9 R# J; H! z- U
  6.      system(cmd);
    , E8 J2 I0 G9 ]% O  b: p# u2 w
  7.      
    9 L5 t0 [; t6 L  ]5 k. k- h
  8.      return 0;
    3 S. O# n1 a+ Z5 Q! O
  9. }
复制代码
& 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
  1. include <stdlib.h>4 d) e, D5 N* B- D

  2. 9 P( z- q+ c  d5 H- M; g3 {, C+ z
  3. int main()
    + x/ ~2 t6 F) p
  4. {
    5 M; X: r+ l  D6 l8 {$ ~
  5.      char *cmd="..\\D\\abcd.exe";
    ) k. D6 ~3 W  c- Z, c
  6.     //指定相对路径
    2 U0 A! Q& N: t) l; a% C+ d! _
  7.     //char *cmd="E:\\D\\abcd.exe";: D9 Y3 K5 A& u  G2 ~
  8.     //指定绝对路径- v' W3 F) I: g% J: q
  9.      system(cmd);! |" u& ]* W, R; v0 ?2 A
  10.      
    4 a: J. P  y0 v' v
  11.      return 0;
    ) n+ z5 N% ]! V% V$ z
  12. }
复制代码
0 k; }* x) X- N
( y  L% H% n  H) G: g
如果想执行aaa.exe,则必须指定绝对路径:; Z  M  C  N0 e. F7 ?0 k7 t
  1. #include <stdlib.h>
    & ?* l# E9 l6 `/ a4 q* P# i. G

  2. 9 L( P7 ?9 u% a* F1 _7 E/ b- J: e- E
  3. int main()* _5 P/ h  g( S* o% A8 s
  4. {5 p$ _" k$ A: R7 T
  5.      char *cmd="C:\\A\\aaa.exe";! }, z6 y( @1 j
  6.      system(cmd);- [6 y; i# \6 m3 L# Z; P
  7.      * I' ?% C/ o( M* e1 m/ Y' i
  8.      return 0;& Z7 E! w) V3 w8 z3 M
  9. }
复制代码
) U8 Q+ }. s" D8 a& W- I
! @5 |) X3 z% y/ D
对于空格问题,可按如下方法解决
, ?3 V! l2 f+ g! p- x9 c: r
  1. #include <stdlib.h>' }# J( T1 C# |" a: z

  2. , Y0 [; K7 A, h2 R. K4 J
  3. int main()# `/ w* s: U" v& _
  4. {7 x3 P( }- J( A; l& m1 `! z
  5.      char *cmd="E:\\AB\" \"CD\\xyz.exe";
    ' A8 e- v8 H' m$ X3 m* ~, a1 R
  6.     //即执行E:\AB CD\xyz.exe
    + i8 j4 m. H1 ?$ c
  7.      system(cmd);
      x. y2 a( {4 E& V6 K/ R* f
  8.      
    $ y4 \# }: s) t, ]" @
  9.      return 0;# Q: g& b  U, O* T  l1 H+ P9 C; O
  10. }
复制代码
' 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
回复

使用道具 举报

 楼主| 发表于 2018-6-25 23:46:42 | 显示全部楼层
  1. #include <stdlib.h>
      W- q/ ^' \' {4 W7 N$ N  w

  2. 9 {6 h7 i/ y' \# }6 \  z. ?( w, S: ?
  3. int main()
    & W; _  [" c: a. F$ `
  4. {
    . p: M5 E$ v. U' ^
  5.     char *cmd="E:\\AB\" \"CD\\xyz.exe";
    6 l% `; N4 i' f  n5 b  ^# B( T6 ^3 s
  6.     //即执行E:\AB CD\xyz.exe4 e' s: G5 W) S/ H% ]. v6 M% O
  7.      system(cmd);( @% o% e8 Y7 j
  8.      
    0 `0 ^( p1 C, u4 Y/ c6 p5 g
  9.      return 0;
    9 x# y" n3 @  O* `7 _9 M
  10. }
复制代码
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

QQ|Archiver|手机版|深圳市光明谷科技有限公司|光明谷商城|Sunshine Silicon Corpporation ( 粤ICP备14060730号|Sitemap

GMT+8, 2024-3-28 18:42 , Processed in 0.087958 second(s), 32 queries .

Powered by Discuz! X3.2 Licensed

© 2001-2013 Comsenz Inc.

快速回复 返回顶部 返回列表