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

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

15757753770 楼主

2016-12-11 15:45:38

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

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

x
本帖最后由 15757753770 于 2016-12-11 15:51 编辑
4 W/ u# H* U" ~& u. x6 s0 @7 B0 D2 `3 I
如果你想每次运行UG 判断 ug外挂是否更新6 ^  H3 I- t' f

: [0 O9 y$ |  K8 a9 R, ^3 ?. R3 M, L6 b
原理:
5 p2 e/ g* g! R3 o自己去搞个网站 或者网页 什么的  只要网页内容修改版本时 网页地址不变就行了; \3 q% i2 B  S# M$ L- G. R+ ^+ d# o
然后  启动ug时启动一个dll    dll内容就是获得网页上的 版本号 进行判断
0 V3 y7 ~; s5 ?5 ?6 S0 u
/ ]; h$ X2 ~; A2 g$ L' b# n! h7 [7 z0 O7 E5 ~1 F
被启动的dll程序源代码,如下9 ~3 J" Q/ r+ k+ J9 H6 F
' M0 s7 `, @9 F$ {- l! M
//  Include files- R( X7 Q* H; r. y" ^/ k
#include <uf.h>. J. ^8 t) f& c9 U0 s& ~, F+ s9 P
#include <uf_exit.h>
  b$ ~! P# J' h. N" [#include <uf_ui.h>; `& ^4 d6 t7 n* x+ ?4 g2 K" _
#if ! defined ( __hp9000s800 ) && ! defined ( __sgi ) && ! defined ( __sun )' V, }1 Q) `. A: Y1 S1 R
#        include <strstream>
' I4 R: x- |+ \5 N3 F#   include <iostream>) R9 Q* G! G0 K% j- d! `8 Y& U
        using std:strstream;
