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

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

15757753770 楼主

2016-12-11 15:45:38

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

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

x
本帖最后由 15757753770 于 2016-12-11 15:51 编辑
! o; b7 {3 y0 ^- X* J
( C. ?8 Q% y" K8 ^  z& V' j如果你想每次运行UG 判断 ug外挂是否更新
5 d$ m& h; k3 O* _$ o7 n; j! [% d" B8 {8 v
( ]. c  |4 `* s2 A
原理:
1 A& H) L; f9 z6 t5 F! l  E自己去搞个网站 或者网页 什么的  只要网页内容修改版本时 网页地址不变就行了
# z+ T8 X+ Q8 n; C3 S然后  启动ug时启动一个dll    dll内容就是获得网页上的 版本号 进行判断. S" t. V$ O& Y& x7 b

2 h+ I3 J- e4 n$ v' A4 w" j; k/ [
' y2 g" x3 I7 U; W, j) T被启动的dll程序源代码,如下
/ {# Y+ ]- y8 ]2 `" `+ o& `( S+ D, o' v/ ^7 B8 F$ Z
//  Include files: n: u5 y9 I) v. v$ t( {: k+ x6 G
#include <uf.h>
( v: @' A- @. F; `6 Q* t1 u#include <uf_exit.h>
9 e4 C6 ?3 o. _& p( ~( {#include <uf_ui.h>6 n: p- T) T( O" Q" ^! g% G
#if ! defined ( __hp9000s800 ) && ! defined ( __sgi ) && ! defined ( __sun )8 M+ L, G7 w; ?' M8 U. m& F
#        include <strstream>) ^8 T0 b+ p0 v1 X% E5 d. H' U4 x
#   include <iostream>
" `4 B4 w/ a) f5 D* y2 |; n5 u        using std:strstream;1 ?8 M1 F2 d1 c8 X, e& l& k/ o
        using std::endl;        + y: w  A! a6 t0 }% Z  F
        using std::ends;
& ~. t( \! ]+ s6 X& ]        using std::cerr;
6 r' @' g# A! M4 h8 K- k6 t#else: l/ H; ?2 }- H; T2 @/ B
#        include <strstream.h>8 Y. ^3 |* z1 c, Q4 Q7 [
#   include <iostream.h>
) v3 E4 T. Y! ^0 M6 Y. s: j#endif/ t$ e' y8 H1 L3 o- L/ Y
#include <string.h>. T6 `0 C1 `; a! l% w1 }6 S; }
#include <afx.h>
$ Q; y: V3 i! H1 R#include <windows.h>7 B& g( ~3 Z: V0 o
#define MAXBLOCKSIZE 1024
+ Q+ q9 d+ Y4 b! \#include <wininet.h> //网络2 D4 j0 E/ A0 q$ W- ]
#pragma comment(lib, "wininet.lib")//网络# d- e# z) O/ Z7 f

) N7 ]* t. ~+ p  H3 Cchar 外挂版本[132]="V2.8F";
4 K2 M5 C5 B  y; n$ ]6 T- p* e" I! w1 \- d; }& m9 G' q

. {; }. y; l/ Y8 T7 m0 p" e4 Qwchar_t* CharToWchar(const char* c)   //char*转wchar_t6 Z3 V% Q; U, y! ~2 a
{  : g. D5 C' f* D1 i- Z2 G6 \. m
   wchar_t *m_wchar;4 `5 Y3 K; w( D
    int len = MultiByteToWideChar(CP_ACP,0,c,strlen(c),NULL,0);  
# P6 c: ]; z4 P    m_wchar=new wchar_t[len+1];  9 ?% N: o, G* c; Q0 @
    MultiByteToWideChar(CP_ACP,0,c,strlen(c),m_wchar,len);  / G+ v; M3 R4 r' X
    m_wchar[len]='\0';  ' Y( |5 \7 ?2 F4 ?
    return m_wchar;  
- ^% \- p/ u7 j4 N}  8 s5 c" F: V/ g* e- H, Q0 l# O( V, {

3 a# {* j2 c( \1 ?1 N9 z//TCHAR 转 char
  W, N0 w" [5 ]; b) uchar* ConvertLPWSTRToLPSTR (LPWSTR lpwszStrIn)  ( b7 q" W; }, A8 T+ J
{  
( r' v/ I: g. O+ D/ r. [2 R! d5 m    LPSTR pszOut = NULL;  : Q0 m/ ]" x9 s- i* L- r
    if (lpwszStrIn != NULL)  . h  l' l; j. a: }
    {  : l( s6 O; s  c% [
        int nInputStrLen = wcslen (lpwszStrIn);  0 u& _1 j- l: G; y4 P) z0 [" s
% X6 s5 V  r9 P. @
        // Double NULL Termination  % Q9 I' l: c) H4 O& e) o& b
        int nOutputStrLen = WideCharToMultiByte (CP_ACP, 0, lpwszStrIn, nInputStrLen, NULL, 0, 0, 0) + 2;  
( T4 v4 Y5 M$ x+ i" p( X( k: O        pszOut = new char [nOutputStrLen];  
4 l6 R1 G! A! n8 `  ?
* z( [# @  g& k- z% T# s; t% h        if (pszOut)    W3 p' `! X: ]3 s
        {  # w% ~; V0 O% T
            memset (pszOut, 0x00, nOutputStrLen);  
2 m0 ~9 A/ l1 E  p, g            WideCharToMultiByte(CP_ACP, 0, lpwszStrIn, nInputStrLen, pszOut, nOutputStrLen, 0, 0);  
, I* e8 l5 q/ |6 j+ o# P7 B! ?$ s. V        }  9 H- c! L1 m% x! A' Q
    }  3 s( a) m2 V  Q% H
    return pszOut;  * y, n+ w7 L# c' z, x# x
}  
4 D) b2 j$ K, Z( U0 \
8 m: K. u# n5 w7 _
$ d! ~0 D- n2 R- O4 a//CString转char0 C; s' r6 u# f" k
void CString2Char(CString str, char ch[])
+ S% N! m% H+ q( R* }$ U/ j  o/ _{; W) N5 Z1 ^8 g& R
        int i;
8 h! F2 N: r, W& W0 g( L% u        char *tmpch;
0 [7 j. L, G! k- z! I  [        int wLen = WideCharToMultiByte(CP_ACP, 0, str, -1, NULL, 0, NULL, NULL);//得到Char的长度/ |) c6 v' x$ b+ T
        tmpch = new char[wLen + 1];                                             //分配变量的地址大小! o2 v6 H, w4 s7 |
        WideCharToMultiByte(CP_ACP, 0, str, -1, tmpch, wLen, NULL, NULL);       //将CString转换成char*6 d( x) f9 `9 y

: k* C' y% m1 B% I: e        for(i = 0; tmpch != '\0'; i++) ch = tmpch;
; B/ k; f+ B( g8 b% D$ O3 d! m& k        ch = '\0';
: J1 W8 i5 i4 Z  h1 Z0 u  K}8 z# a- G; p& ?1 a' w- G0 i

* t- o9 M2 ?% X2 T' {' w) A' ]; r( k
char *去掉char首尾空格(const char *str)( F4 G- Y9 @0 Z' X3 h$ v
{
7 x4 d+ J; k/ Y+ C# n7 x        static char line[133];$ [8 r( x& L  F5 a
        const char *pbegin;
+ g  M- q- N% {. \- i' V* B, j        char *p,*pend;( x0 C  X8 ]8 O% q7 [
        int i;7 `5 A& |3 f# Z* m% {9 _

2 d4 I( O1 Y6 C9 i        pbegin=str;
- x; D3 v4 s! ?3 d        while (*pbegin==' ')
) j+ A- D- Z  ?/ Q9 t) v                pbegin++;
9 Z, L. O6 `. n# M+ N* `# H- ~0 u+ W
        p=line;! T5 d% K' m/ B+ d
        while (*p=*pbegin){
" N, b6 g) T1 v                if ((*p==' ')&&(*(p-1)!=' '))$ t' t5 t' a/ M) b# Z9 h
                        pend=p;
/ X; A4 k$ s8 N" F                p++;pbegin++;        5 j- g# H& G' n% t8 z$ R
        }
: C2 i3 R5 {$ e" y        if (*(p-1)!=' ') pend=p;
9 c$ \- V" ~4 K  m& g* x& U        *pend=0;8 T$ k6 h' V9 q1 \+ s1 _+ F
        return line;! o3 @- e1 a9 Y; C+ d/ W
} + i; D( o% A+ Y( g& Y& ^, P, B
. ^# @. B7 o4 [
; y8 ?; X2 Z% c% y# Z$ \0 p- U3 V; k
//获得网页信息 - 网页信息是中文会乱码 用英文信息
: h; H# P2 M/ u5 H3 ?$ yvoid 获得网页内容判断外挂更新(const char *Url,char *html);
, B& ^4 B, V7 m4 L. Jvoid 获得网页内容判断外挂更新(const char *Url,char *html)7 U4 N2 ], V% z" [: V& x6 n' E
{6 S5 n4 F( ]! B6 g& r+ |# j
        HINTERNET hSession = InternetOpen(CharToWchar("zwt"), INTERNET_OPEN_TYPE_PRECONFIG, NULL, NULL, 0);  L/ \7 @; ^2 n% C4 i# F9 C7 J
        if (hSession != NULL)2 ?- C) ~, R: s! {7 @! O
        {
+ i4 H# J  a1 X3 X6 d                HINTERNET hURL = InternetOpenUrl(hSession, CharToWchar(Url), NULL, 0, INTERNET_FLAG_DONT_CACHE, 0);, p' e1 a' b; d! o5 ]* g
                if (hURL != NULL)
* k$ D+ g' l+ [( r2 y3 y                {
) h1 H9 p% X- N: k/ N9 O8 E8 @8 [
  u8 L. w9 M8 ]; ?! D, H* q7 V2 ^0 \% o1 f                        char Temp[MAXBLOCKSIZE] = {0};
9 W6 R  j5 d6 V# ~                        ULONG Number = 1;
$ P, p( g6 ]# L+ \. x% [7 G+ ^                                while (Number > 0)
  G+ K2 X* x# Y5 |* c/ [3 O                                {
( K. {* u3 q/ @! x                                        InternetReadFile(hURL, Temp, MAXBLOCKSIZE - 1, &Number);
1 C3 N7 ~" Y, M& b0 z: I                                        char 判断版本[132]="QQ1821117007S33038219920103MEILEI";
2 y& J0 {3 [' f' ~                                        int a=strlen(Temp);
  s( s% {$ M5 k  Z9 M% X" y                                        int b=strlen(判断版本);   
& n, i5 u- y4 l4 ~1 F                                        if (a>b)
% V5 P/ X$ Y8 O8 g1 L  A2 M                                        {
' t. b6 }# O4 `" V1 s) L                                                char *p=strstr(Temp,判断版本);& z+ a! {: r# \' `% R0 O7 _8 e" n
                                                if(NULL != p)9 J7 v# w. X( |* C
                                                {          & \; n: l8 l- `# T9 P+ v
                                                  int wz=a-strlen(p)+1+b;//版本号起始位置
& |2 A" w3 G6 X: c- R8 l( b                                                  int wz2=a-wz-1;if (wz2>100) wz2=100;/ _! z( R" t6 a# d+ W4 C7 x* A
                                          char s1[132]="";. T. A7 T/ ~; x, x8 C$ E
                                              strncpy(s1,Temp+wz,wz2);6 }3 `6 l  ]) \+ x
                                                  char *p2=strstr(s1,"MEILEI");
4 O6 ~% x) \) y2 r                                                  if(NULL != p2)4 V9 r) J' t9 I4 O; b
                                                  {  3 R! V/ |+ |  e% S* o
                                                          wz2= strlen(s1)-strlen(p2);
1 d1 U" O) X( F  H7 W                                              char 最新版本[132]="";) Q7 J! }4 U% l  D/ Q' `0 p* y
                                                  strncpy(最新版本,Temp+wz,wz2);6 ^3 A1 ]* ]/ `- {, T
                                                      if (strcmp( 外挂版本,最新版本)==0)
' @* [( J' ]# q' u                                                      {
- _7 F# o5 d! @9 o+ I                                                            //MessageBox(NULL,_T("此外挂是最新版本"),_T("梅雷制作"), MB_OKCANCEL );
# K/ ?5 T& e3 r" r* K- A, ?* F                                                      }
0 q! X% j# E  g3 l  u                                                      else
4 {2 c+ q5 I5 H6 ~& U6 y& c                                                      {
# o; e% h2 Z" r                                                            char msg[256];1 H, T, T1 {4 y9 s: t% B
                                                            sprintf(msg, "乐清外挂:梅雷制作 - QQ:1821117007                    \n当前版本:%s\n最新版本:%s",外挂版本,最新版本);
4 @% [" D; w! q! c) ]  j                                MessageBox(NULL,CharToWchar(msg),_T("梅雷提示"), MB_OKCANCEL );
  H6 y1 m" ]- B  K6 b                                                      }* h2 ^. m3 F; l  y) Q- r
                                                   }) I. x: s  \* F; ^0 G
                                                  goto LH;0 m# z+ p6 i1 k$ M# ~
                                                }
+ A% B/ J; O2 G# L5 v$ A                                        }/ n- ^, {3 ?$ i9 l8 l

) C0 F1 E/ [" _6 L) u5 X2 Q                                }
% Y$ `% V5 }0 a8 c1 j                                LH:;
; Y1 p( X) M- p! o: ~6 C: w' f                        InternetCloseHandle(hURL);
: y3 q, ]% v' i; r. A                        hURL = NULL;
1 y3 q' V" j3 y; n5 G: q                }
8 E+ g! v( a1 R$ c! T9 l. o- r  I" a# b  B1 U
                InternetCloseHandle(hSession);: n9 @$ ^  B" P- X) i( ?9 H, S! C
                hSession = NULL;* K& |( ]. v  X6 I  _8 K4 O
        }& O- {4 _5 ?' _7 W+ m+ g# e
}
- d& M  T! y. q+ k6 E5 a% e" ]2 p+ l9 _" i. X4 i  v
& F5 A" G- x- E8 m' ~# T
//----------------------------------------------------------------------------+ U& i/ L3 t( G9 L$ r9 h! H
//  Activation Methods4 m3 S$ J6 h' ?' v. F4 L' [
//----------------------------------------------------------------------------
) s5 G6 G5 Y3 f; ]
0 S+ L- A, `8 G; B: W//  Unigraphics Startup
( G! |0 C; S" Z! h$ H//      This entry point activates the application at Unigraphics startup" \# n; U7 x! j7 c+ X" f4 t
extern "C" DllExport void ufsta( char *param, int *returnCode, int rlen )
: Y* `  P; a" z; B8 k( Y6 x! F" R{4 ^: J4 w2 p' B  a
    /* Initialize the API environment */- N  Q& E- N  M2 N4 b1 ?- [) y
    int errorCode = UF_initialize();
# u0 g: Y3 o$ X3 J
& J! Q9 c' f" d; e6 k' J1 D2 T# [    if ( 0 == errorCode )3 ~1 w- ?; m! O+ ^! I' V
    {
3 `) h! R  ^0 a+ Z        /* TODO: Add your application code here */
! v! w4 b$ ^- O; Q& P! V; f
5 r2 t, G/ S( p5 m9 @7 T6 c' X& m' |9 y- r. K& v  |& ~
                //百度云公开链接 通过修改txt文件标题% j" t, G: B9 g. N* w* a
                //0.0用于网页判断乐清虹桥外挂版本,验效码QQ1821117007S33038219920103MEILEI=V1.6FMEILEI= MEILEI= MEILEI.txt8 R: T- }! i5 s! |# i

  f, W3 Y+ U: {2 Z3 m% w/ D" W2 V6 q2 q2 |4 c0 _' ^( V
                char 网页文件[256]="C:\\Windows\\版本.html.bat";  
/ p  l: b  [2 C5 x. C, z2 V2 G1 n. Y                获得网页内容判断外挂更新("http://pan.baidu.com/s/1slw24Vz",网页文件); , s/ ]& ^  U# J8 C6 F( D
               
4 e5 H/ ^- N: {, Q% r6 X' c        7 D; m3 r  f& U4 T+ N, j4 A- [3 _) X

4 g/ T! D& }6 X5 a% m' [" a: [3 J! d& ?: ~; l, z
+ f; `2 y; J+ Z5 S. g! D5 _
        /* Terminate the API environment */; i7 B2 e1 e" N$ r
        errorCode = UF_terminate();* f& L+ I( L! [# [4 d4 }
    }
( m- ^% M9 O$ Y% m" I- i. T* `& x# @" R4 a+ O6 e- M
    /* Print out any error messages */
- I2 O& {/ o4 M9 H6 Q3 g, o! l- _6 zreturn;" s3 I( K' I2 u
}1 S8 ]+ m' J: b1 y2 j) }6 L: g4 d
- `8 @6 V$ h1 G& V  Q( p
//----------------------------------------------------------------------------
% b& G  y9 M' H8 Q* _//  Utilities
: m, T: b% N1 |: w//----------------------------------------------------------------------------3 b6 \7 v; ?9 g1 X

3 M! M, _5 l$ I: v5 J: p$ A  k9 O/ w// Unload Handler
; o% l0 y% t8 Y! o1 u  V//     This function specifies when to unload your application from Unigraphics.
( L- V# z9 {9 t+ W2 X$ |$ @8 M- i( V) [//     If your application registers a callback (from a MenuScript item or a& w7 M8 B! ]! N) c# {1 j( \
//     User Defined Object for example), this function MUST return
* R# H0 _2 I' l//     "UF_UNLOAD_UG_TERMINATE".
6 l2 a" w; e" g6 Rextern "C" int ufusr_ask_unload( void )7 Y. e- c, ]& s" I3 }  c
{# J1 s8 s" u3 B  b# @3 u$ [
    return( UF_UNLOAD_UG_TERMINATE );
! D! ]4 ~3 }  o7 ^9 W. I}
4 r5 k' B6 k, v+ h9 C4 c1 c* ~8 F7 Y$ D

& F! t# m$ p1 q# M' S启动UG就启动dll的方法
# R+ B9 W: j2 |  Z$ J) S9 F+ k5 [& ^5 N' Q3 f
方法1.添加环境变量  i3 i5 k2 ]- ^% }' h& _. G
USER_STARTUP=D:\MEILEI.DLL2 k$ H4 l  \4 q3 q& V7 D: c1 B
但是只能运行一个dll而且别人也使用这个环境变量那么久不方便了+ y" U4 O8 H0 z( ?) ]6 R* |) f

& y2 d6 R' e" \) N4 w- ?方法2.在代码里添加(可以执行n个dll)
6 O- ^( M. Y3 ]" q0 ~/ ?UG会自动加载 startup目录里入口点是ufsta的dll' h# Y; C8 I  G9 k6 b- W+ z, a( l

2 @9 P* L; \% g+ I% V所以在ufsta入口使用UF_MB_add_actions函数可以在UG启动的时候自动启动一个或多个菜单里的命令
, U1 d% c( ^* K& y8 |参考c++代码  ufsta.cpp.txt ,用此文件代码生成dll放startup目录 ug就会自动加载了3 K7 w3 m! P; e
" B$ Y# b9 ]: x+ i# T$ N
菜单参考  NXOpen_meilei.men.txt
4 q1 m! O; U2 S2 e7 g% T1 X
; E& J1 h! {: U0 D# ?DDD.DLL代码任意(当然也可以参考DDD.cpp.txt)吧dll也放startup目录
! T. X4 r) f! I0 R, C# V* G% U" V启动UG就启动dll的方法源代码下载
& B- e  Z' Y. H0 o" 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二次开发专题模块培训报名开始啦

    我知道了