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

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

15757753770 楼主

2016-12-11 15:45:38

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

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

x
本帖最后由 15757753770 于 2016-12-11 15:51 编辑 ; ]. L6 m. U! |, R' k: B. Z8 h

3 B* U* P- U9 X) {. _" M/ m3 w" n如果你想每次运行UG 判断 ug外挂是否更新
8 c2 W6 h5 [" C- b/ ]( S
$ v& Q+ ?6 ^" l* N' a( a7 }& u9 @* s) W- M( ?: S# [
原理:2 @2 P8 o# K* {5 o& x
自己去搞个网站 或者网页 什么的  只要网页内容修改版本时 网页地址不变就行了. N8 z3 v4 W) C% o
然后  启动ug时启动一个dll    dll内容就是获得网页上的 版本号 进行判断* V: {4 B* A( H+ }) W

5 i( B1 r- R. ^  N: K
6 m* }0 Y4 I* T: f. {: R被启动的dll程序源代码,如下
7 o8 O( x1 y5 D5 G8 W2 K- m% Z5 ~, B
1 c: A  ]* u3 O//  Include files, G+ a/ ~8 m( \+ e/ ]
#include <uf.h>
' T4 X+ w# J0 t' q! n#include <uf_exit.h>% |3 j, T6 V, r0 _1 w5 P, ^( [
#include <uf_ui.h>7 ~/ Y. R0 q$ _
#if ! defined ( __hp9000s800 ) && ! defined ( __sgi ) && ! defined ( __sun )
8 |9 }  Z" g4 a/ n2 N#        include <strstream>
1 b7 u, U: l3 i6 u# X#   include <iostream>
9 f4 i' x* u# D8 K! h5 o- t        using std:strstream;
' U4 B4 a" L/ ~9 p& ?        using std::endl;        
1 ]; x9 l5 V( g4 b; q, l        using std::ends;' w6 |9 M0 ^+ t( N
        using std::cerr;
+ Z+ m3 T, W% f4 L4 J+ [#else( Q9 T/ g5 J2 U, u! B( r$ Q
#        include <strstream.h>% V# p! F  h* C: a: \- p
#   include <iostream.h>& A( x: X8 A# w$ L
#endif
. u! ~; _! k& g  V& j#include <string.h>
/ `( a9 C. q3 [/ t#include <afx.h>' I/ D6 J2 \4 ]/ K5 O" d5 z( t4 G: \, Y
#include <windows.h>
9 m3 l% w+ G% L, o) |& P. ], x#define MAXBLOCKSIZE 1024
& q" {1 W/ ?- n& c: J0 z' f! l#include <wininet.h> //网络2 `7 |: E4 B1 g0 x+ F0 R
#pragma comment(lib, "wininet.lib")//网络
* p4 X/ ]- A7 v; n2 ~1 D" l- Y& l5 ?! A/ m& c
char 外挂版本[132]="V2.8F";/ [3 t2 P4 `+ q' D) |7 A! T

( B. `  v$ a  m* }7 ?! O! A" x, i9 m. `; p
wchar_t* CharToWchar(const char* c)   //char*转wchar_t2 a) {) M0 ]5 `' g
{  + t' J8 S, e) j  y" {0 i. ^
   wchar_t *m_wchar;
7 ~2 M1 O9 x4 B: q2 v3 d4 s# G    int len = MultiByteToWideChar(CP_ACP,0,c,strlen(c),NULL,0);  
* ^8 P* t- N. d8 q5 t3 W0 T    m_wchar=new wchar_t[len+1];  + C8 C" T, r( z4 p9 \
    MultiByteToWideChar(CP_ACP,0,c,strlen(c),m_wchar,len);  
& O6 S6 g' g( P1 g) V' c    m_wchar[len]='\0';  
* K, e4 E# ~8 r' }7 W6 g1 Q$ q1 t    return m_wchar;  - x! D* e6 f1 O" E. B7 p
}  
  N2 @8 @( b; C  Q
5 e8 a- T( P2 z' E- x. ~% ~* y//TCHAR 转 char
# k$ r) D* @" N, {, V" Cchar* ConvertLPWSTRToLPSTR (LPWSTR lpwszStrIn)  7 z7 H/ |6 f- i2 {4 @& t+ Z
{  ! f1 x# F9 B  M- h5 k
    LPSTR pszOut = NULL;  " j, h# u) p1 ]' u
    if (lpwszStrIn != NULL)  - A, M) O; a$ k2 v  z  B3 Q
    {  
' x4 w/ [6 L; e3 y& k        int nInputStrLen = wcslen (lpwszStrIn);  
9 D8 I6 R/ E2 \4 i9 D! E- v1 V5 l/ [5 z( N
        // Double NULL Termination  
+ \4 j, b- B7 p1 a2 }; o4 E% A        int nOutputStrLen = WideCharToMultiByte (CP_ACP, 0, lpwszStrIn, nInputStrLen, NULL, 0, 0, 0) + 2;  
) M" r) U/ Z) x+ w; U0 [        pszOut = new char [nOutputStrLen];  
% R3 F# |7 Q1 i. m/ @
) c, Y+ A% h& B, V        if (pszOut)  
% P& H8 ]" R$ X% Y1 G* K        {  5 b" \: @' N$ A; r0 _
            memset (pszOut, 0x00, nOutputStrLen);  
/ x4 j+ T) n  r( a! x3 ?. [            WideCharToMultiByte(CP_ACP, 0, lpwszStrIn, nInputStrLen, pszOut, nOutputStrLen, 0, 0);  
- T) H* i3 E6 l        }  0 j; X, ^* o- |" ]# J
    }  2 o& p8 E8 i) |! k1 m9 Z- G' I
    return pszOut;  