4 Q9 t/ Y5 g( V- w        using std::endl;        
( U% p/ Q4 j5 z" @9 l% S        using std::ends;
5 K# ~  ], t8 @3 q3 q$ x& b# i. e        using std::cerr;. K. K* \# d& o0 S9 x
#else& t/ t, f" L$ \( N5 U+ S6 Z
#        include <strstream.h>2 q1 B" t6 _( J7 |6 [6 b
#   include <iostream.h>
2 o  j  P6 P- M2 `#endif
, J7 V" [2 q/ h7 F  O9 m. J#include <string.h>
! S: _3 I( b$ Y+ \+ c" p& t#include <afx.h>3 p# h/ v& F$ k. K" C8 f+ |
#include <windows.h>
* S+ C+ _! H4 ~& V$ y+ o) l#define MAXBLOCKSIZE 1024+ w& @# L' n$ W3 k
#include <wininet.h> //网络
# R6 r" h' G- U7 ]9 O#pragma comment(lib, "wininet.lib")//网络
. D8 [0 v- q4 z2 X% v
; I& Y; ~! V  B# S2 {8 R9 \' Ychar 外挂版本[132]="V2.8F";
- _2 i; Z  I1 v4 u- J/ r' A) O- Z+ B8 R8 O

; G- S& ^& O# p2 N! A; Nwchar_t* CharToWchar(const char* c)   //char*转wchar_t# F) {. l9 Y) V, d8 j+ l/ N
{  
4 ]4 i, K) V8 \2 s4 ~8 C; v, j   wchar_t *m_wchar;' \, G$ E) j: W( M" m" H7 ~# c
    int len = MultiByteToWideChar(CP_ACP,0,c,strlen(c),NULL,0);  
5 c  [) W% V  W  ?9 L8 k    m_wchar=new wchar_t[len+1];  7 [9 }+ g# s, J0 E' ?* O
    MultiByteToWideChar(CP_ACP,0,c,strlen(c),m_wchar,len);  
+ E- k9 V! G0 P    m_wchar[len]='\0';  
4 q( p+ l  M& ?3 `/ Z    return m_wchar;  # w  R/ M* L/ `* z8 u# |) U  j
}  7 ~9 g) [4 B' s/ v

+ o7 g; N& i# X' R- m; M, \9 W//TCHAR 转 char* x* d$ @2 m- N2 b4 C4 E- g
char* ConvertLPWSTRToLPSTR (LPWSTR lpwszStrIn)  
- J, _- |9 f. G{  
/ j; D' E7 A7 P, H    LPSTR pszOut = NULL;  
  d3 B1 V! s9 Y, v    if (lpwszStrIn != NULL)  " W: ?4 Y6 W9 ^; \0 d* F
    {  3 A5 z/ t& N3 T! S; w* L) m
        int nInputStrLen = wcslen (lpwszStrIn);  4 ~6 a- E7 b  u+ z3 R
- r/ c6 w  e% S& f
        // Double NULL Termination  # q  P4 w+ [: H! g. ~
        int nOutputStrLen = WideCharToMultiByte (CP_ACP, 0, lpwszStrIn, nInputStrLen, NULL, 0, 0, 0) + 2;  
* C5 j/ I0 n+ b) e* d        pszOut = new char [nOutputStrLen];  : |% a! i3 {9 y; u6 Z
! E! j9 @: S7 m/ E* U! F3 Y
        if (pszOut)  2 T' k0 L% K  n  M( ], F: b
        {  
; U: X- S3 |* M5 ^            memset (pszOut, 0x00, nOutputStrLen);  
4 c; p6 ~/ v# {: f2 Q% o            WideCharToMultiByte(CP_ACP, 0, lpwszStrIn, nInputStrLen, pszOut, nOutputStrLen, 0, 0);  : t/ w5 m. `: m  R3 a) a- y# c" r% \
        }  # N  I( J$ y- o9 V" D0 x/ @+ [
    }  
% Y' S3 X2 p% X  `& X: k( h    return pszOut;  
: W, P- c( j/ M6 ]" n6 M}  
% s  v) L4 o. f+ h
! ]- n* L7 j3 {" b4 }4 y
# `: C9 B4 Y8 T/ e( ^+ S//CString转char2 {5 K4 {- W- q& F  V: z# k
void CString2Char(CString str, char ch[])( \- }4 v8 K3 L( P% d- Q
{
8 i  ]7 c: V  W% O$ j        int i;
& o+ D  Y) P. C9 ]& ]        char *tmpch;
" y: s; U) H" x" N" y( m        int wLen = WideCharToMultiByte(CP_ACP, 0, str, -1, NULL, 0, NULL, NULL);//得到Char的长度
% a4 x  g! `( o4 X+ i. U        tmpch = new char[wLen + 1];                                             //分配变量的地址大小
8 Y: ^8 ?: l! c) R* B5 ^        WideCharToMultiByte(CP_ACP, 0, str, -1, tmpch, wLen, NULL, NULL);       //将CString转换成char*- P  m' ~+ k/ K+ @* }

) e$ p6 r" ?1 l& D        for(i = 0; tmpch != '\0'; i++) ch = tmpch;& a- Y4 d- z) g) A
        ch = '\0';/ C+ u0 Q) |+ h
}( F$ g  m. h2 k5 Q: C: H

- M& d8 j/ w: E8 [$ ]6 z! B, ^% [( d* r
char *去掉char首尾空格(const char *str)
) p, i1 d, O' a$ d" C) P. _{9 h" x9 f6 d" B+ n
        static char line[133];
) ?5 g7 t  j* ]: N# u% ?0 k        const char *pbegin;
; G1 h4 _0 }- N4 J1 [        char *p,*pend;4 g" u: z- `- c7 w9 Z, [9 s
        int i;  p3 l1 v% G7 g0 I/ o9 @
3 L8 [+ d6 Y4 U( O( y
        pbegin=str;, ]1 m7 e: u# J* T& i) a1 o! U
        while (*pbegin==' ')
( S& {; F0 f& S: [- P7 w0 h  q  J                pbegin++;# N8 J- k, i1 r

" m  W7 F$ j* A. o* G! _9 `* g        p=line;4 O2 C* q7 J( a) Z3 u6 o9 i
        while (*p=*pbegin){
& c6 |/ w" }* |2 `9 e- d) o4 V                if ((*p==' ')&&(*(p-1)!=' '))' R; F$ }# W. _0 g5 B: g. {
                        pend=p;! C7 [1 \4 P4 E4 N2 Q! N& I) p' ~1 T
                p++;pbegin++;        ) ]5 G. _  k6 F
        }  k7 A" S6 R1 \7 w6 n+ P
        if (*(p-1)!=' ') pend=p;- [% `: X6 f% y/ T5 A3 ]
        *pend=0;7 v( w: y# a2 o2 ]; d- u0 O
        return line;' R5 d6 w; l8 x3 v& n* y/ f% s5 e
} : u0 `# U" I9 l' v, [, t
7 O# ^& e9 L- h) U

( C. b! Y# \6 A! Y+ C9 e//获得网页信息 - 网页信息是中文会乱码 用英文信息
! x6 L4 o$ T: O7 a" Pvoid 获得网页内容判断外挂更新(const char *Url,char *html);
  j& i( S7 y! k% |void 获得网页内容判断外挂更新(const char *Url,char *html)
% h; }% @- K/ I/ w  J{
1 O# c6 `$ }+ p0 ]& `# n* a$ ~* I        HINTERNET hSession = InternetOpen(CharToWchar("zwt"), INTERNET_OPEN_TYPE_PRECONFIG, NULL, NULL, 0);. K. v: w  j9 I0 R
        if (hSession != NULL)/ o& k: I$ ^- V9 L+ b
        {: [9 r4 Q+ w. Z8 T2 V& E6 e
                HINTERNET hURL = InternetOpenUrl(hSession, CharToWchar(Url), NULL, 0, INTERNET_FLAG_DONT_CACHE, 0);; U) Z& |5 ]$ h6 N6 E  P  |
                if (hURL != NULL)
+ l9 y) J0 R3 w' {+ @( q6 t8 a                {8 ?& U9 `* G4 g( A6 e" {& x
9 t9 }1 y2 H6 e1 M2 a5 R! t, u
                        char Temp[MAXBLOCKSIZE] = {0};
% R2 _. f% Z  w9 _: h" U                        ULONG Number = 1;
1 e8 v) c, |* r, i+ W                                while (Number > 0): ?3 I# q7 v  U
                                {* K9 p) ^" t+ L% f5 w
                                        InternetReadFile(hURL, Temp, MAXBLOCKSIZE - 1, &Number);" {1 ^, |+ c3 ]  {# A& m$ u
                                        char 判断版本[132]="QQ1821117007S33038219920103MEILEI";) v  w& u* u2 j" P7 n
                                        int a=strlen(Temp);2 E3 N$ F$ h/ M+ o- x8 l
                                        int b=strlen(判断版本);   
  X, S: a7 Y$ n                                        if (a>b)
  t$ J2 ~3 H) U. V" N1 q6 C                                        {( y  U' M9 |3 j. N1 i
                                                char *p=strstr(Temp,判断版本);
! s7 R& e. L4 ~! _* U8 e8 E, q                                                if(NULL != p)+ [( W& _( w" f* p* T
                                                {         
' _/ S! E7 l/ W. d! ^                                                  int wz=a-strlen(p)+1+b;//版本号起始位置
7 E2 Y0 f# s$ M8 a$ e$ s$ K                                                  int wz2=a-wz-1;if (wz2>100) wz2=100;
( E4 @4 m/ q9 q                                          char s1[132]="";( J7 ]: i. I: n+ a+ t
                                              strncpy(s1,Temp+wz,wz2);
% _# y3 {/ k7 q  |# X, g                                                  char *p2=strstr(s1,"MEILEI");
% z0 w) {3 \0 o9 N: `9 @                                                  if(NULL != p2)
% v1 I5 n3 C7 M6 }' N8 K  ~' [. A                                                  {  
$ ~3 v% B4 c0 ^, U6 F                                                          wz2= strlen(s1)-strlen(p2);$ E* v4 s/ A& m. y- V& Z+ w
                                              char 最新版本[132]="";3 r3 B; x: M6 Y- W
                                                  strncpy(最新版本,Temp+wz,wz2);
) V7 J! A( i0 p" v, `. @9 @                                                      if (strcmp( 外挂版本,最新版本)==0)
# X4 e2 s$ B/ s1 h) A# e' A                                                      {
1 `9 j9 `  E- I$ B9 |4 r7 u* R3 l" p  l: n                                                            //MessageBox(NULL,_T("此外挂是最新版本"),_T("梅雷制作"), MB_OKCANCEL );
, @  y4 K" j5 g: x) q                                                      }2 ^7 W* k; ~8 I, c1 e5 U
                                                      else
( U% d' \4 g& ~9 K2 K                                                      {) X7 J9 m/ J3 i4 W( d" K$ a
                                                            char msg[256];
# L7 a" L# z/ T, t9 m                                                            sprintf(msg, "乐清外挂:梅雷制作 - QQ:1821117007                    \n当前版本:%s\n最新版本:%s",外挂版本,最新版本);
, X! ?& h" F; I$ T# i2 t6 d                                MessageBox(NULL,CharToWchar(msg),_T("梅雷提示"), MB_OKCANCEL );4 L, p3 B. X* @, T
                                                      }
& c  \, ~/ A& ?3 ~2 Z$ H0 z* g                                                   }' q% ^" J3 Q  V+ z
                                                  goto LH;: M. ^+ H+ w7 i0 {! Y' l+ A& P4 J2 ?
                                                }
- m4 k1 u* L: ]% Z1 i- W4 b( ?                                        }+ m( ~- ?$ U$ E7 D6 d

! D' x" Z! ^( A, S! o% p9 P: U                                }
' Q4 `9 j+ Y. }( \$ r# ]- J                                LH:;
" `) C% z, w" C& |* R7 m4 u                        InternetCloseHandle(hURL);
. r% h$ O" M: b& |. n2 @% @" {                        hURL = NULL;
* ~& ?" S7 X# G  }: E+ P( }. C5 V                }/ O* }9 p2 W8 `2 h4 L, S4 Z

9 T+ }4 a* v- i3 {6 D$ J                InternetCloseHandle(hSession);. @- y$ \% m, O$ G
                hSession = NULL;6 X* i9 L& f& l+ @
        }' [  i- Y2 l! }+ n" k4 ?6 N. v
}+ L0 m% Z1 a8 v! R# k* t' A% i+ D5 d
$ E9 B& x% {# B- B/ h

$ Z7 |* E4 _, H/ m  S//----------------------------------------------------------------------------
5 d9 Q+ q5 h0 H) Y: j* m//  Activation Methods8 y: O, r) m7 u. `  ~
//----------------------------------------------------------------------------
# M( ?5 A8 ~2 C& |: z) a
) _4 O$ I4 ]: m, @//  Unigraphics Startup- ?4 [$ a  Q% X2 G( [. ?1 z1 q
//      This entry point activates the application at Unigraphics startup
0 D4 g) b: _; s$ L4 o6 hextern "C" DllExport void ufsta( char *param, int *returnCode, int rlen )! r: \% o3 b8 ^8 f& D5 J& j/ D. H& S; P
{" d4 k# E8 ]" [! w& T! x
    /* Initialize the API environment */
* l% v# g! V  z8 Q( X- ]    int errorCode = UF_initialize();: g9 s# s, V- m4 j2 z8 {

+ X4 |3 \  _# c2 ^* x( z& ?$ y    if ( 0 == errorCode )" p5 n3 ~: r  I- G4 j" G
    {7 @6 t8 V* G3 g8 a7 f: O
        /* TODO: Add your application code here */3 f* x+ \$ a1 E1 q5 X
$ \" @/ E0 D: Y1 b9 `% t. t' S

3 E8 z. ~, H+ |, w                //百度云公开链接 通过修改txt文件标题
. ?* P) |0 r% }# ?% L* F                //0.0用于网页判断乐清虹桥外挂版本,验效码QQ1821117007S33038219920103MEILEI=V1.6FMEILEI= MEILEI= MEILEI.txt
( o+ C$ d- ], f+ P4 C/ p5 x7 ~  E) V( r0 ?- C, Y1 F

7 b" z- O2 X5 R. M                char 网页文件[256]="C:\\Windows\\版本.html.bat";  * h5 |1 q0 L7 G1 q* Q; T
                获得网页内容判断外挂更新("http://pan.baidu.com/s/1slw24Vz",网页文件); / y- p9 V( A( u/ [- U: E  T
               
% M" I. j: s- o# \" z        
9 @% s* ^2 D  i
( I3 I% K4 |" i. `
: q, ~2 f7 ]& I# v5 u3 @# `
4 e, Z- i9 T) J" Q4 r% s. q- D        /* Terminate the API environment */, g$ t: M1 ~0 F: N
        errorCode = UF_terminate();
8 E3 M. F) [% n5 U: S    }, C4 T) {: {/ s: j  o' N0 ^
9 b' ^! s  L# Q- L5 i4 u, s7 D
    /* Print out any error messages */
( O/ y* E. l6 breturn;, M. O! x; x1 T0 W: n+ @
}2 I+ L) |/ K4 J8 c  ]
$ k& T5 o+ c! y7 e
//----------------------------------------------------------------------------4 o  u- l0 h1 S) |5 c: P
//  Utilities2 H* Z7 a9 e3 z
//----------------------------------------------------------------------------$ Q+ G- c, s7 y2 m, x: r; P7 k
. a* J3 Z  @$ L' ]2 @4 D( w7 q% y
// Unload Handler
# [' |* w' m# ]; E) {8 `//     This function specifies when to unload your application from Unigraphics.
) `& G& `' F& @6 g+ }8 K) g//     If your application registers a callback (from a MenuScript item or a
7 k2 f) g7 e5 s/ A( W//     User Defined Object for example), this function MUST return, j. a9 x8 x+ Q$ q3 j
//     "UF_UNLOAD_UG_TERMINATE".1 {4 a4 o8 U2 o4 `5 P. x9 ]
extern "C" int ufusr_ask_unload( void )
& ^( [3 v1 g8 ?* b& j* k{
- L( `' n4 T2 A7 ~4 p* B) D" l, [    return( UF_UNLOAD_UG_TERMINATE );
. V) u" O1 Z4 n! ^: p' X5 K6 ?/ w}
. A0 G# I7 h( S# l6 x, U: {! u) E( a! R
; w: @' V  G9 `
启动UG就启动dll的方法0 y+ ?* w- ?4 m
$ t: n% `$ v+ X4 I2 c* U9 ]  h
方法1.添加环境变量+ H3 k4 i) {. R2 e$ J2 {" [. F
USER_STARTUP=D:\MEILEI.DLL0 N2 ^8 X: U4 y" ]
但是只能运行一个dll而且别人也使用这个环境变量那么久不方便了. o$ f/ x: @& c' M: @  y

- c5 A. A: O! c8 s, T方法2.在代码里添加(可以执行n个dll)5 h* N0 m. M& ~6 d% c" _
UG会自动加载 startup目录里入口点是ufsta的dll6 P" v. H7 \/ M  }
- L) i  {' y2 p  p. G$ N
所以在ufsta入口使用UF_MB_add_actions函数可以在UG启动的时候自动启动一个或多个菜单里的命令
9 a- }' A# p2 n0 _参考c++代码  ufsta.cpp.txt ,用此文件代码生成dll放startup目录 ug就会自动加载了9 ^/ u5 N: s9 W- b' A+ ]

5 z0 e3 k+ T  j% n5 E  O菜单参考  NXOpen_meilei.men.txt6 x! }: K  P# C( H+ l, N- d* q& c
, i6 T+ q4 P" W6 y* W' e+ b7 ?
DDD.DLL代码任意(当然也可以参考DDD.cpp.txt)吧dll也放startup目录
& h6 L2 z$ ?: H8 N( J& ^启动UG就启动dll的方法源代码下载# L7 t6 W4 y. J+ N# t9 A( b, \
启动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二次开发专题模块培训报名开始啦

    我知道了