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

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

15757753770 楼主

2016-12-11 15:45:38

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

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

x
本帖最后由 15757753770 于 2016-12-11 15:51 编辑
, F& u+ i# U% j4 e; S/ |$ l1 \6 j; Z6 m
如果你想每次运行UG 判断 ug外挂是否更新4 I# R, k& j5 ^9 g% |  V3 Z
- p, |0 B3 K3 @7 n

; s/ ^/ m% r% U2 T7 s! h1 w原理:
$ V- z# t" {: x- ], M5 c( K8 O自己去搞个网站 或者网页 什么的  只要网页内容修改版本时 网页地址不变就行了
% R8 B7 l8 H& e3 s& n# p然后  启动ug时启动一个dll    dll内容就是获得网页上的 版本号 进行判断) D/ U! b: N* t4 I! |
* u& @+ C& F% E9 Z, K
4 U  x1 N+ K5 x9 Y
被启动的dll程序源代码,如下
" k3 k% ~* Q1 j- j9 G3 t( B$ E+ q' A; G# A, o' E
//  Include files
7 I9 R( ]6 O6 o#include <uf.h>4 X3 E  p+ n( }* s9 m* B
#include <uf_exit.h>8 Z; S3 y& `- [
#include <uf_ui.h>
- j$ H$ `& \; g& v" f+ C0 S#if ! defined ( __hp9000s800 ) && ! defined ( __sgi ) && ! defined ( __sun )
( |: P0 y( N& c  m2 _8 b8 ?: t#        include <strstream>+ O4 ?1 N4 q: S, R' l" L1 ]
#   include <iostream>
  a6 T! ^( H! e8 T) T# c9 u! x        using std:strstream;
7 P1 ]  k9 ^6 q* y9 t1 r        using std::endl;        
: j+ F$ E7 _0 `/ ]1 E9 p        using std::ends;
, j1 U: C+ b4 [        using std::cerr;
' `$ K" l4 j, E/ b  M& R5 L#else
! H  A  D4 ?  y* o: L+ A4 ]0 H#        include <strstream.h>
6 I9 L3 |/ J( e+ J5 H#   include <iostream.h>* W+ t2 D8 z5 @& J' V- k' u: n
#endif: @3 p. p' O, F  w  C- y8 S
#include <string.h>$ U0 Z! W4 j1 Z0 [
#include <afx.h>( Q/ g7 w% @- S7 K8 u
#include <windows.h>
, W: d/ B/ b- p, p$ Z#define MAXBLOCKSIZE 1024+ `; g* q& u1 a. i9 J4 k3 d9 D
#include <wininet.h> //网络/ i' K1 R1 Y  T$ ~- d; }; a! J; J
#pragma comment(lib, "wininet.lib")//网络
! c1 `9 m. J4 h, x* b) Q" v" v  m- i0 g) B5 h7 X' r- K8 i
char 外挂版本[132]="V2.8F";, C2 t) H9 n% }/ d$ _
' A( q+ q. @% I( |% H

& w4 k, c8 S/ `' U  Swchar_t* CharToWchar(const char* c)   //char*转wchar_t
, G, q7 L6 X+ C' T& ^/ `) J( [{  0 X$ ?2 C0 Z7 L, \6 Y6 B
   wchar_t *m_wchar;' R6 O$ D( _2 r: H
    int len = MultiByteToWideChar(CP_ACP,0,c,strlen(c),NULL,0);  
2 u% C0 y. F- @$ F/ _    m_wchar=new wchar_t[len+1];  
/ k" |/ P# A) f& s    MultiByteToWideChar(CP_ACP,0,c,strlen(c),m_wchar,len);  7 s3 r$ `* Z# U  Q" c
    m_wchar[len]='\0';  * t" }5 o1 m5 \% S
    return m_wchar;  * I& U" V  u& m
}  2 Z" H% F# ], b3 x0 C

) o: ?. l* `! S5 {9 f* j//TCHAR 转 char
' o, R7 L* i9 r  D" E7 j8 Fchar* ConvertLPWSTRToLPSTR (LPWSTR lpwszStrIn)  
( M. L7 k7 t1 m6 w. ^8 z, g, V{  
% k; g" y/ m7 o+ ^/ G9 n6 s    LPSTR pszOut = NULL;  ' F( w/ ^. s9 l& ~2 f/ N
    if (lpwszStrIn != NULL)  
7 c9 G8 f6 T% H# x( e( w3 E  E    {  0 M0 ?% \0 ]8 v8 L
        int nInputStrLen = wcslen (lpwszStrIn);  
2 ~* K7 B; A. o" d& M! p2 X' f# X; k, C/ t  W0 F* S3 L
        // Double NULL Termination  2 d% g* q' J) h; @( q& w4 A
        int nOutputStrLen = WideCharToMultiByte (CP_ACP, 0, lpwszStrIn, nInputStrLen, NULL, 0, 0, 0) + 2;  9 i1 k; B" v+ W
        pszOut = new char [nOutputStrLen];  
( [3 m4 K5 t1 v/ Y2 a% t
) H8 W) T" O: H        if (pszOut)  $ v! m" h+ q8 L
        {  - B! d1 e# m% h7 a6 N1 H9 q* S
            memset (pszOut, 0x00, nOutputStrLen);  & Y5 e2 X3 M2 d  M
            WideCharToMultiByte(CP_ACP, 0, lpwszStrIn, nInputStrLen, pszOut, nOutputStrLen, 0, 0);  3 G* s3 K- c! B" l0 U3 L
        }  
1 w. M& S0 m  ]$ \3 s    }  
  l  b9 @1 ?# B( o3 t- ^* J    return pszOut;  9 m2 }7 l5 ?' Z, v6 ^7 T
}  " s: Q9 F; E* p2 ]1 j( O

" g: U# W& o; H  U3 c
! r! c; e3 s# X" L3 \7 p//CString转char8 {! |4 W- F. X& M9 {# {
void CString2Char(CString str, char ch[])
0 A+ K3 c6 W& C9 {9 U{* s8 g1 J& W- K/ E
        int i;# l3 `& Y( l1 }1 O1 ]& V
        char *tmpch;