6 U: X; g$ n8 l- S) K}  
1 f1 `! `: @) f4 |; S! W3 X) A' ?3 j; m' }4 `4 P
4 \9 n" a# S1 }! h6 e0 k/ V' \
//CString转char7 \; v2 e6 ]) o$ e4 a: z
void CString2Char(CString str, char ch[])+ D& ~1 c7 @" A% X* ~6 A
{
7 q0 s3 }' [  \" |        int i;  m& e, V- X: x+ B, C) _2 g
        char *tmpch;! M  H/ _4 g# ]4 V" Q
        int wLen = WideCharToMultiByte(CP_ACP, 0, str, -1, NULL, 0, NULL, NULL);//得到Char的长度8 p  z3 |3 ~0 U( f) U" H
        tmpch = new char[wLen + 1];                                             //分配变量的地址大小% w/ g  v+ c& q' e2 U; }( Z: p2 q
        WideCharToMultiByte(CP_ACP, 0, str, -1, tmpch, wLen, NULL, NULL);       //将CString转换成char*
4 x) \* y- r! u! l; Y* K
: P# z3 Z2 G/ U2 ]6 I8 t" Q        for(i = 0; tmpch != '\0'; i++) ch = tmpch;! w/ S( a6 \& U  K" i( {
        ch = '\0';
/ ?" u( m: @3 c! Y1 s; f}
) x6 y& c) l! V6 _8 T0 {$ Z3 p; W, k. Y. Q' ]

5 H) S. b) K7 z; \3 `$ Fchar *去掉char首尾空格(const char *str)! q* U7 F% H0 O& L3 l% `/ M5 q6 }
{* z1 C2 t' ~; U) I
        static char line[133];
5 n8 Y* B: j& w        const char *pbegin;
9 y7 i1 T- a- V+ u        char *p,*pend;$ b' r& L& J9 C. N8 j
        int i;% f. s8 X/ x+ g7 S' [
# f& U' ], u4 b" K* X
        pbegin=str;) d  H% z3 L2 A+ f- h
        while (*pbegin==' ')
% j. u/ n! t- p0 s: _, ]6 B                pbegin++;
1 A8 ]" P8 u4 ^- u5 }9 a% ~; ^9 A* U1 [; e" T- E
        p=line;
3 s! u$ `* B# q0 G  b  h" ^: J        while (*p=*pbegin){, B& M# [8 r8 b
                if ((*p==' ')&&(*(p-1)!=' '))
