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 4485 1

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

15757753770 楼主

2016-12-11 15:45:38

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

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

x
本帖最后由 15757753770 于 2016-12-11 15:51 编辑 ; m+ k8 t1 X0 l
/ [9 L/ d; q1 z( @6 W, L1 @6 D
如果你想每次运行UG 判断 ug外挂是否更新
$ Y: E! b  `8 k# C( u0 o. w1 d. e4 G' P4 T1 e4 r
* M" Y7 a/ C8 M/ ?/ b' |
原理:  ?- }) o9 L0 W/ A
自己去搞个网站 或者网页 什么的  只要网页内容修改版本时 网页地址不变就行了
$ Z; q* e# E. c  y" V$ @然后  启动ug时启动一个dll    dll内容就是获得网页上的 版本号 进行判断
0 I: t2 \- s$ E. v- I( c% C4 d' ]% V% h3 G4 ?6 c5 p; o) O

2 n8 m. S1 z9 d被启动的dll程序源代码,如下5 e3 v2 d/ x  |+ ~

  \5 M! W  u5 i4 q& `//  Include files
/ @2 t% W) u( E#include <uf.h>5 B: M; T% l7 N5 L( p9 U
#include <uf_exit.h>
  h/ P8 m# @8 v  {#include <uf_ui.h>& D7 b& ?( y6 c* F& @
#if ! defined ( __hp9000s800 ) && ! defined ( __sgi ) && ! defined ( __sun )' I) \/ R* H; a& z; u+ ?
#        include <strstream>
* Q0 q8 q% ^. r- O5 \. {" o/ r#   include <iostream># p- j$ j1 K1 h+ A/ j9 b3 q% D
        using std:strstream;6 S' ^- \$ W$ d- f2 z# L! X6 v# N; e6 f
        using std::endl;        & Q0 i- V! h( l
        using std::ends;- G4 k  b, e, o0 v- W/ ], {- Q9 [
        using std::cerr;
9 O$ g6 A2 {' x#else
* E+ m, [" f, I! g+ x#        include <strstream.h>/ n4 q1 n. q% d+ V/ O( p
#   include <iostream.h>7 n( T  S7 B) |4 N4 _
#endif
& N$ n. `2 [( L, R! P8 G#include <string.h>
3 }; y, t$ @" T& D2 ?3 Y+ Q7 }#include <afx.h>
( e0 F% ?# X4 W* o: }, W#include <windows.h>$ c# {; Z+ q: `( P2 i% d5 o) _
#define MAXBLOCKSIZE 1024
# x$ o+ n( L/ J' d3 B7 v' J#include <wininet.h> //网络
3 q) F" x0 B! W#pragma comment(lib, "wininet.lib")//网络
, P; Q, J5 T! q! }5 g9 \1 N/ o/ k6 y, ~  V
char 外挂版本[132]="V2.8F";
- a' Z( c; C! }+ Z
$ [+ _6 T. v' r3 g& c- e2 a3 O" E, K/ ]. q9 f$ ~
wchar_t* CharToWchar(const char* c)   //char*转wchar_t
$ X' n" W: f4 I2 G{  ( _1 a9 [# d/ q6 E
   wchar_t *m_wchar;
( Z( V- M. ?. d0 ]4 @; r* L) D& S    int len = MultiByteToWideChar(CP_ACP,0,c,strlen(c),NULL,0);  ) c7 u5 c2 D) ~+ j2 o! E
    m_wchar=new wchar_t[len+1];  
! G- l* A# g! `6 `  C& F5 S    MultiByteToWideChar(CP_ACP,0,c,strlen(c),m_wchar,len);  5 _' k1 I* V& `8 u5 |6 v
    m_wchar[len]='\0';  
8 A; Y" \" \' c4 x1 G0 E    return m_wchar;  
, C2 [) z. D7 j}  0 R1 O2 L0 b8 ]2 K! y

  `$ w4 X8 @4 F' m3 @: o//TCHAR 转 char0 c# V+ n9 b4 I; m# g! ^
char* ConvertLPWSTRToLPSTR (LPWSTR lpwszStrIn)  " }$ c  W: [4 i  R. Q5 M+ L+ f* q
{  
% O" F) ^, |2 I$ i    LPSTR pszOut = NULL;  % M+ f# I8 H' q! o
    if (lpwszStrIn != NULL)  ) C; l) V5 D3 D2 V
    {  
& Y* v/ z2 R0 F" g2 E2 M        int nInputStrLen = wcslen (lpwszStrIn);  
, ~1 {& }4 @! n6 f' ^7 u. d" l# ?/ M8 [+ m5 I+ [, B6 {7 E* `: |
        // Double NULL Termination    g/ I5 Z; w/ Z" Q
        int nOutputStrLen = WideCharToMultiByte (CP_ACP, 0, lpwszStrIn, nInputStrLen, NULL, 0, 0, 0) + 2;  % `, n* n2 v1 U; o
        pszOut = new char [nOutputStrLen];  ! P, O' d+ L8 W
4 V& S; R' n5 r; \2 z
        if (pszOut)  
0 \5 s9 r% G7 w+ q& X1 a. X        {  
" s+ N& b2 i! r1 {8 o: L  U            memset (pszOut, 0x00, nOutputStrLen);  
: p5 {, K8 L2 x" ?  p            WideCharToMultiByte(CP_ACP, 0, lpwszStrIn, nInputStrLen, pszOut, nOutputStrLen, 0, 0);  
! F0 m& G- c( X, Z- E7 ^4 C& {" P        }  7 E. e) S5 p3 o! n! W/ o5 [+ v' h
    }  / T0 e# [; d4 q3 D, W" q) _
    return pszOut;  
# k* f- w4 }, U# |. H}  - t2 K+ M3 g# L. B9 ~
6 g( A  U1 ]  D! x) F/ w
! n) A8 r7 R/ W( |) ?' N
//CString转char2 R* d: h1 p3 Q
void CString2Char(CString str, char ch[])
1 u/ K! X6 t& B{
# v4 `6 \9 |) b2 c( e' [4 z        int i;! Q6 J2 y; E6 x* p: L4 `4 b! E/ m- U
        char *tmpch;
$ h5 C+ H* ^: g/ k0 _        int wLen = WideCharToMultiByte(CP_ACP, 0, str, -1, NULL, 0, NULL, NULL);//得到Char的长度
0 g# s9 J+ h, C+ [* W1 K6 X        tmpch = new char[wLen + 1];                                             //分配变量的地址大小
7 ^& Z0 k: B) u+ A, V) l/ z& p* i) O& r        WideCharToMultiByte(CP_ACP, 0, str, -1, tmpch, wLen, NULL, NULL);       //将CString转换成char*
& r2 c& r7 q- F! G" A0 i
2 i' `, @8 N+ l9 q7 \, h. j) j        for(i = 0; tmpch != '\0'; i++) ch = tmpch;  H, K# n& K+ D6 u: G8 o+ T
        ch = '\0';
