PLM之家精品课程培训,联系电话:18301858168 QQ: 939801026

  • NX二次开培训

    NX二次开培训

    适合初级入门或想深入了解二次开发的工程师,本培训结合ufun,NXOpen C++,大量的实例及官方内部的开发技术对于老鸟也值得借鉴!.

    NX CAM二次开发培训报名 NX二次开发基础培训报名
  • PLM之家Catia CAA二次开发培训

    Catia二次开发培训

    Catia二次开发的市场大,这方面开发人才少,难度大。所以只要你掌握了开发,那么潜力巨大,随着时间的积累,你必将有所用武之地!

  • PLM之Teamcenter最佳学习方案

    Teamcenter培训

    用户应用基础培训,管理员基础培训,管理员高级培训,二次开发培训应有尽有,只要你感兴趣肯学习,专业多年经验大师级打造!

  • PLM之Tecnomatix制造领域培训

    Tecnomatix培训

    想了解制造领域数字化吗?想了解工厂,生产线设计吗?数字化双胞胎,工业4.0吗?我们的课程虚位以待!

PLM之家PLMHome-国产软件践行者

热图推荐

[原创] 通过网络判断外挂是否更新

  [复制链接]

2016-12-23 19:47:22 4462 1

15757753770 发表于 2016-12-11 15:45:38 |阅读模式

15757753770 楼主

2016-12-11 15:45:38

请使用QQ关联注册PLM之家,学习更多关于内容,更多精彩原创视频供你学习!

您需要 登录 才可以下载或查看,没有账号?注册

x
本帖最后由 15757753770 于 2016-12-11 15:51 编辑 : n1 a1 z8 u4 @

