|
请使用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)
|
评分
-
查看全部评分
|