' t" [" o2 b$ [7 `& J}
! U$ W$ g0 m8 }& U  ^
$ b; u: ]" J/ o4 p+ b/ @
+ V) R* t* |+ b$ w' W; ^/ W% M0 Kchar *去掉char首尾空格(const char *str)0 z: Q' L2 G0 s" _" D: f. g2 l
{' V- e- d/ w6 x. L" s5 W( |
        static char line[133];3 e( h4 ?8 S% O- k; c
        const char *pbegin;
9 _' [" J. W, ~& d: y) r        char *p,*pend;" W9 E7 N" q6 P- J" d1 A4 l; F5 h2 t
        int i;
" N: N2 ?+ D9 e' g7 U: r+ `' H- R0 h# J0 _9 {! @5 [  x
        pbegin=str;
' {; M# p1 N  x3 y+ j" w        while (*pbegin==' ')4 K5 B! G1 y4 }5 F5 ]" w
                pbegin++;
, l1 n+ I5 F. X4 r/ H) j
- e7 ]% ~3 Y5 E6 r; C  {$ q* ^* m        p=line;
. O! z3 n+ W5 x9 T2 C9 B( A0 i        while (*p=*pbegin){
  {: q: B, c) h: Q+ Q" q                if ((*p==' ')&&(*(p-1)!=' '))0 X4 x! u* d* A3 t4 v2 o
                        pend=p;: ^4 ?! D* `. r# p
                p++;pbegin++;        
, ~, J# Y4 ?: j) A" X        }/ j+ y9 x/ d1 K
        if (*(p-1)!=' ') pend=p;
9 g8 i  R) y" J8 c7 F8 l8 ]        *pend=0;  U, Z. `& d7 E' M; N0 S' W
        return line;3 [, t* ?) Q- |' G
} 6 O9 G) _' Y: i: y, |) A

' b0 t+ ^4 q8 B1 B7 [, r* U
3 q3 v& n5 R( E: C; ]$ @7 T//获得网页信息 - 网页信息是中文会乱码 用英文信息
3 c4 E2 P+ v1 i  |+ i' X+ fvoid 获得网页内容判断外挂更新(const char *Url,char *html);+ @! p. ?% G$ W
void 获得网页内容判断外挂更新(const char *Url,char *html)
  j" Z) i/ T1 B: {" W) h: u0 C- Z{+ k. o6 j; u/ z6 H- C
        HINTERNET hSession = InternetOpen(CharToWchar("zwt"), INTERNET_OPEN_TYPE_PRECONFIG, NULL, NULL, 0);
+ ~! G! }" N/ N/ f$ k$ o0 ^/ J        if (hSession != NULL)
% M% g. j. G9 P8 n; V' W% z5 w; {2 E        {. W- a; e' H  i( L* p
                HINTERNET hURL = InternetOpenUrl(hSession, CharToWchar(Url), NULL, 0, INTERNET_FLAG_DONT_CACHE, 0);
. q1 I* O1 y: f7 _) |                if (hURL != NULL)' [8 j5 e+ P6 K0 ?2 h( e2 ?6 [
                {
/ c; u3 l; d4 t  }8 |
& h4 ~3 L  p) h- M0 _. M4 m                        char Temp[MAXBLOCKSIZE] = {0};
, J1 E! y* L& b, X+ h* m                        ULONG Number = 1;
2 Y7 U! i. }5 f$ o& p# ]4 P6 i( R                                while (Number > 0)
+ C. a% O7 j. H7 o: u# T                                {
9 f% s* _8 Z- ^: U; V8 c- \                                        InternetReadFile(hURL, Temp, MAXBLOCKSIZE - 1, &Number);
# R" I/ c( ?; ]" }+ O6 o1 m8 u$ T                                        char 判断版本[132]="QQ1821117007S33038219920103MEILEI";
; [; O9 y& _0 c; l8 c                                        int a=strlen(Temp);
; n' S8 r( o' N1 @                                        int b=strlen(判断版本);   
! A7 g, S' n7 r( E; x. |                                        if (a>b) 9 f4 E/ W0 c2 Y
                                        {& H2 G# W7 R, M4 W; N
                                                char *p=strstr(Temp,判断版本);
4 Z1 K/ w! y1 E) e4 `" A                                                if(NULL != p)/ X" A' x9 ^/ e2 S
                                                {          ! ~( z' o  U  X. @, a6 X- I
                                                  int wz=a-strlen(p)+1+b;//版本号起始位置, N& e5 C; p1 B6 b, h
                                                  int wz2=a-wz-1;if (wz2>100) wz2=100;
8 a! l- N' b& G1 {                                          char s1[132]="";3 u7 s. `! F, A; ?, J: r9 E
                                              strncpy(s1,Temp+wz,wz2);6 L: q6 [0 I. ^' a" X0 \6 Q  r  i
                                                  char *p2=strstr(s1,"MEILEI");' O* ]0 s  ?8 m( t' B
                                                  if(NULL != p2)
' U/ @4 e5 s( Q# Z: D7 a5 F                                                  {  6 \+ W8 S% x- k8 g* f( k
                                                          wz2= strlen(s1)-strlen(p2);
4 c/ c) l3 V; x) a  q. _5 B0 V' t                                              char 最新版本[132]="";
/ S! K1 z; K9 `7 `. c% X4 L2 J0 b, g                                                  strncpy(最新版本,Temp+wz,wz2);
8 S4 |' n4 e* F9 N                                                      if (strcmp( 外挂版本,最新版本)==0)
# O5 @0 D8 V) d! i: k                                                      {
/ G6 F" J2 k7 }) B6 y' X                                                            //MessageBox(NULL,_T("此外挂是最新版本"),_T("梅雷制作"), MB_OKCANCEL );
& U  W. r3 o) @& i                                                      }7 [; o9 B* \1 e
                                                      else
# G% Y9 y' m9 U+ S: t% D+ x! u                                                      {+ K+ B" E- ^4 v
                                                            char msg[256];  k* l9 Z5 _" c/ S
                                                            sprintf(msg, "乐清外挂:梅雷制作 - QQ:1821117007                    \n当前版本:%s\n最新版本:%s",外挂版本,最新版本);8 s2 v# Z0 l2 w
                                MessageBox(NULL,CharToWchar(msg),_T("梅雷提示"), MB_OKCANCEL );
+ E, p, ^2 w6 h                                                      }, {9 J. }5 Q) D+ C# N3 _
                                                   }