- T2 z0 b! n7 K# @2 ~, L& J如果你想每次运行UG 判断 ug外挂是否更新
$ j# W2 Q7 ]: ]4 r0 T1 r/ i; C9 k3 G5 |- T1 A) _
5 Y9 F, p+ I8 C# G5 o
原理:
; z% ]7 K; q1 g$ S) L2 F4 q自己去搞个网站 或者网页 什么的  只要网页内容修改版本时 网页地址不变就行了
  h0 D6 _1 [5 X' R然后  启动ug时启动一个dll    dll内容就是获得网页上的 版本号 进行判断
1 x* T" }$ F3 M4 C! q9 S4 H' q& Y6 k$ X8 M7 ~6 @
9 E8 f! q1 @" j) v1 t7 T
被启动的dll程序源代码,如下
5 C! W* j- w% j! ]+ o
1 ^1 p; [: F" ]3 V+ w: v//  Include files2 s+ _! N7 z* Q4 R' G, p- ^& {
#include <uf.h>! n  {5 D* L* O, E# T" K
#include <uf_exit.h>
: z, [6 h1 E7 p- C( y" `#include <uf_ui.h>; k1 P2 G( |9 t: {, u  F
#if ! defined ( __hp9000s800 ) && ! defined ( __sgi ) && ! defined ( __sun )5 Z* ~% p# E; H: z1 d
#        include <strstream>
; Y9 e0 o- C' K6 ^) a: q#   include <iostream>- u' L  F' k1 K: l* Q* \" O- ~  Z
        using std:strstream;
6 q5 |# m6 B$ b7 Q3 ?# d6 J; E3 w        using std::endl;        " ]1 l, ]' Y2 u0 a+ l
        using std::ends;
- F- L0 p/ R1 X4 B* W        using std::cerr;$ O' q2 P- M3 ~6 D; C0 ~
#else/ o( k5 O( E0 y5 H  w: g9 k" _
#        include <strstream.h>
* a. D! V7 j0 {* H' n2 W#   include <iostream.h>
4 r9 i3 ]' C* ]/ x# ~# U3 s#endif% v9 K9 Z" C5 `$ j4 L1 E8 I
#include <string.h>3 N% F# V- t2 p5 J7 q' M
#include <afx.h>
: n% L7 E  T; m; @4 K& Q' @#include <windows.h>
4 t: m6 P; Z) r6 l#define MAXBLOCKSIZE 1024) Q5 l" E  Q. y, b
#include <wininet.h> //网络" ?, @& n4 }% w. ?4 Q( F
#pragma comment(lib, "wininet.lib")//网络
2 x* r/ C0 h3 u! B5 n
0 d8 }2 x3 n# echar 外挂版本[132]="V2.8F";
: v2 Q+ y2 {, h' ]5 s2 j2 o3 O" |1 G4 ]
- r" `  B, Q+ W: K
wchar_t* CharToWchar(const char* c)   //char*转wchar_t3 D  @4 [: W. C; n( I1 w) K
{  6 w" J2 U: A$ \" h4 o' D
   wchar_t *m_wchar;
6 Q4 [& s! K% H/ R    int len = MultiByteToWideChar(CP_ACP,0,c,strlen(c),NULL,0);  
. }/ X" h1 q; `4 h& W/ w8 n    m_wchar=new wchar_t[len+1];  . O4 a0 D, y3 j1 Q4 j
    MultiByteToWideChar(CP_ACP,0,c,strlen(c),m_wchar,len);  6 m) [1 |- ~. ^5 K0 u" b6 Y  G: I
    m_wchar[len]='\0';  ( P; l0 p9 E0 O9 }6 b% E# S
    return m_wchar;  
  G8 {. X. q1 Q/ [9 @+ X}  
3 o5 |4 _( I9 m. K1 H
- R: ~$ e7 s: P! y5 P' [9 X8 r//TCHAR 转 char/ A0 B0 s: P3 K; a+ Z) L8 G
char* ConvertLPWSTRToLPSTR (LPWSTR lpwszStrIn)  
" E" f6 {# X: O, |" Y* V5 [{  * ~* I' w5 y9 |
    LPSTR pszOut = NULL;  
8 o( Q, u6 k& ^1 t& L  \% E7 U- p    if (lpwszStrIn != NULL)  . |3 k4 V& r" U2 ~1 Z& P
    {  
/ O, _3 i( E8 o9 H( L5 [0 o        int nInputStrLen = wcslen (lpwszStrIn);  - @! ^* U" E1 C3 P8 B% T
3 l- U' F' o( X7 v) b
        // Double NULL Termination  
* G! @  M. L! t1 z8 U        int nOutputStrLen = WideCharToMultiByte (CP_ACP, 0, lpwszStrIn, nInputStrLen, NULL, 0, 0, 0) + 2;  
, V, j' o, e4 z3 x5 ?7 {        pszOut = new char [nOutputStrLen];  
0 L) M6 e0 h3 @2 m, f* u; ~6 |( X0 I! ~
        if (pszOut)  , |! ]3 w9 M' x0 p, L
        {  ! m# S( [8 @1 o$ ~# d" W, D0 B
            memset (pszOut, 0x00, nOutputStrLen);  
" |1 S0 W! Q+ {            WideCharToMultiByte(CP_ACP, 0, lpwszStrIn, nInputStrLen, pszOut, nOutputStrLen, 0, 0);  
/ O+ d7 @* n, b  `        }  7 P- N) a( h: }. V! |9 V/ P! S
    }  
/ H+ l" E0 ]$ L% l5 V0 I    return pszOut;  
5 s, k4 t9 B+ R( N}  5 F8 @6 L9 Y5 h# g

) |. |* {- |' y, t" A9 L/ R$ }6 y$ _( U
//CString转char2 K/ ?- \* O+ K* X# \1 f
void CString2Char(CString str, char ch[])) M+ H! r% r, [- _6 a# d+ V* @
{. k/ e9 r/ ?( X* F7 U; j; k
        int i;$ e5 Q3 |  ?& L8 L- a7 C& S( c
        char *tmpch;! n/ I3 V6 ~* S5 F: u
        int wLen = WideCharToMultiByte(CP_ACP, 0, str, -1, NULL, 0, NULL, NULL);//得到Char的长度. H' `7 R* i8 T$ i: t7 k. S2 {- e- l6 `
        tmpch = new char[wLen + 1];                                             //分配变量的地址大小
$ L3 ^4 S( C( v- h- p$ p        WideCharToMultiByte(CP_ACP, 0, str, -1, tmpch, wLen, NULL, NULL);       //将CString转换成char*" k' \$ K$ I( y* K- l3 \4 w5 h: Z1 f

+ }9 G8 F0 _) P: J5 O        for(i = 0; tmpch != '\0'; i++) ch = tmpch;
8 M4 `/ v" C- v, S9 t0 @        ch = '\0';: E7 @& X( J3 e, E: |3 \5 n9 {
}
; q  u$ `" o2 q7 T; u: Y$ _- Z9 J0 n. d6 p; r& u
* |: u( k3 K) f9 j: z
char *去掉char首尾空格(const char *str)
0 h1 {% `+ K3 y# R: \{
% K) h6 Q. C. J; P) f. P        static char line[133];- k0 l; a4 s8 N: O) Q0 P8 Q
        const char *pbegin;
7 ?# q6 H% ^! G        char *p,*pend;- H9 D) Y$ {6 B; S( L3 f9 V
        int i;
" R: ^5 c6 f9 ~! q5 H& T3 t# G4 W# x# k
        pbegin=str;' e4 b% R# I5 O+ c7 L. W
        while (*pbegin==' ')
4 i. N" `/ m  s, o# W8 g                pbegin++;' q) ]1 j1 t7 \2 o' t5 Q6 J

4 m3 k2 w$ s; s. \1 p/ R        p=line;
- F5 ]: d( p/ i- l        while (*p=*pbegin){8 V0 ~/ }$ \0 v& G; w2 v
                if ((*p==' ')&&(*(p-1)!=' '))$ R, z: A( t7 D' g7 i( x$ [- q
                        pend=p;3 t$ C  F$ u. b- H* O8 F4 D' {1 _
                p++;pbegin++;        
* |4 g1 p, r# n5 t/ v, ^+ A. d) A        }
' Z5 M* g- L6 P% o4 Z( o        if (*(p-1)!=' ') pend=p;
) t/ @& d! G& t, e  ?4 P+ H        *pend=0;7 \0 ]* J# n# w$ J6 n' F  |
        return line;. U$ `% {: z8 T" r# b, X) V! e
}
; G% [0 ^# B( w* j- v. P' l* ?7 w2 G( {. j% d7 }
; [+ z0 G' f3 Q" w$ ~
//获得网页信息 - 网页信息是中文会乱码 用英文信息: ?& a) l4 `8 j" o5 |/ M/ @
void 获得网页内容判断外挂更新(const char *Url,char *html);* A" }  Q* t8 O
void 获得网页内容判断外挂更新(const char *Url,char *html)1 _6 w: G' n1 f  C( e% j
{0 s9 I  m; W7 `+ o# ^6 b
        HINTERNET hSession = InternetOpen(CharToWchar("zwt"), INTERNET_OPEN_TYPE_PRECONFIG, NULL, NULL, 0);
* P$ @/ C; f+ K# e8 S# `        if (hSession != NULL)
8 K1 v+ T& q1 T& r5 J        {
. b. ]( R' D6 o7 F                HINTERNET hURL = InternetOpenUrl(hSession, CharToWchar(Url), NULL, 0, INTERNET_FLAG_DONT_CACHE, 0);1 l5 E+ x7 o3 y) V- X. ~! M
                if (hURL != NULL)
+ K9 o' C  Y! K2 t                {
0 b3 |5 {% S: ?3 G/ V4 w4 f: A9 |. U0 N0 @& {% t& M7 |
                        char Temp[MAXBLOCKSIZE] = {0};+ @! b7 y/ ~, \  z" X0 l; J
                        ULONG Number = 1;- L& ]* D# }/ f* F. g# ^4 Q9 b
                                while (Number > 0)
+ b% w( q' x' d* I9 x                                {
6 l& x  d" u% b0 \" e; {( F                                        InternetReadFile(hURL, Temp, MAXBLOCKSIZE - 1, &Number);
  f. O$ q8 V  z9 K* i7 O! U# K4 G4 e. {                                        char 判断版本[132]="QQ1821117007S33038219920103MEILEI";, p/ N! w. M% K7 s: g- t
                                        int a=strlen(Temp);, u9 ~/ y& g$ A+ g& }# B( Z" u
                                        int b=strlen(判断版本);   
* l0 a9 V* W! S  D! |  {- ?2 ]$ c                                        if (a>b) & N3 x6 Y/ c3 s# _/ x2 w% g- q8 ?
                                        {
4 w+ N) Z5 e1 \* l                                                char *p=strstr(Temp,判断版本);
" ~' u7 b8 F2 x6 i; G                                                if(NULL != p)0 M$ b& n& l$ [) }6 D  G
                                                {          1 a9 A. r8 h' Q% U" O& ?
                                                  int wz=a-strlen(p)+1+b;//版本号起始位置
& s) s2 @/ @* u' M; f2 e/ W                                                  int wz2=a-wz-1;if (wz2>100) wz2=100;
, {3 _( _: x4 y                                          char s1[132]="";
  [: C' m" {' |: U; @                                              strncpy(s1,Temp+wz,wz2);
) ^* K9 f! C: d+ _                                                  char *p2=strstr(s1,"MEILEI");5 M: E8 Z9 z- H7 L- X! _
                                                  if(NULL != p2); U1 ^. V, W+ `9 A+ }
                                                  {  8 y$ a4 n! N5 C1 \
                                                          wz2= strlen(s1)-strlen(p2);
5 n, \1 a1 i& U6 f3 I; h0 b: x) ]2 s                                              char 最新版本[132]="";
5 r5 D. ^4 _& ^5 `                                                  strncpy(最新版本,Temp+wz,wz2);( I1 v+ A) o9 y. k4 r! b8 Y
                                                      if (strcmp( 外挂版本,最新版本)==0)
" z- E+ i9 {1 F$ f* W                                                      {
+ I5 J, I2 R% W: Q                                                            //MessageBox(NULL,_T("此外挂是最新版本"),_T("梅雷制作"), MB_OKCANCEL );
! W" B2 k8 h' j                                                      }
3 N% O  G8 |. V& O3 ]* F+ V2 s                                                      else0 v* g+ [2 N( x0 x1 M
                                                      {
& ~- y1 N( b6 j: a2 |+ X) K                                                            char msg[256];4 k, H2 h. h$ f. `3 Q( E
                                                            sprintf(msg, "乐清外挂:梅雷制作 - QQ:1821117007                    \n当前版本:%s\n最新版本:%s",外挂版本,最新版本);* B3 V3 V8 Q3 b* c7 x; Y0 S
                                MessageBox(NULL,CharToWchar(msg),_T("梅雷提示"), MB_OKCANCEL );
* k  D5 |: x. f9 [2 D                                                      }8 m9 J" h2 L8 b9 y. x8 Y
                                                   }
" X- ~6 d- N9 \8 O  v% ]                                                  goto LH;; r7 Z2 X+ I$ a7 N) s& M
                                                }* j( X* |! P& ]) [* M7 [5 x
                                        }
. X! y) s( h* e7 Z  e8 h
7 M  A2 j( G4 y                                }+ v* b( x! p% O; }4 j/ O
                                LH:;
6 C+ j9 n2 l- {5 M  u# c$ l2 q' L                        InternetCloseHandle(hURL);( w. U2 v0 s4 L9 N( s
                        hURL = NULL;
2 ]8 O5 @# g1 `) c" I0 D+ @% U                }) f" |' a* z6 R) h7 B" Z
0 f; X) E: `. j
                InternetCloseHandle(hSession);# E! k7 r& f  @; C8 {! N
                hSession = NULL;" q' r8 E) P# W2 O7 F* N+ Y/ m1 O
        }; P- _+ j3 E  S8 }
}0 ^( N- y. s+ l' N3 K
9 D- R. j+ f7 g3 b; [3 y1 ~- q# B
: r7 |, |- ]9 \$ y1 W
//----------------------------------------------------------------------------
: l$ A- X' g0 N3 p3 U: y//  Activation Methods
! d2 b7 h- l' O( d3 h2 |//----------------------------------------------------------------------------4 W3 g, C  S% b+ h0 w

* T8 p# x, O7 n6 B3 K7 S7 ]//  Unigraphics Startup* B. e8 W* ]5 R
//      This entry point activates the application at Unigraphics startup8 ^( L- ^; V' M
extern "C" DllExport void ufsta( char *param, int *returnCode, int rlen )( v9 ?. M% s# n! w; G& |1 _
{% H* A+ S9 R- H% a% B
    /* Initialize the API environment */
3 J7 L) Z2 l$ S/ c/ d+ B% G    int errorCode = UF_initialize();: c6 A( t/ h! h

- Q$ ]1 X$ b$ F( f( [% u9 S9 G    if ( 0 == errorCode )
* [: I6 }0 B( i) c    {4 ^! B" b" `4 {& W  y% j
        /* TODO: Add your application code here */1 \/ C: @2 {; [! }

( ~  v1 I' {" w/ U2 j, F8 m) X2 |- ^4 p; Q$ F- W. k
                //百度云公开链接 通过修改txt文件标题( ]$ i& G; ?4 u9 f0 n
                //0.0用于网页判断乐清虹桥外挂版本,验效码QQ1821117007S33038219920103MEILEI=V1.6FMEILEI= MEILEI= MEILEI.txt
( s& F. `* `" q) H/ o5 }4 h
+ T1 G# z" |6 L3 i; K  ]" v! O3 ]8 }: U! _" A' \+ N$ U
                char 网页文件[256]="C:\\Windows\\版本.html.bat";  / s2 l9 v* `9 b' ~9 R6 x
                获得网页内容判断外挂更新("http://pan.baidu.com/s/1slw24Vz",网页文件);
2 g' I4 }) C  s1 d                + `2 H& S' ^* ]. N" }9 c) G) D
        & b3 o# R% @! r5 M: O
2 Y: b( G7 @% p3 i" d% [

. o6 n% v; T7 \1 f. R( Z) l6 b9 p2 ?8 R
        /* Terminate the API environment */. a4 v. c# I% W& Q) G
        errorCode = UF_terminate();2 @. D# F+ g( y" X) U% q+ ?
    }
  c6 y7 ~5 u8 C' A& }7 ^( h
; C( u) t3 G' ]    /* Print out any error messages */
% ?$ u9 s' T# X9 v: xreturn;
; e( Z$ n& e4 l}; R! v( G" ?: i9 K# y

6 K  X" J/ w9 D9 Z//----------------------------------------------------------------------------% D& A6 \# C; F9 w( N, z
//  Utilities( W1 Y1 U' O( T, [0 x- R+ E
//----------------------------------------------------------------------------
, G3 L; p& W! C  d- Q* `, P& U- H- Y( z7 O2 d
// Unload Handler. o0 w/ x" V6 M
//     This function specifies when to unload your application from Unigraphics.# @, Y* i' G  j4 M! }& A
//     If your application registers a callback (from a MenuScript item or a3 H5 ?" {' S1 ^% Z
//     User Defined Object for example), this function MUST return
2 H  O$ F( g7 v7 M9 l, z5 ~  }//     "UF_UNLOAD_UG_TERMINATE".
+ ?6 u7 z/ r$ i1 X  h' C; ]  Fextern "C" int ufusr_ask_unload( void )
# r( W# @$ M' ]- S1 J( p$ Z) @{
1 i7 _& t0 y, {  `: g9 W& W5 N1 m    return( UF_UNLOAD_UG_TERMINATE );
6 ?, A4 e& v+ F}" g) @, o* x% v5 D/ Z: P
$ q! {% S) i7 N# l

* j( n6 ], U  ^4 x0 ]  m. u% D启动UG就启动dll的方法9 x3 h8 A0 q- H; F: Y& e: d5 D

% a% L" P6 @1 r% A8 g6 s方法1.添加环境变量
2 M/ v. s. L6 u, nUSER_STARTUP=D:\MEILEI.DLL/ |) g( k; y$ O9 e; ^2 i' L
但是只能运行一个dll而且别人也使用这个环境变量那么久不方便了8 S0 L2 ~$ W; w* [. G/ O

( w' }8 _* ^) \方法2.在代码里添加(可以执行n个dll)
) _- u0 F' D  ~) m; J% ~UG会自动加载 startup目录里入口点是ufsta的dll$ T& W4 M, I1 M$ @" @% B) s
+ }% C! X( h0 x  r5 Y3 _
所以在ufsta入口使用UF_MB_add_actions函数可以在UG启动的时候自动启动一个或多个菜单里的命令) C3 l- s! z% C% S
参考c++代码  ufsta.cpp.txt ,用此文件代码生成dll放startup目录 ug就会自动加载了
8 `$ |- [& a$ D( w6 v& I' x, G  G, l
4 @( j8 d7 x9 E1 T& s% X0 t菜单参考  NXOpen_meilei.men.txt
. t0 P& e# b# \' m9 t% _% P- v; \* |* ]1 \3 L' w& U8 R  T' ~( l  S
DDD.DLL代码任意(当然也可以参考DDD.cpp.txt)吧dll也放startup目录
. o. b7 |0 L7 `& E启动UG就启动dll的方法源代码下载
' u) {  e8 _! s) }5 X% C/ o5 H. j 启动UG就启动dll的方法.rar (3.3 KB, 下载次数: 28)

评分

参与人数 1PLM币 +5 收起 理由
admin + 5 很给力!

查看全部评分

上海点团信息科技有限公司,承接UG NX,CATIA,CREO,Solidworks 等CAx软件,Teamcenter,3D Experience等PLM软件,工业4.0数字化软件的实施\二次开发\培训相关业务,详情QQ 939801026 Tel 18301858168 网址 www.diantuankj.com/ doTeam.tech
回复

举报

全部回复1

周钢 发表于 2016-12-23 19:47:22

周钢 沙发

2016-12-23 19:47:22

支持下梅大师!
上海点团信息科技有限公司,承接UG NX,CATIA,CREO,Solidworks 等CAx软件,Teamcenter,3D Experience等PLM软件,工业4.0数字化软件的实施\二次开发\培训相关业务,详情QQ 939801026 Tel 18301858168 网址 www.diantuankj.com/ doTeam.tech
回复 支持 反对

举报

发表回复

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

返回列表 本版积分规则

  • 发布新帖

  • 在线客服

  • 微信

  • 客户端

  • 返回顶部

  • x
    温馨提示

    本网站(plmhome.com)为PLM之家工业软件学习官网站

    展示的视频材料全部免费,需要高清和特殊技术支持请联系 QQ: 939801026

    PLM之家NX CAM二次开发专题模块培训报名开始啦

    我知道了