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

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

15757753770 楼主

2016-12-11 15:45:38

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

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

x
本帖最后由 15757753770 于 2016-12-11 15:51 编辑
7 q; l! G* }* @) j% J
. e: v. O! L  k8 U" n如果你想每次运行UG 判断 ug外挂是否更新  O* n$ G: T" v9 ~

1 f1 {( a. l* ~; U  L; Y8 q$ N0 _0 Q  L* p. [) S" t: H
原理:
$ I6 u2 M3 D) ~自己去搞个网站 或者网页 什么的  只要网页内容修改版本时 网页地址不变就行了
: W' D2 I) }  ^. J" i然后  启动ug时启动一个dll    dll内容就是获得网页上的 版本号 进行判断5 E/ ~7 \! T, s" A$ P7 v
/ E# y1 j( N8 [# l- O0 Y1 T9 o

3 L6 j' u  [5 X5 g1 v被启动的dll程序源代码,如下+ ~0 x- Q/ R7 m& C6 F

, p+ a' |" {  D& ^" F1 Y% N, ]* ^, o//  Include files) b! }& f; D: g1 H0 F. U1 `
#include <uf.h>' \+ b1 }* b/ _2 Y6 \' W
#include <uf_exit.h>
! e2 a& J# z2 M1 c/ ]  E+ }9 w+ u#include <uf_ui.h>; {& @9 A3 x( |% W5 o/ Q7 q
#if ! defined ( __hp9000s800 ) && ! defined ( __sgi ) && ! defined ( __sun ). C# v7 I' S) z, e" P
#        include <strstream>( e4 Q) r  [4 B/ S
#   include <iostream>2 P% x  ^* f9 J1 S4 A, J
        using std:strstream;, b8 w! a: `0 R5 W* j
        using std::endl;        
' C' ^- t* ?( f1 ^9 c: z* i        using std::ends;4 \3 B+ l! r. Q4 Z7 f2 B, Y
        using std::cerr;* i5 }0 l, m  h- @+ }, |
#else9 m7 }( R3 V3 f& \2 C
#        include <strstream.h>
7 I/ x1 O: k3 d5 z#   include <iostream.h>, e0 g7 I4 J* @- |! g) `
#endif# v8 ~2 K9 }& K$ }* W; b
#include <string.h>3 ?! q) L) R( \! `
#include <afx.h># c/ Z1 g# S6 |& e& c
#include <windows.h>. g) p- @( {3 J7 Y3 y! ~
#define MAXBLOCKSIZE 1024
- R+ Q2 Z2 z; J#include <wininet.h> //网络# Z. ]* {. e: i
#pragma comment(lib, "wininet.lib")//网络
, k4 F. W# g* H8 F; L8 U( X* y+ Y% X7 ~
char 外挂版本[132]="V2.8F";4 Z& i, K/ j2 o$ }: @