0 L* y/ ~0 w% n" [  B                                                  goto LH;& o5 v- L/ B/ p; J6 B  r
                                                }, a8 _; O8 [  V  p
                                        }
1 Z3 \$ I1 ]! U/ g" n: M9 h+ w$ @1 m2 @2 f8 d( Z1 A7 c
                                }3 _$ G0 |$ u8 ]% o
                                LH:;- M9 T7 v3 z7 e3 O7 |' M
                        InternetCloseHandle(hURL);
! h  |0 b: M% p( o8 O9 V( y9 v3 p  J$ Y                        hURL = NULL;- L( |7 W% F+ V7 v% a: v+ L
                }
! O# l  i3 A3 J, ^8 p+ L
& b% s: B+ q9 u" K2 E4 D; ^) {; T                InternetCloseHandle(hSession);
# K! R7 e% u) B% y- X, F5 ~                hSession = NULL;. J% a" }  |  o! b7 }- F7 N
        }
( Z2 q$ W/ O; e+ ^/ r}. o1 \2 z* C' d

3 \( X9 _  m5 H$ o# Z; @# Q
: M7 u/ ^# F9 B6 O; |3 Z0 m//----------------------------------------------------------------------------8 x. P! a/ Y" Y, ]# |# {
//  Activation Methods% R7 A0 E# I  W" m% e
//----------------------------------------------------------------------------
* O+ `3 [( ~, L' D1 s  F8 U, X
, r1 r. b5 |" p4 L  H$ |1 {//  Unigraphics Startup
2 v$ ]* ~; s% W8 A, T/ e//      This entry point activates the application at Unigraphics startup+ v) |5 S9 C. C# k2 ]  F
extern "C" DllExport void ufsta( char *param, int *returnCode, int rlen )
# c0 l. p( D" z5 h/ I{
/ a' R5 G& _5 j/ C9 g* k& ^    /* Initialize the API environment */
4 x& s& I( J9 n6 D9 M# v    int errorCode = UF_initialize();% s! {2 o: c. P, s( h5 v  C

$ Y2 m" C0 C9 c* ?% e7 r    if ( 0 == errorCode )2 E# O. t. G" E' B0 |
    {3 C6 B9 @' t4 `
        /* TODO: Add your application code here */6 U, H$ {! a5 O- F3 M

7 d& w2 g* k) Q+ `+ z9 n1 S# q5 q* o$ T
                //百度云公开链接 通过修改txt文件标题  r0 y# E( @, X) S& A* n# T
                //0.0用于网页判断乐清虹桥外挂版本,验效码QQ1821117007S33038219920103MEILEI=V1.6FMEILEI= MEILEI= MEILEI.txt
8 h/ l& ~' R+ ]3 Z: T- J  N) o
4 M- L# u. k5 r7 C6 M6 w8 u/ j) U* E, s9 y& ~$ `7 T. f
                char 网页文件[256]="C:\\Windows\\版本.html.bat";  
) p+ P* M2 Q6 Q                获得网页内容判断外挂更新("http://pan.baidu.com/s/1slw24Vz",网页文件); & S: j) V  Z( |) c- U
                ' u( T( Y  x1 c8 g+ b8 L
        + \$ l3 n% M: A9 G! K