- b# u5 N  l2 A9 i, Q8 s        int wLen = WideCharToMultiByte(CP_ACP, 0, str, -1, NULL, 0, NULL, NULL);//得到Char的长度
$ q) R* Z; Y) U# E1 N        tmpch = new char[wLen + 1];                                             //分配变量的地址大小
1 \/ [: I/ _- b        WideCharToMultiByte(CP_ACP, 0, str, -1, tmpch, wLen, NULL, NULL);       //将CString转换成char*8 i* F+ x+ T6 ]

1 G! P, b3 [1 o8 g/ C        for(i = 0; tmpch != '\0'; i++) ch = tmpch;
& O* }+ }) B% J6 j# C# s8 D* G        ch = '\0';. X, i% o# x4 P( E9 u( P6 _- ~
}
. w) q3 P, K* X+ |1 @" V- l, O  {  [$ E. g4 k2 q% g

0 q8 E) O. ~* w  ~char *去掉char首尾空格(const char *str)" @; U8 O% \$ A5 E/ j
{9 @4 {$ K! i: Y" |& k3 |
        static char line[133];+ `" L+ m' v. X  d
        const char *pbegin;
8 H1 {9 _, x0 E        char *p,*pend;
$ Q2 Z5 ?, }+ }* I        int i;
+ K; l& ?6 b+ F7 F: J) J# G: P  }" S! ^
        pbegin=str;
7 h- A% a9 ]0 h. X6 a        while (*pbegin==' ')
; P5 U$ t1 ~" J                pbegin++;+ g0 q$ ^* x6 C0 W4 S* E' e
. j; Q2 h+ `  e% @2 ]$ G5 ?( }
        p=line;: _& Y( X, |; i# G: \
        while (*p=*pbegin){
" c; h( T2 r! |5 \8 N                if ((*p==' ')&&(*(p-1)!=' '))3 p7 k7 H1 f3 ~' H3 E
                        pend=p;
2 c" k& Z- k' z1 i                p++;pbegin++;        7 `* b( I3 ]- j: r
        }, l; [7 Y& Q! ?4 Y6 B' i4 c
        if (*(p-1)!=' ') pend=p;
5 a+ {9 i6 b* J% ?% N' z        *pend=0;
" r+ o, }: K: n. w( I6 f0 j        return line;
8 Y9 w! ]9 R4 E2 \' P* s} ; Y/ ^. a: |2 S
8 H% J% `" Z! _  m; d) S5 c

! t- m( l+ j2 b: e4 T# k//获得网页信息 - 网页信息是中文会乱码 用英文信息
2 z( W- V8 \9 c# s- {) Vvoid 获得网页内容判断外挂更新(const char *Url,char *html);- v: x9 N  R5 b
void 获得网页内容判断外挂更新(const char *Url,char *html): f+ A# M, k; I# d
{
& ~. O% [' O' n8 y9 @& g        HINTERNET hSession = InternetOpen(CharToWchar("zwt"), INTERNET_OPEN_TYPE_PRECONFIG, NULL, NULL, 0);
5 i* B" H- V! o: v- R/ S; w1 F        if (hSession != NULL)4 U- P. J: N; o/ Y$ S1 |6 N: f
        {( F1 h# ?) h: x' K0 W3 Z+ |+ Q
                HINTERNET hURL = InternetOpenUrl(hSession, CharToWchar(Url), NULL, 0, INTERNET_FLAG_DONT_CACHE, 0);
1 L, h! f* V2 |2 `/ z5 g                if (hURL != NULL)
. W: B7 C, {8 ~% \: h                {- W: B- a0 k, @. n9 e. R' ^

5 s+ w# ], ^6 S; g* R6 i                        char Temp[MAXBLOCKSIZE] = {0};
  T; m3 q+ [# s6 F' g4 w                        ULONG Number = 1;2 S) m. e; p/ d; R# w/ D6 F& C9 ^
                                while (Number > 0)5 s: Z. p+ e6 X7 t" L
                                {
& J" a+ z; n; y* {  x" w- h                                        InternetReadFile(hURL, Temp, MAXBLOCKSIZE - 1, &Number);
) I9 ~  o& @7 J7 W1 B7 M                                        char 判断版本[132]="QQ1821117007S33038219920103MEILEI";
, Y0 O) p) r* u" G+ E) R                                        int a=strlen(Temp);
- s. ?& y' E- g2 E* Q3 Z                                        int b=strlen(判断版本);   
' N3 t* O! l9 c- l, z                                        if (a>b)
( x3 W( a: q: ?8 b/ L! y                                        {
4 x, Z9 m& V2 v' |                                                char *p=strstr(Temp,判断版本);- e) E" o! v4 n
                                                if(NULL != p)& D" h& H% v* ?3 x9 D7 q
                                                {          6 Q2 S4 U3 K" W" d, f3 p
                                                  int wz=a-strlen(p)+1+b;//版本号起始位置
# A4 `$ e5 F4 s1 I                                                  int wz2=a-wz-1;if (wz2>100) wz2=100;
& B3 b/ t0 E/ L, j! K$ h- _0 G% L. Z                                          char s1[132]="";
/ ^& m# N0 I+ Z, d4 ?3 P                                              strncpy(s1,Temp+wz,wz2);
- s1 n+ z0 k8 @# H# V8 N                                                  char *p2=strstr(s1,"MEILEI");
; b1 X& s6 f6 c0 n) i+ `) l                                                  if(NULL != p2)
, ?  M; q1 j/ }/ T! E: [* n                                                  {  
2 V- ?; E, O" i, F, k# J                                                          wz2= strlen(s1)-strlen(p2);1 }4 }5 \0 M" b4 ~/ o0 d% U. ]+ v
                                              char 最新版本[132]="";: o% T; S% f8 e
                                                  strncpy(最新版本,Temp+wz,wz2);
$ T" c2 t( s8 `  P$ ?4 ]" z4 v% \9 l2 G                                                      if (strcmp( 外挂版本,最新版本)==0)$ M1 e/ E: X: p6 A$ a- X
                                                      { % Q! q# L. E0 r" A+ [" l0 e
                                                            //MessageBox(NULL,_T("此外挂是最新版本"),_T("梅雷制作"), MB_OKCANCEL );
! ]# Q2 E% h, \5 \% L" i                                                      }- e& ?* x; _4 O8 U) D- L
                                                      else- B8 J: V0 J& y% A& W
                                                      {
, p( y3 V, P4 N. Y" x                                                            char msg[256];3 ~3 T' o  V- n* j; u) Q6 Y
                                                            sprintf(msg, "乐清外挂:梅雷制作 - QQ:1821117007                    \n当前版本:%s\n最新版本:%s",外挂版本,最新版本);0 p6 ~: j9 Y8 h0 G! I. P+ {# h
                                MessageBox(NULL,CharToWchar(msg),_T("梅雷提示"), MB_OKCANCEL );
9 S; L9 ]; c( n2 u                                                      }
) {! m6 Z9 }1 c8 R4 O# y: ^                                                   }( i" N; F2 T. c
                                                  goto LH;# P  x7 T- w2 W
                                                }
) R: u4 L1 t( [8 \/ g$ g. e                                        }
" f( G/ N3 O! b) R$ h2 A9 ~' D1 X# w  k" R
                                }
, }3 g* @1 F) c" z' J                                LH:;
, H* @4 T, a. ?/ U                        InternetCloseHandle(hURL);% @/ Q* c1 P4 n/ A4 c+ r
                        hURL = NULL;
/ C3 w' ~, \* X( R                }3 Q: q8 ]& O' _: t5 Q

0 y; Z! f# J6 j) o                InternetCloseHandle(hSession);
# V) U3 Y! N3 a7 s( z7 c$ n, }7 r                hSession = NULL;) {3 z, Q0 S( t% J: M
        }
1 U' o, X1 p- n6 H+ z}8 l- p+ }* o  V& t  R3 M
" A) C8 f1 K0 F

- ?( D1 |; h) q//----------------------------------------------------------------------------
; l5 t4 u, m1 [5 n: T//  Activation Methods$ B+ u) o3 Z. R% H. d
//----------------------------------------------------------------------------1 |& m6 c1 i5 `( S! N& n3 a! C

, z  m+ i% Z1 m, Q6 K5 y# `1 M4 ^//  Unigraphics Startup
. e0 A4 l8 E: L( v//      This entry point activates the application at Unigraphics startup
5 k+ ~# e$ ?3 k4 i4 Wextern "C" DllExport void ufsta( char *param, int *returnCode, int rlen )
' F9 M' O5 d/ U+ n4 i! e" |{
6 d; O% I  r( i. b9 p    /* Initialize the API environment */! T+ }" m# v) e! k
    int errorCode = UF_initialize();1 ?8 G. \+ A; R9 g! E! G% g# D5 A
0 S+ t9 q- E9 M4 {1 {, T+ ]
    if ( 0 == errorCode )
+ w' g' v$ I* g7 Y% r# t    {
9 ?) U# y8 u6 }: @) ~        /* TODO: Add your application code here */: f5 o9 ?; t8 {! k6 j

8 L1 q# Q3 T4 N# N+ _2 }3 N, H4 u" t& _: D2 H" ^" {$ S
                //百度云公开链接 通过修改txt文件标题- @& W: @0 N4 H9 g6 L) l1 \. u% R
                //0.0用于网页判断乐清虹桥外挂版本,验效码QQ1821117007S33038219920103MEILEI=V1.6FMEILEI= MEILEI= MEILEI.txt  p; U2 J: s/ O+ _
! g+ v. @: d; `( Q( Q8 Y; i2 |

& I3 M' I: N. g8 z" t                char 网页文件[256]="C:\\Windows\\版本.html.bat";  
$ K4 ?) j9 \. W2 k* g* M                获得网页内容判断外挂更新("http://pan.baidu.com/s/1slw24Vz",网页文件); + J" f2 |9 I0 ]
                1 t% T! Q; A" N* i  l
          ?6 |. N, {8 w* u

; j" P6 e! _1 A
" P# W4 x& R/ g# _$ a6 x
% U/ v  S$ s' B, k        /* Terminate the API environment */
1 }* l$ V5 C7 ]% l4 |        errorCode = UF_terminate();# _( j& _/ n" u7 B+ {2 G
    }
" w, ^$ i5 O. ]% ~$ S" L1 L' v; p; Q  S; n: o
    /* Print out any error messages */
& a6 f+ d; W: l# u7 a: C% \return;; A( x: A4 R3 G5 G1 w
}1 u, V' a/ G% ^/ K

- r! z; B5 e2 {//----------------------------------------------------------------------------; U# i9 L" y  ^9 s4 m
//  Utilities' X2 \& ^# O' f8 S, ?
//----------------------------------------------------------------------------# L0 P) {/ y  c( u0 P
- D8 s; M- F0 u8 D- m
// Unload Handler
! ^9 M4 t2 T0 h. I//     This function specifies when to unload your application from Unigraphics.
, [8 i4 D; V" Y8 |! Q//     If your application registers a callback (from a MenuScript item or a- B+ j1 y+ P6 `" g) O
//     User Defined Object for example), this function MUST return4 A4 R9 \7 u: \, c8 ]. t
//     "UF_UNLOAD_UG_TERMINATE".; _$ p: R% H, Y( g: z7 W! q; y
extern "C" int ufusr_ask_unload( void )
: O/ U& C  o  h; G* U{% i! F. E1 e: @8 x" k+ O
    return( UF_UNLOAD_UG_TERMINATE );5 k& ^+ W' q$ _( J
}; k7 @4 C; j: e8 I/ H
, L- L2 l; g9 s' A. X9 o
9 |8 ]$ H7 `0 t' V/ {; p- S( u
启动UG就启动dll的方法
0 m) e- W' |. P, y% |
4 [! p9 |7 r0 I! H方法1.添加环境变量
9 U4 n- y8 g& p* W9 w, O4 k! ?USER_STARTUP=D:\MEILEI.DLL
, X( `2 u6 |. v; m# \# N但是只能运行一个dll而且别人也使用这个环境变量那么久不方便了4 f1 E. z0 c/ }8 Y5 q2 q

+ n, h/ [- ?( G方法2.在代码里添加(可以执行n个dll)0 k3 U5 q% T* U: ?2 Q, f
UG会自动加载 startup目录里入口点是ufsta的dll
5 m/ w5 Z* N5 T& {$ d
0 t, V  z' V8 V$ S* k$ O3 A所以在ufsta入口使用UF_MB_add_actions函数可以在UG启动的时候自动启动一个或多个菜单里的命令
7 f1 p! h# N& o5 [' B参考c++代码  ufsta.cpp.txt ,用此文件代码生成dll放startup目录 ug就会自动加载了
' ?: S8 I' |( w3 d9 N* y/ |1 Z" {% Z4 ?% \! y( T2 y9 [
菜单参考  NXOpen_meilei.men.txt' j4 h! \! ?8 s. O. j

4 T3 o. ]) f; r- J4 }( x; N: K# ODDD.DLL代码任意(当然也可以参考DDD.cpp.txt)吧dll也放startup目录
, L& B2 A6 D  o; }/ u启动UG就启动dll的方法源代码下载  K! o* u! M  f4 b0 ?5 X/ 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二次开发专题模块培训报名开始啦

    我知道了