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

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

15757753770 楼主

2016-12-11 15:45:38

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

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

x
本帖最后由 15757753770 于 2016-12-11 15:51 编辑 ( G4 v. m0 g2 _6 f0 {
( D* P! T; b5 m; e  d( c
如果你想每次运行UG 判断 ug外挂是否更新2 `7 P6 }" X* l: i+ L$ i
# a+ c& ?; M+ F9 Z+ ^2 Y

* t- U+ j2 o7 Y原理:
, L* z8 j6 h( D/ v& w6 R自己去搞个网站 或者网页 什么的  只要网页内容修改版本时 网页地址不变就行了$ T1 n5 [5 A' V: R" b
然后  启动ug时启动一个dll    dll内容就是获得网页上的 版本号 进行判断6 b4 P$ p- |7 z) e! _9 g

+ g; E5 f& l9 c6 l4 C7 g) y* a( }8 @/ }* _1 s6 o: j
被启动的dll程序源代码,如下
& b) D( ~/ Z0 L$ q5 }; S& }% Q0 o5 M- e3 u5 @; E0 ^; X; ^
//  Include files
4 m) H' p; _- |# X, o+ [#include <uf.h>
4 M! R- F- Q  X+ _6 h/ c#include <uf_exit.h>
; Z% ?+ T: X$ D#include <uf_ui.h>* W2 z  ^; Q2 G/ O
#if ! defined ( __hp9000s800 ) && ! defined ( __sgi ) && ! defined ( __sun )
5 g* K# Z+ D' B6 a#        include <strstream>* a( o2 A# `" C3 e
#   include <iostream>  ~3 ?) N# I; h9 k2 z# D
        using std:strstream;* Z( Z& O! n- J' Q3 n- A# x4 G- y
        using std::endl;        5 {" ^* \9 j- D9 Z# m
        using std::ends;6 y( q. B& }" c4 M: d2 P% b- r
        using std::cerr;: k; w% y# a: z7 }
#else5 U# k/ Z# X. ]+ R
#        include <strstream.h>
8 n4 z  v1 `* x5 Q. J#   include <iostream.h>) P+ ]/ X4 {# S% H
#endif
, d% z/ S% |) m% _! M#include <string.h>- |& g4 K+ B9 U2 D3 ]& n( `
#include <afx.h>% ]: K( f3 x% y; t
#include <windows.h>
! c8 j2 n7 \' T6 x/ M  ?! t#define MAXBLOCKSIZE 1024: t. B+ O' ~( b
#include <wininet.h> //网络
7 p& ^! g' E0 q! v#pragma comment(lib, "wininet.lib")//网络; F# }( Y+ _0 H9 O$ O! ^
: B  }! Z/ L) w' b& f) D/ j9 W
char 外挂版本[132]="V2.8F";
1 y5 K( T% m( b7 U7 b0 `$ A% w6 R
5 l: y4 f3 V( I; c8 i) y1 Y9 D% ^: q
wchar_t* CharToWchar(const char* c)   //char*转wchar_t
, D$ o  m* e% L- B! V# D$ Q{  ; n( W2 x+ F# `5 E# S: s
   wchar_t *m_wchar;
3 }9 g8 l# |. W2 h( q+ P    int len = MultiByteToWideChar(CP_ACP,0,c,strlen(c),NULL,0);  
- q, k' r$ i0 f' N7 `    m_wchar=new wchar_t[len+1];  
7 U3 c! q# t5 B/ r8 _    MultiByteToWideChar(CP_ACP,0,c,strlen(c),m_wchar,len);  ! Y6 U6 z3 K2 I" z: }0 O0 p$ _$ Y
    m_wchar[len]='\0';  
$ \& G. O  @& e    return m_wchar;  ! k% B5 v8 d0 n/ u% e
}  1 C+ f- b0 P4 O/ f) h8 W7 G- O

' x( C- ]8 d; x1 t/ q. ^//TCHAR 转 char. i; V# D; P! y
char* ConvertLPWSTRToLPSTR (LPWSTR lpwszStrIn)  : y- i8 k+ H- F4 ]" r; c
{  8 v+ _' W# s, d. H6 t, j
    LPSTR pszOut = NULL;  
+ _+ [2 Y8 @# X+ r* `5 Q' L    if (lpwszStrIn != NULL)  . U( U, }* |  {) I
    {  
% `$ K. Q) D8 A! C9 b# o) U8 s/ F        int nInputStrLen = wcslen (lpwszStrIn);  0 J% v% R. u- ]' @5 e6 L
' R& Q7 b( U( S/ {9 Q7 n! \+ G
        // Double NULL Termination  
) M$ e8 ?$ N4 ?- @        int nOutputStrLen = WideCharToMultiByte (CP_ACP, 0, lpwszStrIn, nInputStrLen, NULL, 0, 0, 0) + 2;  
5 C+ R5 B' ], A2 K7 _        pszOut = new char [nOutputStrLen];  
% \8 f2 U# g5 m* t1 F4 h0 P% G
" J/ s. ^7 [. O6 O        if (pszOut)  
! Y3 L& s: j6 G" A! ?# U        {  2 I/ b! y! g5 u; X% \
            memset (pszOut, 0x00, nOutputStrLen);  5 O' y0 k; t( S
            WideCharToMultiByte(CP_ACP, 0, lpwszStrIn, nInputStrLen, pszOut, nOutputStrLen, 0, 0);  $ C  G2 H& k' [: ~; X5 I
        }  
7 X8 y6 f- N; q7 \2 \5 w2 a    }  + Y  C) |- E; _: d" d2 @" ?
    return pszOut;  
2 y2 V# [5 ?) @}  
7 }4 u# f" T1 w+ _, Z( O2 M
! V0 w* D# R/ d4 m$ w  A; v1 |1 |. u" ^
//CString转char
+ R/ k; q2 M& bvoid CString2Char(CString str, char ch[])3 [9 Z8 T; ^4 W% n& b6 I: f, I
{" a1 J$ Q& P8 x' z
        int i;2 ?1 ]- D% z4 m3 d, S: I1 n
        char *tmpch;4 U1 j# @7 y/ r$ M
        int wLen = WideCharToMultiByte(CP_ACP, 0, str, -1, NULL, 0, NULL, NULL);//得到Char的长度% g: E% h/ j$ X# S5 a) J
        tmpch = new char[wLen + 1];                                             //分配变量的地址大小. b1 X2 e& N% K) Q) t
        WideCharToMultiByte(CP_ACP, 0, str, -1, tmpch, wLen, NULL, NULL);       //将CString转换成char*: N; c4 f' {4 B9 N) X

: r. _; h% J, _' M        for(i = 0; tmpch != '\0'; i++) ch = tmpch;
0 f" B8 H# [6 r  h6 `        ch = '\0';6 _2 @9 Q; p/ n# b4 i( J) ~. z
}( U1 b! ^7 Q. o% W, R8 o
: ~$ W9 _/ J1 Y6 b1 J; F! O

; W3 W+ C% k* `/ A& C# A* \" dchar *去掉char首尾空格(const char *str)
4 Y: u3 Y# P. c9 N" _{
; K$ A6 P' n% n! Y1 q; l4 l% n        static char line[133];9 z, B/ G0 R) q/ L
        const char *pbegin;
  X3 d- ]9 L$ }* |% [4 M/ n        char *p,*pend;
7 ]/ ?+ ~4 G& u7 k* o* I        int i;: N0 P& J" i6 h' m
7 {. u9 Y# N% V. W4 g
        pbegin=str;  z8 I; x5 }" H2 I6 ^; @7 z) K
        while (*pbegin==' ')
6 T  j/ {/ J+ A1 f  V                pbegin++;; R/ d, O4 X% M1 ^

7 L$ _4 ]# d. D        p=line;& F9 N2 V3 S5 O3 Z" M
        while (*p=*pbegin){
4 L+ L# ?! l  M0 m8 t) k: L. N                if ((*p==' ')&&(*(p-1)!=' '))
7 v' m: f- X0 v& P% F" E' _                        pend=p;
: M$ y* u2 ^. H, G: X4 c                p++;pbegin++;        
- F2 T/ l6 e+ [0 f; D        }
* u& p4 p2 M& c! ^5 W        if (*(p-1)!=' ') pend=p;8 _. Z0 O/ g6 w- ^8 \5 w
        *pend=0;6 }3 u/ E, l  J6 F0 s! {: `4 Z+ p) l' }3 |
        return line;
0 k- w0 f$ F# n2 Q! G4 b" g} ( R  e3 Q( a* V9 E0 T
9 [: j5 E' [7 a

* |0 d. ^1 |( l; J& ^  h//获得网页信息 - 网页信息是中文会乱码 用英文信息" `- Q1 [: q6 ~$ @  S$ a' X
void 获得网页内容判断外挂更新(const char *Url,char *html);
+ O% ]) ]' @8 l9 Bvoid 获得网页内容判断外挂更新(const char *Url,char *html)
, f+ a9 Y* d. j4 _6 W& T9 P{
* i! G& q! }0 @) Q% M        HINTERNET hSession = InternetOpen(CharToWchar("zwt"), INTERNET_OPEN_TYPE_PRECONFIG, NULL, NULL, 0);* e" {. O: c* s1 r
        if (hSession != NULL)
+ i- i7 ?* P" Y        {- n; J' w7 |& w+ \0 m
                HINTERNET hURL = InternetOpenUrl(hSession, CharToWchar(Url), NULL, 0, INTERNET_FLAG_DONT_CACHE, 0);
8 H, G( [& F4 Q                if (hURL != NULL)) }$ j& p- U9 L5 S/ w# b+ g
                {
3 i3 k2 U6 P9 C$ J& C& @$ J6 n
/ c2 `3 V$ E6 o2 h/ I                        char Temp[MAXBLOCKSIZE] = {0};
0 A  n" X' n& B% {2 ^                        ULONG Number = 1;
: O" G2 w9 x- ^) d4 @                                while (Number > 0)5 }, ~* N4 d0 r, v! r  ^
                                {
! v, X+ U; q8 e5 c; F; d. G                                        InternetReadFile(hURL, Temp, MAXBLOCKSIZE - 1, &Number);1 v6 z) p0 Y/ p3 ~
                                        char 判断版本[132]="QQ1821117007S33038219920103MEILEI";
' y7 V( T6 @( l+ V                                        int a=strlen(Temp);7 }& N  ^9 N0 q4 F6 N0 ?
                                        int b=strlen(判断版本);   
( ^& B- F2 H5 A3 _1 a                                        if (a>b)
+ i. s! S0 A6 @( x8 y" f4 ^9 y                                        {
. c5 r1 k6 k$ a6 N                                                char *p=strstr(Temp,判断版本);
% p; S6 W9 p& v2 j                                                if(NULL != p)
- U1 U8 D% U  B* f6 t- s9 s- H; w                                                {          : x, E! y7 H$ W9 X
                                                  int wz=a-strlen(p)+1+b;//版本号起始位置
% q2 G/ v; S' ~- h                                                  int wz2=a-wz-1;if (wz2>100) wz2=100;0 x  y1 l. C& z- r7 }  ^/ Q
                                          char s1[132]="";
. u) {1 _# |1 Q. l0 X$ d% n( M                                              strncpy(s1,Temp+wz,wz2);% u+ T, J; O1 s" J- t+ C8 Z
                                                  char *p2=strstr(s1,"MEILEI");
- s( O' L$ [" C/ M  a. f                                                  if(NULL != p2)+ z8 F$ Z5 J3 W4 ]$ Z$ j6 N0 f" a* ~
                                                  {  
: ]* u0 _2 |$ V                                                          wz2= strlen(s1)-strlen(p2);
% n; e5 l% o5 m: c9 C* N8 w                                              char 最新版本[132]="";4 o- c4 g; x. u' [( y$ k6 A. B5 a. Q
                                                  strncpy(最新版本,Temp+wz,wz2);
* ^# S) ?/ N  D7 y                                                      if (strcmp( 外挂版本,最新版本)==0)
/ q8 z3 b* Q5 O6 Y                                                      {
, j8 Y6 j0 R: N; K                                                            //MessageBox(NULL,_T("此外挂是最新版本"),_T("梅雷制作"), MB_OKCANCEL );; ]3 r5 P4 l: x5 k) V
                                                      }
2 b, g6 m7 |+ s; F                                                      else
) k1 s/ e* k  j" O2 t  [  ~& L                                                      {
# o4 r- h' Q' K, G                                                            char msg[256];' g8 g. i2 w( V+ A9 o) R
                                                            sprintf(msg, "乐清外挂:梅雷制作 - QQ:1821117007                    \n当前版本:%s\n最新版本:%s",外挂版本,最新版本);
% P0 `2 |: U3 O: L                                MessageBox(NULL,CharToWchar(msg),_T("梅雷提示"), MB_OKCANCEL );
3 [9 t3 C/ x2 |. x, ?! p                                                      }
) ]9 m/ P4 g# i% H: ?                                                   }
9 }4 S/ S$ u: \! N3 k3 q                                                  goto LH;
6 A" B4 [) s8 W4 m- `* l4 {                                                }/ P; d8 Z( j( s7 Y# t1 e
                                        }7 B0 r' r- X) T# S' t) I