: e+ g1 v  o" u$ x" W7 I- Y/ w: M7 i4 a% f0 O" Q8 i2 l

6 J4 E' v) F) q5 q! G: ]; V+ h# M& z        /* Terminate the API environment */, p* ^4 |/ B- Z" H
        errorCode = UF_terminate();
: F& U5 H* v1 P8 `! X, W    }* p/ A. G0 \6 g
/ q8 ~) o, V: k% q# _3 C
    /* Print out any error messages */
; p# c  H7 X. _( G4 hreturn;4 q# t+ _3 t, `/ u; V
}0 l9 O% b* i$ Q& I; t6 O
% U- n/ A$ z: D: x' [
//----------------------------------------------------------------------------
* K; c" Y. b- u! p9 J! r/ G//  Utilities; y8 N/ c+ C6 s
//----------------------------------------------------------------------------
+ ?& T' b6 h; h. ~- g, b3 D
  A9 J" v- z7 Y, G// Unload Handler
6 t) p, y, R5 x' q# g6 M  ^! A//     This function specifies when to unload your application from Unigraphics.
* M  p5 d) M' k5 U6 e//     If your application registers a callback (from a MenuScript item or a9 W. @6 k7 K9 |& F7 k7 `
//     User Defined Object for example), this function MUST return
3 h5 }* `8 y, x* C  J5 |//     "UF_UNLOAD_UG_TERMINATE".
9 ~0 z- X# y  pextern "C" int ufusr_ask_unload( void )
: H$ A( _9 ^- N0 x$ b{- D" \& i- s+ `6 T1 s# w% d
    return( UF_UNLOAD_UG_TERMINATE );