/ n' R' I* @# V7 C2 u8 {                        pend=p;, H& `7 @; w7 `# R4 C8 R
                p++;pbegin++;        
8 n& V( R* J8 v% Y        }4 j  g0 Q3 ?# ^
        if (*(p-1)!=' ') pend=p;
% h/ b: d+ S" i$ m+ V2 s2 G        *pend=0;
) [5 Q6 ?) W7 Z0 ?        return line;  S  a, X' \2 I' U/ x. _
}
. {: ]6 j+ b3 @/ p
2 D! c6 n# a8 v2 E3 r9 T' I, s' Q. _. s" }7 q
//获得网页信息 - 网页信息是中文会乱码 用英文信息
6 S& i; l+ I, g: Ivoid 获得网页内容判断外挂更新(const char *Url,char *html);
* c8 `( |3 A1 P5 _& y  @, Rvoid 获得网页内容判断外挂更新(const char *Url,char *html)
& N$ |% R0 Y5 O7 y% g% J{
) O6 g8 }) U- a6 [! D        HINTERNET hSession = InternetOpen(CharToWchar("zwt"), INTERNET_OPEN_TYPE_PRECONFIG, NULL, NULL, 0);
% i( U! S9 ^( b        if (hSession != NULL)% G: n4 S+ q  J2 _# H5 ?
        {& s* B6 p4 V; G( w) Y  n9 p- u
                HINTERNET hURL = InternetOpenUrl(hSession, CharToWchar(Url), NULL, 0, INTERNET_FLAG_DONT_CACHE, 0);
: U3 K; G" F  o* Q& {6 i                if (hURL != NULL)
% Q, V0 k) n9 ^                {
; a( K7 @  e! D) B0 Q6 x% Y/ D4 A( R: m5 H9 v0 Q8 h' ^
                        char Temp[MAXBLOCKSIZE] = {0};1 K, z: d7 J8 {3 q) c! [3 d
                        ULONG Number = 1;
1 D  a3 u9 J# ^. v+ F. ]* q                                while (Number > 0)% V+ x3 c" f: x' |
                                {
$ h; [+ B3 i- y; J                                        InternetReadFile(hURL, Temp, MAXBLOCKSIZE - 1, &Number);* H. L, J2 T1 F5 S  B) X
                                        char 判断版本[132]="QQ1821117007S33038219920103MEILEI";
3 w3 w# V7 e7 i                                        int a=strlen(Temp);0 |- y0 t9 R" P/ f8 a5 B. ~* E4 o
                                        int b=strlen(判断版本);   ! _/ H& j- I$ n6 k! h
                                        if (a>b)
! V/ K; Y7 }" g! B% ^5 x                                        {
  |, }. R& W( ~- N/ m/ v                                                char *p=strstr(Temp,判断版本);
) |% j, E  `/ \5 ]/ @" e9 O7 z! B                                                if(NULL != p)  F: k0 l5 h& q7 Y* N0 I7 M
                                                {         
1 e4 o+ H- @5 V: c* R" T! p                                                  int wz=a-strlen(p)+1+b;//版本号起始位置
6 ]: T* ?9 Y, Y0 ^                                                  int wz2=a-wz-1;if (wz2>100) wz2=100;8 X- o( h, L# b( ?$ K# L
                                          char s1[132]="";
, E5 d: S0 J  @' ?                                              strncpy(s1,Temp+wz,wz2);: _, S3 \, c2 Z: n2 g( \
                                                  char *p2=strstr(s1,"MEILEI");; Y. Y! G; Q( Z( K
                                                  if(NULL != p2)
& m+ K/ U& \3 }* {                                                  {  
! j3 f% D, [, Y' Y0 `5 v% @                                                          wz2= strlen(s1)-strlen(p2);% B; @8 \( O1 T4 x3 p
                                              char 最新版本[132]="";
* h$ c1 `& Z5 G0 D7 u                                                  strncpy(最新版本,Temp+wz,wz2);+ e3 e" C3 j: ?/ e% n- n
                                                      if (strcmp( 外挂版本,最新版本)==0)
9 J8 q% {0 S+ e" f5 U4 P2 a                                                      {
4 |) i& {9 Q; ^, Z                                                            //MessageBox(NULL,_T("此外挂是最新版本"),_T("梅雷制作"), MB_OKCANCEL );
* ]  r2 E8 }& z: g" W8 l; i                                                      }
& B. T/ G: c: O7 B5 O                                                      else
# n) h: ^- W% X8 V- j- P8 F                                                      {0 {9 E- \7 [9 d& h" Z& z
                                                            char msg[256];% n7 V! E4 s  ?( S% z& |
                                                            sprintf(msg, "乐清外挂:梅雷制作 - QQ:1821117007                    \n当前版本:%s\n最新版本:%s",外挂版本,最新版本);
) m+ y& f9 V: z$ Y2 R3 L& M$ i) @                                MessageBox(NULL,CharToWchar(msg),_T("梅雷提示"), MB_OKCANCEL );
- c+ v+ i2 a4 H" V1 x                                                      }1 i3 U/ U+ @# u
                                                   }
+ t7 ^+ l4 g8 P                                                  goto LH;$ a4 ~' x8 j4 n! M
                                                }
* L  S" p) }" h2 R1 [! Z                                        }! ~( b0 U4 K) Q% o

' \4 a6 [6 L3 l" _                                }' M5 u; w! e2 L- ]* ?3 s
                                LH:;
; c' p* v+ W) Z5 ?                        InternetCloseHandle(hURL);4 a( z: f% q/ B2 c
                        hURL = NULL;  `$ i% h  q/ t" Q$ m+ u! {
                }7 U; F0 _3 R) [
5 r+ a. p% d+ `2 E! U( [( {
                InternetCloseHandle(hSession);% f/ k/ i; d* }3 H
                hSession = NULL;1 k  _5 N0 F5 D) h
        }! g7 [4 l, h' ^9 B- r' B- E
}8 x7 x1 g& E1 {! g& T% w3 Y  a- S
  y- O* @, s; f

- U  ?8 D" n/ d6 j1 E8 B7 V//----------------------------------------------------------------------------
% T# r; D; O6 \/ Q3 S//  Activation Methods
$ j1 `$ w8 z& v4 N% a: k4 w//----------------------------------------------------------------------------
6 A1 S1 J6 I! N2 d' B( W* y8 y8 P) i6 r6 z0 }: o$ [6 X" _
//  Unigraphics Startup0 ^9 I; O8 Q% U8 M- y2 X% [. M
//      This entry point activates the application at Unigraphics startup& ]0 P# m0 }# k( X
extern "C" DllExport void ufsta( char *param, int *returnCode, int rlen )& L7 z5 t9 E5 R/ P/ k9 ]
{
0 X, o& |  i1 Q! j' b9 K0 f    /* Initialize the API environment */' P5 L9 @! i. b( s
    int errorCode = UF_initialize();
& f( ]: w5 t# A0 _$ _$ C- m% N3 @4 S: ^0 b  N' D
    if ( 0 == errorCode )) e8 _3 w( ~: Z8 J) W
    {" R- z; ]% F1 ^4 V3 p$ Q
        /* TODO: Add your application code here */+ `6 s6 `* u, M3 ]; r4 |

5 p/ }( X5 m' {% E& @
- k* ]9 O# |& {- ]9 M4 S9 o                //百度云公开链接 通过修改txt文件标题
3 N7 k2 A. t! G4 s' z8 w0 v  D2 a                //0.0用于网页判断乐清虹桥外挂版本,验效码QQ1821117007S33038219920103MEILEI=V1.6FMEILEI= MEILEI= MEILEI.txt; [7 c! I7 E  c5 V1 B% M
9 b# s) ]/ N8 u- J6 e8 q' ?+ R
; f0 N/ U# W0 x2 F1 z
                char 网页文件[256]="C:\\Windows\\版本.html.bat";  + N" s+ v2 \( ?* {" p7 [' y
                获得网页内容判断外挂更新("http://pan.baidu.com/s/1slw24Vz",网页文件); - y; Y6 d( U  X& O5 c9 A+ Q
               
" R1 S7 }. e1 c- E/ [        
4 I. P8 q5 r! c1 [/ S
4 q, }2 R& o4 h7 S& U" r
0 A8 a3 T( c  `' Y
9 R9 T! {! V1 l' M1 P! x# y1 j        /* Terminate the API environment */) k7 ~2 e' w3 x+ o3 q  r
        errorCode = UF_terminate();
! i! q7 N' s& z; t+ V    }  Y1 Q: J4 P) [! p' T

/ F; [+ Z1 w7 i: ~    /* Print out any error messages */' L2 h! n, c- j; P9 ]
return;- f1 N) p) N  m: J% `
}/ |2 c9 }$ Z4 T1 P5 E
% w8 s3 d4 z: u/ B9 [% I8 d1 o
//----------------------------------------------------------------------------
, ?8 Q( T( I  A' o7 M//  Utilities0 }: q4 T9 Z, }0 s1 s
//----------------------------------------------------------------------------' I( {4 W" l* S' C4 ]- j
8 F. E0 Y# t& O6 O
// Unload Handler7 R- s% h3 k. }+ s2 m) N
//     This function specifies when to unload your application from Unigraphics.
& t- O  m$ O8 F2 n& e//     If your application registers a callback (from a MenuScript item or a- P) J* c3 W5 C7 d. B) B) Y- o
//     User Defined Object for example), this function MUST return7 M6 r' D( X. P. ~3 d- `/ G! `! o4 z: s2 f
//     "UF_UNLOAD_UG_TERMINATE".
& A3 D1 r+ ^/ `2 L5 uextern "C" int ufusr_ask_unload( void )
) t- U* V9 @) f8 Y! T9 M0 J% u{& _5 S7 q, a. E9 K9 ^# k, A
    return( UF_UNLOAD_UG_TERMINATE );
8 S. Z1 g' n  z}: a5 k! w7 [- k. E2 a0 }6 Y! V

7 b  U1 W1 T& s) F! a% }5 v3 G# [9 c4 I. J7 P' K
启动UG就启动dll的方法4 N5 x( v* u1 I! T. |4 ?7 r
6 y" f6 g$ Y# C
方法1.添加环境变量; ?! M+ S. _- h6 V$ B
USER_STARTUP=D:\MEILEI.DLL
) r% ^& F4 I3 w0 u8 a但是只能运行一个dll而且别人也使用这个环境变量那么久不方便了
1 W+ |0 }4 [+ I' p, L  c
$ {, Q; P  u, m+ ]% }$ ]9 `1 f/ H方法2.在代码里添加(可以执行n个dll)
1 {1 S) |1 i3 s/ T  Q4 PUG会自动加载 startup目录里入口点是ufsta的dll
' t: q5 K. ?4 ^1 J1 F4 ]' ~! N3 B1 C2 Z) S0 }# F0 `( V/ m- }
所以在ufsta入口使用UF_MB_add_actions函数可以在UG启动的时候自动启动一个或多个菜单里的命令- G0 S9 Y+ J" k' R- p( G/ o+ W; l* T2 w
参考c++代码  ufsta.cpp.txt ,用此文件代码生成dll放startup目录 ug就会自动加载了+ c- F# f& }# z4 _! V7 W

  f8 S) `6 ^0 t菜单参考  NXOpen_meilei.men.txt
0 T' L! ^6 M4 ]  ]  T/ I6 S- D4 A$ h7 P" [- D1 B; J- M
DDD.DLL代码任意(当然也可以参考DDD.cpp.txt)吧dll也放startup目录
! y# N1 c; R5 ?* s) M0 m' i启动UG就启动dll的方法源代码下载
3 G. k4 ^8 j* L, o 启动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二次开发专题模块培训报名开始啦

    我知道了