: n/ h' n" u+ {, O+ I+ R* k5 v
                                }
3 r+ \/ H3 W3 }- s5 }- L                                LH:;8 m1 F8 L6 V- v  t# e3 h5 M  D
                        InternetCloseHandle(hURL);
7 |6 N7 n0 f8 |                        hURL = NULL;
( A9 L$ w8 B# I. s                }
3 |" s7 O* S* S/ |% y9 i! K" I# q& |* i* P% T3 v, H
                InternetCloseHandle(hSession);/ p% Q1 X" k5 W. J4 M7 J
                hSession = NULL;
5 R% g  q0 t9 i7 S; f3 \% s" p        }' \+ d5 J7 U( L2 [& F$ u
}
! x- s' S9 K9 z: t2 K
4 x( w- H9 Y. a; _5 I( H3 K2 T( _: j
//----------------------------------------------------------------------------& ?6 `; H" C& P
//  Activation Methods7 c) W4 r# Z/ `
//----------------------------------------------------------------------------
4 \' W2 m1 D  \
% X6 m. ~' [, O* E8 d$ X//  Unigraphics Startup
" f' ~8 _5 @2 g2 h* E, c9 M//      This entry point activates the application at Unigraphics startup  ~- Y  ?8 a# I% I) ?
extern "C" DllExport void ufsta( char *param, int *returnCode, int rlen )
; b' ?- q& L4 P/ G# B; i, H{
9 L- I; P' A+ x/ Y    /* Initialize the API environment */
( R8 U6 l+ L/ T4 x    int errorCode = UF_initialize();
; Z" j, ^, r) d! ]5 I: m
( {. E6 ]$ Z; ~    if ( 0 == errorCode )
. f* Q( I* c" T) v8 @0 |2 w    {) D9 b) l& H6 v" o
        /* TODO: Add your application code here */5 {; o5 u0 F1 _" u

# B/ F! h9 i: @' s
( ~# M. T: F; c" `                //百度云公开链接 通过修改txt文件标题
- x3 q& \% K$ h2 c, {# s                //0.0用于网页判断乐清虹桥外挂版本,验效码QQ1821117007S33038219920103MEILEI=V1.6FMEILEI= MEILEI= MEILEI.txt
* O. j% b+ M/ D' y4 n9 v* I  s
6 Z0 c! V  E7 f
8 t6 e/ G8 d0 |2 g9 a" L                char 网页文件[256]="C:\\Windows\\版本.html.bat";  
; j& G% Q8 b7 |7 j                获得网页内容判断外挂更新("http://pan.baidu.com/s/1slw24Vz",网页文件); / P; ]! T+ S4 A0 `6 \7 M6 @. a
                  J# q" w: n7 h' `5 m8 ]
        
9 ?1 s* M8 O) k& Y+ E8 ?; s* d* y
5 S, u1 z1 |, J2 u) Z0 q8 l. N9 W. O" P3 h8 |+ w  t

: j& A5 w$ {5 l: N& E. h5 ^& t6 c        /* Terminate the API environment */
( A, k: E  H! T, ?        errorCode = UF_terminate();1 E0 [0 B; D" R6 A) |, H
    }! W* b9 S4 ]0 ^
" O# C3 i& ]6 J9 h: D
    /* Print out any error messages */' @+ v! D  p4 A( e! A& {5 r
return;% m% v+ W3 `' h- D( _
}4 j* z' G/ j% N8 z# x

$ f& U' w# u& E/ p- _//----------------------------------------------------------------------------
7 }% `+ K# H5 D$ T( Z//  Utilities
3 q. o5 I4 S6 \  g5 _6 |$ ^" j! I/ K2 q//----------------------------------------------------------------------------
1 u- ^! O3 A3 R9 {: i8 u
# |5 F+ m& U# G% j  L// Unload Handler  ]2 X3 a# l- n3 f2 B# o
//     This function specifies when to unload your application from Unigraphics.
& |; v& o4 ]. v4 c, ]) f" l//     If your application registers a callback (from a MenuScript item or a! ^( o+ ~+ o; n8 G( L0 m8 X
//     User Defined Object for example), this function MUST return6 ]1 ]  B4 J  S
//     "UF_UNLOAD_UG_TERMINATE".
1 j! K2 X& {# Qextern "C" int ufusr_ask_unload( void )
5 y, n- b2 h- Q, U# L{6 B; q% l& k: Y3 f$ D" U0 n& \! D
    return( UF_UNLOAD_UG_TERMINATE );
) B1 S! `  g) ^}
2 Y, q4 j# Z+ k1 r
9 C" Q- q0 }3 _/ `1 T7 b
. r- t8 k+ f! i3 H, J* u$ v) G启动UG就启动dll的方法+ @6 ~  b1 R+ t6 B
1 e; K9 ?6 u! t3 b
方法1.添加环境变量
( B7 w) ]* ?  K$ L6 \USER_STARTUP=D:\MEILEI.DLL/ _1 z4 v* {7 I$ |& N7 t
但是只能运行一个dll而且别人也使用这个环境变量那么久不方便了
+ F2 h8 P1 S9 e# Y/ ]7 R4 Q1 b; S$ c9 m9 Y0 W9 O
方法2.在代码里添加(可以执行n个dll)4 \" ~2 s5 H9 V! t3 b; A9 R2 i
UG会自动加载 startup目录里入口点是ufsta的dll
/ B& C1 P+ ^& U8 v* P! ~* Z# R3 b6 L* ~& R  [, |1 y0 o5 ]- |
所以在ufsta入口使用UF_MB_add_actions函数可以在UG启动的时候自动启动一个或多个菜单里的命令
" }9 f1 z: @* a& h3 O2 a参考c++代码  ufsta.cpp.txt ,用此文件代码生成dll放startup目录 ug就会自动加载了
1 h0 w, E6 J9 ?0 I' M
2 e$ W- @5 s1 q  I* t, A% }4 `3 a菜单参考  NXOpen_meilei.men.txt
/ `: J2 l9 |, W" T" J+ m
" p; f# I; x/ Q' c% G9 @5 Q3 x& zDDD.DLL代码任意(当然也可以参考DDD.cpp.txt)吧dll也放startup目录5 a( c6 R9 E, r& J: U) k9 B' `
启动UG就启动dll的方法源代码下载8 |6 I" H  m$ j. C
启动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二次开发专题模块培训报名开始啦

    我知道了