2 E1 i( I9 ]5 [. E. C$ v$ a, g}! i5 k  Q2 B- Z/ @/ A

9 g' }" D# b" T
, k$ L5 K" J) ]% }$ {启动UG就启动dll的方法
' A: L& w9 o4 z0 b" I
) G7 \& d4 U' ]5 F# i/ ?& y! Q方法1.添加环境变量
  g7 g0 C0 g2 o: ]USER_STARTUP=D:\MEILEI.DLL
5 s! `* t$ e/ m. \3 D; q3 q/ \但是只能运行一个dll而且别人也使用这个环境变量那么久不方便了
0 \# I* S1 v9 z! x
. }4 T/ D8 O# k) g8 v9 K方法2.在代码里添加(可以执行n个dll)8 Z3 d6 g/ H6 m- Z2 q2 r# F
UG会自动加载 startup目录里入口点是ufsta的dll' m  q+ G3 j/ H& g) B$ O/ h

0 s) a( ~+ a" s# |0 @所以在ufsta入口使用UF_MB_add_actions函数可以在UG启动的时候自动启动一个或多个菜单里的命令
% E) Z5 Q7 k$ L9 U8 e+ @4 F% a& b' z参考c++代码  ufsta.cpp.txt ,用此文件代码生成dll放startup目录 ug就会自动加载了
% z9 D3 U0 _6 x9 w2 R9 l6 \) H1 R: e# t2 r. O4 _* j0 t
菜单参考  NXOpen_meilei.men.txt
: @8 t  [6 D" b2 T
( Z8 K* H; f& _" Z$ s/ _  pDDD.DLL代码任意(当然也可以参考DDD.cpp.txt)吧dll也放startup目录
0 P' ?! p4 S  n# x5 ~启动UG就启动dll的方法源代码下载' X0 Y4 k4 a# w$ x
启动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二次开发专题模块培训报名开始啦

    我知道了