% y9 R1 O5 x# P9 W: }5 ^$ Z  ]0 b$ z+ S/ I- A0 _
wchar_t* CharToWchar(const char* c)   //char*转wchar_t. I0 M7 [3 B" o# K
{  
+ ?- c" _, ~4 C  g; f: X   wchar_t *m_wchar;
8 S2 a3 W' D. D" J    int len = MultiByteToWideChar(CP_ACP,0,c,strlen(c),NULL,0);  
+ e) g+ I- T! M( p+ u+ K$ F4 I    m_wchar=new wchar_t[len+1];  
* ^, |. v3 I3 c/ v. w" S$ A  h    MultiByteToWideChar(CP_ACP,0,c,strlen(c),m_wchar,len);  - l5 K. T2 g" G% {
    m_wchar[len]='\0';  
9 ^4 [- Z8 T2 y* W  e/ f- `, r, f    return m_wchar;  
% {" X1 N$ z& B* K) A0 B7 P}  
/ T, k. Q$ t4 r5 t' b; p, G6 n, [( _
//TCHAR 转 char) G3 {7 A8 f+ e: z! }) g
char* ConvertLPWSTRToLPSTR (LPWSTR lpwszStrIn)  . R4 |& f1 {% p
{  
  F% H4 h9 n. L3 i9 L% F    LPSTR pszOut = NULL;  : V1 U# i' m/ F* b6 I
    if (lpwszStrIn != NULL)  4 z" P6 e  W2 z/ d& z
    {  7 D( H3 A0 w! ~. O3 ~# x
        int nInputStrLen = wcslen (lpwszStrIn);  ! S% W( m5 @# }* e+ G

7 p7 y8 J- R4 F5 |- u        // Double NULL Termination  
2 G6 q( _% x# C: U3 z        int nOutputStrLen = WideCharToMultiByte (CP_ACP, 0, lpwszStrIn, nInputStrLen, NULL, 0, 0, 0) + 2;  
2 r- n9 Q; A8 C, \2 d4 h9 {        pszOut = new char [nOutputStrLen];  $ C5 k( P7 Z$ M! c3 K
( _9 V- C  o% w0 {4 A
        if (pszOut)  3 O) [) q3 _5 I# }) q0 [( X
        {  & _6 H0 Y. f1 ]
            memset (pszOut, 0x00, nOutputStrLen);  
4 l4 z2 y+ O, ~2 _4 V# ~2 X  M6 l            WideCharToMultiByte(CP_ACP, 0, lpwszStrIn, nInputStrLen, pszOut, nOutputStrLen, 0, 0);  2 a2 o2 I8 y8 U& T% [5 ]6 ^
        }  
( t0 O5 _% Q  K5 [    }  / v; v  u0 f* N1 ]
    return pszOut;  
8 H) T/ Q! ]2 `) [/ w}  
8 j! _( M. B. Z5 H# d) G* I
4 I7 ~$ O! P6 H0 j! z( Z& a4 F, z6 U
//CString转char
/ Q3 w) M9 `& y3 V- Vvoid CString2Char(CString str, char ch[])* w/ v  ?$ z- o1 m: l4 h+ s( N0 x
{
: T/ v0 b$ m  z0 S        int i;
1 r) K2 z5 r  w( c+ p2 U        char *tmpch;
% h) e. x- F* b) r3 y        int wLen = WideCharToMultiByte(CP_ACP, 0, str, -1, NULL, 0, NULL, NULL);//得到Char的长度
3 W; D6 X0 T5 g4 V: Z        tmpch = new char[wLen + 1];                                             //分配变量的地址大小
5 ^: v8 I9 a2 G$ f: d        WideCharToMultiByte(CP_ACP, 0, str, -1, tmpch, wLen, NULL, NULL);       //将CString转换成char*
  `* h8 \$ c" y2 v' T
0 L. s2 k. i( G, p! K. }0 q5 }        for(i = 0; tmpch != '\0'; i++) ch = tmpch;- ?& i7 W: p3 C' V0 h
        ch = '\0';; O& B0 t5 y& U6 Y8 s
}
2 N/ R3 r* W) z% v
' }, o! h# |! H1 `# v* l
. ~5 x, |+ |3 g# jchar *去掉char首尾空格(const char *str)
9 z5 n0 Z, E: @/ \{  h' |- \' H9 U2 v* {
        static char line[133];
$ V+ Q! w3 k  u& U        const char *pbegin;$ C# a: O2 I8 a; ~
        char *p,*pend;' j( e8 m" m2 V" C
        int i;( `, a+ o, l5 B7 V& m) V

8 T( `8 u9 [$ d6 _  e" }3 ^, I; E8 p        pbegin=str;
# c* m. {) Q0 g9 R        while (*pbegin==' ')
# v0 {& V$ k* A# G9 E. q                pbegin++;
+ v( K& \! u" l
! W- E6 R% f4 n4 ]1 H        p=line;
# \( L$ x! O6 x: f        while (*p=*pbegin){
1 |, N  ?! Z7 z* _9 m6 {, t: h                if ((*p==' ')&&(*(p-1)!=' '))
$ a# h/ {" A+ d: ?# k                        pend=p;
$ _5 ]& e! k. }6 E. o+ ?$ N1 }! l! Q                p++;pbegin++;        " ]' W. @/ C9 a- w. I
        }. v* G2 x; W# s) X! k
        if (*(p-1)!=' ') pend=p;( ^! o2 @( o! O) q- X3 q
        *pend=0;
2 X! J" Z: \5 X0 f        return line;
3 g/ S+ D# ^7 m% _3 v# ^" V} # _7 ~6 y' u( m7 Z/ O! p% C

" \3 V1 e3 p8 A( s* D
% D7 q! D! \9 v//获得网页信息 - 网页信息是中文会乱码 用英文信息
4 O! s  W' S. e% s( A5 c7 Kvoid 获得网页内容判断外挂更新(const char *Url,char *html);
- W% a: a7 F$ @9 }# N5 Avoid 获得网页内容判断外挂更新(const char *Url,char *html)
- u0 G! |( Y3 p* B4 n4 C: T& S{2 j3 V1 K0 L( I8 P2 w
        HINTERNET hSession = InternetOpen(CharToWchar("zwt"), INTERNET_OPEN_TYPE_PRECONFIG, NULL, NULL, 0);
* t+ W2 K8 }; j* o        if (hSession != NULL)
) m  [2 t/ @1 J1 W        {
9 f. Z6 u( ]2 O2 L6 p( w! `                HINTERNET hURL = InternetOpenUrl(hSession, CharToWchar(Url), NULL, 0, INTERNET_FLAG_DONT_CACHE, 0);1 q% s' z+ S7 r* f8 l
                if (hURL != NULL)1 M  M8 }% F3 c9 C) p# W% y
                {
- P( M8 o; o8 T6 M" b  O2 G
. L3 b4 ^" z+ f& U3 o                        char Temp[MAXBLOCKSIZE] = {0};. f4 \2 A, H) }# v( }9 I$ w$ l0 @; \1 h  Z
                        ULONG Number = 1;
3 T8 {2 v+ ~% ]$ b. H1 \& C' y2 r- R% V                                while (Number > 0)
, D# [/ f: Q& m                                {
4 s4 b3 e* o4 a+ J# e                                        InternetReadFile(hURL, Temp, MAXBLOCKSIZE - 1, &Number);: R7 ~0 o" Y4 g* O9 ^, n
                                        char 判断版本[132]="QQ1821117007S33038219920103MEILEI";
" s  b+ `. ~: l. I; v( A/ S                                        int a=strlen(Temp);( n/ S+ p) P4 V. t: [0 d
                                        int b=strlen(判断版本);   $ O& o! `3 t0 [
                                        if (a>b) ; i- R& I6 Z4 e4 m4 m7 G8 |
                                        {
, ]9 t$ I  L  T& w, L" f! ~                                                char *p=strstr(Temp,判断版本);
: _8 N  A' |6 G" K, P# [- G* Y/ U- @                                                if(NULL != p)% L/ y* p3 T+ C1 o! C$ f6 e
                                                {          6 s8 _1 ~3 g+ o$ Y7 O. q
                                                  int wz=a-strlen(p)+1+b;//版本号起始位置- r" o7 M7 a- Q
                                                  int wz2=a-wz-1;if (wz2>100) wz2=100;
& }* P& K& S# l: v                                          char s1[132]="";
9 i+ e# G, ^! o  z8 Q5 G5 W% ]                                              strncpy(s1,Temp+wz,wz2);
% K1 F$ R' i# I8 ?1 }; z                                                  char *p2=strstr(s1,"MEILEI");
$ N' c  y/ u) v9 |( E7 W' n6 K                                                  if(NULL != p2); q& G% }/ J9 q8 H6 R- F
                                                  {  ; t) j2 B9 Z$ |0 A
                                                          wz2= strlen(s1)-strlen(p2);
2 `9 x7 Q3 R* b8 q  o% }                                              char 最新版本[132]="";* }( Q! s4 q, S/ I
                                                  strncpy(最新版本,Temp+wz,wz2);
9 s+ D9 L& r0 j                                                      if (strcmp( 外挂版本,最新版本)==0)* f  j7 T3 ?8 l0 i4 R$ [
                                                      { 5 c; T/ f) l# I* z& u8 b; _
                                                            //MessageBox(NULL,_T("此外挂是最新版本"),_T("梅雷制作"), MB_OKCANCEL );
1 o1 c6 ^" H; I' f: h) z                                                      }
7 ^( i7 R( o& s5 T. h$ |                                                      else
; i& F( L& f7 D& V; z0 `+ i' x                                                      {( u+ a4 j/ G% u6 P) `
                                                            char msg[256];( R9 d9 ^4 M% }+ Z1 k& ?
                                                            sprintf(msg, "乐清外挂:梅雷制作 - QQ:1821117007                    \n当前版本:%s\n最新版本:%s",外挂版本,最新版本);9 C" M" Q: [1 Z. \  S
                                MessageBox(NULL,CharToWchar(msg),_T("梅雷提示"), MB_OKCANCEL );( l/ o4 h5 E; w
                                                      }
9 ^; n* k( Y) Y  e9 D! P. G                                                   }  Z1 R* k4 F# o/ m
                                                  goto LH;
0 F( t& g8 m7 [5 b& r, K4 O# z                                                }
, C* V5 R* z1 S0 E: ^: f; A                                        }3 h! d' M4 a6 r: V, j8 a! t

# Z8 e" i5 c- C                                }
5 A2 C4 B1 m" c+ v                                LH:;
/ U. F5 r2 M7 U                        InternetCloseHandle(hURL);
) U' c5 i$ }. r- P                        hURL = NULL;
3 P4 J5 k! s4 @' B                }
2 P1 Z: w! X8 ~8 }/ o# w4 Y* J! `
                InternetCloseHandle(hSession);
9 Z0 B9 w' x5 x                hSession = NULL;  y) n1 _* L$ J. i2 a
        }
- ]' ?: Z0 Q) F0 ]}! I" B% P$ J# I6 x& R( y! R
: m) a) u0 ~6 N. B& r9 t0 V
* l1 R1 r3 y' Z+ ~9 ]9 T
//----------------------------------------------------------------------------
( }' h5 L6 F+ T) W//  Activation Methods; `' q9 R" j) }4 @2 |6 H# c
//----------------------------------------------------------------------------% E# I# `6 |2 Z4 u' ]

+ G- ~4 b2 N$ z//  Unigraphics Startup0 c& S! M6 w5 I% z5 u+ @( o
//      This entry point activates the application at Unigraphics startup
. c. K5 Z6 {+ B! V( L7 Cextern "C" DllExport void ufsta( char *param, int *returnCode, int rlen )3 \( r6 d# t1 c, O+ f! c4 z
{% O( V8 j- t- w- O
    /* Initialize the API environment */
2 [6 N* K& g# Q6 ~9 M  i    int errorCode = UF_initialize();% X' U3 D: ~; {/ o; K7 Q# A. ]
2 N% y0 `5 b& a
    if ( 0 == errorCode )" O" ^, G' J) [9 n! d: S9 v$ B/ z) {
    {' M3 G/ X' q  f2 R: I, |
        /* TODO: Add your application code here */0 F3 q. Y4 u0 k3 }- J) m
# W5 T; u1 n* B( }2 o
% C* z' B0 o3 ~/ ]$ j# ]  |: g
                //百度云公开链接 通过修改txt文件标题( k+ W, f, l. H
                //0.0用于网页判断乐清虹桥外挂版本,验效码QQ1821117007S33038219920103MEILEI=V1.6FMEILEI= MEILEI= MEILEI.txt
2 C2 T. e1 e0 P4 c% ^9 T. y- n* S! |+ w/ f* l, m

; g+ a4 J* z8 n) x2 @' @                char 网页文件[256]="C:\\Windows\\版本.html.bat";  3 H; n, {+ F$ n. w9 V& K. W, H
                获得网页内容判断外挂更新("http://pan.baidu.com/s/1slw24Vz",网页文件);
6 q9 i( d2 U1 [9 A/ q                2 J; ?: q+ |! `$ ~
        0 z/ ]; [! }7 g  g! m
7 j6 g# z3 c( N) R, m6 n5 F0 c4 U

4 K- d' `# b4 c* m8 m! ^- b+ M: c( W9 |6 Y: V) `) ?1 e
        /* Terminate the API environment */' ?# a& h: y8 [
        errorCode = UF_terminate();2 [2 C  F' G& N: R% \' L" k
    }" f. o2 F% X# ]. t
/ ?" Y$ `2 ?1 N' N$ l
    /* Print out any error messages */
* q+ j# O# c/ R" Ureturn;
. J! ^" b" y, I, ^}
  t7 W% U4 F2 B& x: z+ Z
$ s" s2 O& H3 @//----------------------------------------------------------------------------
# F2 k" O% G3 X- Z. j! G" i//  Utilities
6 s0 }' Z: [0 }' l* @* B//----------------------------------------------------------------------------
) @5 N* a2 U/ L$ ]
  j4 k6 O; M5 D3 t  f& u8 `// Unload Handler
: r9 A4 F- g" y7 ?$ C$ K% {. S. V//     This function specifies when to unload your application from Unigraphics.( F4 J7 u. ~. \& o8 F' e( W6 X
//     If your application registers a callback (from a MenuScript item or a% I+ |6 D$ }1 a# F4 d: W
//     User Defined Object for example), this function MUST return5 @# T* P( C0 g' C
//     "UF_UNLOAD_UG_TERMINATE".
$ |& V& H) ~7 C* [: G2 F5 Bextern "C" int ufusr_ask_unload( void )
7 j0 v! c* T, X: F# g* B{
6 e) I3 \; T/ I) {    return( UF_UNLOAD_UG_TERMINATE );  ^3 O5 Z% n/ m* M% q) r
}
: `# V" l9 ?$ m* Z% U( X4 i9 ~! ?: B' h( i3 e

! }3 D4 d4 r1 o: Z启动UG就启动dll的方法
9 h1 C. T1 `7 J" o* b- h& s4 d( B9 \
方法1.添加环境变量
6 l" C: h# f6 k' g6 b3 R+ t) K; Q5 FUSER_STARTUP=D:\MEILEI.DLL
# H: H5 X. z+ q但是只能运行一个dll而且别人也使用这个环境变量那么久不方便了
$ N4 E. y' n+ H7 W' m0 U) O
* g% |' V. h+ t0 ^/ k0 a方法2.在代码里添加(可以执行n个dll)
5 i/ S# [: m" b9 a0 _7 PUG会自动加载 startup目录里入口点是ufsta的dll6 Z  _5 T8 k% s0 T5 c
$ I, M2 ]/ r+ k5 t" d& ^/ J
所以在ufsta入口使用UF_MB_add_actions函数可以在UG启动的时候自动启动一个或多个菜单里的命令. V( [) S2 L4 O% M5 Z
参考c++代码  ufsta.cpp.txt ,用此文件代码生成dll放startup目录 ug就会自动加载了7 w3 R) O5 A0 i/ o0 O
" k% M! s" L. U2 ]$ h
菜单参考  NXOpen_meilei.men.txt
/ r1 G& }  v6 }: L  `- P
% @  [3 g4 b8 {. nDDD.DLL代码任意(当然也可以参考DDD.cpp.txt)吧dll也放startup目录
) s+ q  t6 m# N# c启动UG就启动dll的方法源代码下载
3 ?. L$ t( B0 a" }6 M) H. | 启动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二次开发专题模块培训报名开始啦

    我知道了