找回密码
 注册会员

QQ登录

只需一步,快速开始

搜索
查看: 1782|回复: 0

Pro/E二次开发使用toolkit开发trigger的程序

[复制链接]
发表于 2008-8-6 13:31:00 | 显示全部楼层 |阅读模式
使用toolkit开发trigger的程序时,往往需要能够连续通过trigger来触发dll中的函数.
$ T3 e# d  n; R, E% `我碰到的问题:
2 I0 \" S1 T/ g8 N9 q+ p5 c   1.配置trigger:
+ m0 w1 N8 z8 N( ?   Name: CimDll 6 N; E0 y* |. W
   Event: Create PIV
4 T' a$ v) {1 N  F2 O2 A1 H8 A   Time:  POST
7 X" _4 i) J0 G" }. D; V9 W, D   RequireNO 1 g  I. l6 y0 O/ F$ m4 u
   DLL:Cim.dll 5 {2 [# E: b( g' C$ t
   FunctionDMTPIVCreatePostOperation
) D# w7 w9 ~) D. [( R    $ i& B5 h2 O) o7 N
  2.源代码:
4 n9 h! V! |% N8 q, q+ _   int PDMDLLInit() ( {. K! I8 c1 I" K8 a
{
3 f; ?3 I. @. v0 x& C# [   PTCERROR pdm_status; 5 I0 s$ d! M( ]! u  T2 J
   FILE      *g_pfileLog;    g_pfileLog =fopen("test.dat","w"); # K8 e' F  }' q- t6 i
   setbuf(g_pfileLog,NULL); / Z& h% k- q4 i  Z  H4 ?: h
   fprintf(g_pfileLog,"begin test\n"); 8 C1 g" ^- P2 {8 m3 c
   pdm_status = PDMTriggerRegister("DMTPIVCreatePostOperation", PDMTPIVCreatePostOperation);
$ q& ^6 W7 t5 g+ A   if (pdm_status != PDM_SUCCESS) ) `: l! n+ _+ z: ]
   {   ; b, A1 f' w" b8 T& |% r. o  J
    printf("Failed to Register Trigger PIV Create Post.\n");
/ m+ w3 P# O5 a. K   } / h: [: v3 z* Q  _" ~  }
    return (pdm_status); ! ?# t  x' B& P& t
} ' J+ q' G- u( R
int PDMTPIVCreatePostOperation(int argc, void **argv)
7 ~& K, o, H- ]9 l0 l1 V$ i% o6 d{ 1 n4 ~. W: b& H
   fprintf(g_pfileLog,"test\n"); 8 _' M% P$ W! I) @0 M
   ..... ( j; N8 N' Y% T3 H
   fprintf(g_pfileLog,"end test\n"); # J  {9 L3 W+ P' b. c. c& f
   fclose(g_pfileLog);
1 q3 T  g" |- p! [, t) Y9 B& t} 0 B! K, x; ~1 I5 `4 O9 l' Y
   结果:以上代码存在的问题:如果我们在第一次checkin到C/S中后,删除test.dat文件,然后再进行checkin时,发现没有再生成test.dat,在函数PDMTPIVCreatePostOperation()中所进行的对文件的操作都无效. 3 a3 g% Q( N# ]4 w2 ^8 m: }8 o
   原因:我们使用trigger触发时,真正起作用的是函数DMTPIVCreatePostOperation(),而PDMDLLInit()只是在第一次checkin时起作用,所以在第一次调用PDMTPIVCreatePostOperation()后,我就fclose(g_pfileLog),所以出现了上面的情况.所以注意的是:不要把一些重要的东西放在函数PDMDLLInit()中.
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 注册会员

本版积分规则

Archiver|手机版|小黑屋|机械社区 ( 京ICP备10217105号-1,京ICP证050210号,浙公网安备33038202004372号 )

GMT+8, 2025-8-29 00:00 , Processed in 0.069204 second(s), 14 queries , Gzip On.

Powered by Discuz! X3.5 Licensed

© 2001-2025 Discuz! Team.

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