|
请使用QQ关联注册PLM之家,学习更多关于内容,更多精彩原创视频供你学习!
您需要 登录 才可以下载或查看,没有账号?注册
x
本帖最后由 15757753770 于 2016-12-11 15:51 编辑 / j) j, H( u/ x8 _5 p+ Y2 p4 V
D! c# Y& |: X% b3 G4 x3 j$ G如果你想每次运行UG 判断 ug外挂是否更新2 ~. {9 x: ~- y0 d
& q# |) Q/ C {, ?
) M2 u: o# b: Q5 N- h$ k! r
原理:
( p; P# |9 g' f2 S自己去搞个网站 或者网页 什么的 只要网页内容修改版本时 网页地址不变就行了. M6 c+ s& o- `/ V
然后 启动ug时启动一个dll dll内容就是获得网页上的 版本号 进行判断
" l, A, X7 @& b# N; _; z& f' Z, A l, z# Q1 [
$ Z- y$ `: ^) O6 ?6 Q& Z被启动的dll程序源代码,如下
' {1 f2 x5 g8 g+ X+ d
/ x+ _* s' \, c3 e: \0 M// Include files
) t$ U% V( S2 s L#include <uf.h>
1 W _4 \3 N& X* [( {* i9 Z$ _#include <uf_exit.h>
/ J, G+ @6 \8 `#include <uf_ui.h>6 k# a1 {$ q! {& H# u$ L, l
#if ! defined ( __hp9000s800 ) && ! defined ( __sgi ) && ! defined ( __sun )
; L4 V, @8 k$ X# L/ f# include <strstream>
7 P# b6 z" c- O) [2 n- _# include <iostream>
" ~8 |3 z2 U# s, k using std: strstream;
V+ b5 R6 X2 ? using std::endl; 5 ^/ p6 u! d1 S- X2 x; ]- n r* n" F1 \
using std::ends;
$ X6 k6 D3 l3 h3 o! X6 F- D using std::cerr;
: T; t1 l+ y6 |5 |) {# A& `% b+ S#else! Z$ \ w' ]8 _2 \
# include <strstream.h>
- S1 O. }7 B4 @4 v* `# include <iostream.h>
/ A) S, B+ @- \! C- ~; Q; E$ D#endif
5 t) Y* |/ L# @0 r2 c$ L#include <string.h>
w: J/ _% K9 u) i7 r# M* }#include <afx.h>
5 \" S0 x! ^2 ]2 p+ v$ |- f( ^#include <windows.h>5 e# `0 S! s+ ~! _, \ l6 T3 D
#define MAXBLOCKSIZE 10249 m, C( a0 \7 j; n. |
#include <wininet.h> //网络
5 A4 _: t; R# ^4 p/ Z: `5 h& N! {#pragma comment(lib, "wininet.lib")//网络. t6 P& k) v+ n3 n
) H. J3 m# `7 M5 } e' C/ Zchar 外挂版本[132]="V2.8F";% ^& \1 \ J9 K3 b
/ N, K: q3 J3 I6 ]( e8 m+ k! Z& Y0 Z- r) C% G" D' R( j8 ? L
wchar_t* CharToWchar(const char* c) //char*转wchar_t
7 l) S$ ~) v; d* q$ n$ F2 F{
$ b: L5 v" w2 H( ^$ S" s; E- S' E. e wchar_t *m_wchar;- L$ n. N+ H+ n" q# Z0 [- Y9 G
int len = MultiByteToWideChar(CP_ACP,0,c,strlen(c),NULL,0); 7 ?. ~4 l$ y4 F- Z% Z5 [4 A
m_wchar=new wchar_t[len+1];
5 A/ K1 h# c- f! N% i1 A4 c" B1 j MultiByteToWideChar(CP_ACP,0,c,strlen(c),m_wchar,len); " l: O8 R8 f* U2 l0 `9 Q) Q9 {
m_wchar[len]='\0';
2 a# _, I: R- M2 P; _ return m_wchar;
+ H/ j; J, m5 {* L! D4 M, Q2 p} : ^' r4 @1 s7 t2 T' g+ z
3 b/ W& m! Y7 E: O//TCHAR 转 char) f* f# y* y1 L, G
char* ConvertLPWSTRToLPSTR (LPWSTR lpwszStrIn)
- | T9 s) B4 z9 _- y1 C0 ^4 W{ ' t" v9 W: n- I5 W. C& {2 K
LPSTR pszOut = NULL; / y; c& c! J K
if (lpwszStrIn != NULL) : e t8 B' S4 ?/ ^. m
{ , B) z: d; Y2 {- n+ G
int nInputStrLen = wcslen (lpwszStrIn);
# ?# P* q5 z8 o" `; G5 N: r' V
$ j O, B" p# T1 Z // Double NULL Termination 6 \ q( W1 N0 G! Q
int nOutputStrLen = WideCharToMultiByte (CP_ACP, 0, lpwszStrIn, nInputStrLen, NULL, 0, 0, 0) + 2; 7 B z5 J0 Q- X& [$ q* e6 {) f
pszOut = new char [nOutputStrLen];
/ p& M% ?6 e" o" j7 G$ l$ @) e; X. q, v8 z+ V/ P
if (pszOut) 8 J# c2 _ [3 Y; ^2 Y4 p
{
7 l4 \/ \) T( k6 P memset (pszOut, 0x00, nOutputStrLen); : N m ~" N# E( ?/ q' ^0 V6 ~, q/ E
WideCharToMultiByte(CP_ACP, 0, lpwszStrIn, nInputStrLen, pszOut, nOutputStrLen, 0, 0); 2 r9 h4 d7 E8 ?4 c2 N+ Y
}
1 z' [0 m7 f t Z- e+ n } + x( G5 R& J& C% ~% P3 N# L
return pszOut;
- Z% O2 [' M9 x! Y}
1 A4 Z7 ?! H( f( R Z p
( F+ W& H% f+ ~* O$ l) K/ Q1 y: H' x, ?
//CString转char
$ F. @5 |; h0 d& o* C3 ]/ B, rvoid CString2Char(CString str, char ch[])
: S9 D$ M1 F& A' @# Z* u5 m% A{
3 d( Q7 n* l+ O% K* @ int i;6 I8 C+ H5 Y( W0 r' O+ M; F8 N9 B
char *tmpch;
/ w( u* K& B9 D: H2 w int wLen = WideCharToMultiByte(CP_ACP, 0, str, -1, NULL, 0, NULL, NULL);//得到Char的长度
. n* v, {2 D" ?+ U tmpch = new char[wLen + 1]; //分配变量的地址大小
, | @3 D5 w; A3 ` WideCharToMultiByte(CP_ACP, 0, str, -1, tmpch, wLen, NULL, NULL); //将CString转换成char*
, s T; y7 a0 w8 x |! A7 m" I8 p6 w" o2 |
for(i = 0; tmpch != '\0'; i++) ch = tmpch;* K2 B9 ]/ u9 b* V# b9 o( z# F7 [
ch = '\0';
# ^8 ]* p' o3 _; T$ g5 F' m}
# N- `- ] O5 n: W/ {* e; h8 y
1 ]) p. L5 ?* e3 z
) q* W, k0 P3 ^9 T- U, i) a+ Qchar *去掉char首尾空格(const char *str)! E- U* ^! M: w
{3 v1 {0 h; c! y
static char line[133];: i2 e7 l* E- I4 L' _5 k+ c
const char *pbegin;
: E s) {7 [. Q% F. y; G char *p,*pend;0 J5 W# D! u. v
int i;" @2 _8 [0 y! x! P3 f( X6 J/ j
6 X: t+ S) m9 f+ W0 Q pbegin=str;
]5 D5 W: c H( f while (*pbegin==' ')
. |. J, G0 g! i k' I pbegin++;
0 A. u6 @1 U7 |+ t- t+ S2 R; N2 b( d6 m# R& ?6 f% M9 t! x5 ^
p=line;
9 V) e- m: M+ x* Q. C+ X( S while (*p=*pbegin){6 ^$ O8 Q% g3 _4 R2 L
if ((*p==' ')&&(*(p-1)!=' '))
2 I1 X0 `5 t4 M. d3 V pend=p;
+ B, G' P4 H$ j p++;pbegin++;
) F e0 g' J7 Y+ B/ f3 l+ s }
( f& `( F3 d; M4 Y! d9 b if (*(p-1)!=' ') pend=p;- j: @4 P: J" a9 E" d6 Y3 P
*pend=0;& f3 Z2 C! X& F; r- j
return line;
. y. d' Y' U1 n+ t! F} # J, R" P! @8 {. _% _5 M' S$ C
0 K& ] @ V1 ^( h: u8 T/ j
/ P" _! i: k' W3 e# g4 x//获得网页信息 - 网页信息是中文会乱码 用英文信息% N# o6 L1 E j/ U) z* {# i
void 获得网页内容判断外挂更新(const char *Url,char *html);3 f3 P% W1 Y, P( p0 P- g
void 获得网页内容判断外挂更新(const char *Url,char *html)
5 o2 i5 _: L5 P- ]+ g- a{. N% x9 p2 j# d: h$ w
HINTERNET hSession = InternetOpen(CharToWchar("zwt"), INTERNET_OPEN_TYPE_PRECONFIG, NULL, NULL, 0);
7 M4 z4 O+ k7 I. Z9 d if (hSession != NULL)
! k8 W. l7 z1 u* K U( ` {
( ^' Z& w3 ?* q. Q* l1 S; Y& o HINTERNET hURL = InternetOpenUrl(hSession, CharToWchar(Url), NULL, 0, INTERNET_FLAG_DONT_CACHE, 0);
' o. D" d7 r4 J if (hURL != NULL)0 ~0 s1 p. K) o" L
{" _) j2 p' n1 H" F/ }2 [
: |0 ^* H9 ?( z% O3 X
char Temp[MAXBLOCKSIZE] = {0};+ \. U4 m% q1 l: ^+ R" \
ULONG Number = 1;, M5 l7 l: A! ~) R
while (Number > 0)
/ U T9 A) @0 ~2 a$ Y2 n( Q+ s+ x {0 Z' v1 e' O9 ^2 M5 I/ j
InternetReadFile(hURL, Temp, MAXBLOCKSIZE - 1, &Number);' b$ N* j1 d* o3 t& S; O
char 判断版本[132]="QQ1821117007S33038219920103MEILEI";
; y5 j- [- E' v, Z' [# o int a=strlen(Temp);
+ c( ^- f! X; l g: a* M int b=strlen(判断版本); 2 j! J6 P7 T* t4 ^' Q( |; ]! J
if (a>b) 8 X+ ^9 J0 e# m" K& l' j
{3 L6 o8 W! Q# ^7 ?. O+ n' v. T
char *p=strstr(Temp,判断版本);
; @# I- p' u; g, W& f! ~, J0 J% N* @ if(NULL != p)
" r0 e( o" {- o/ K4 d { ( f, a9 P* ]0 C& g
int wz=a-strlen(p)+1+b;//版本号起始位置4 H w' K ^% s
int wz2=a-wz-1;if (wz2>100) wz2=100;* @4 Y; H+ s: K: Q% }( y# v
char s1[132]="";( d0 t9 `) B: V/ z' w
strncpy(s1,Temp+wz,wz2);
' v( n& E& ~8 L7 K" v+ y+ F char *p2=strstr(s1,"MEILEI");; `8 d5 b+ E9 r( u1 B
if(NULL != p2)" \% \; X M9 g# `
{ " T) E" d" M3 X& [. \+ t
wz2= strlen(s1)-strlen(p2);7 E- l& K1 l5 c/ }. Y- n o4 j
char 最新版本[132]="";# f- y9 |4 p+ R/ J5 L
strncpy(最新版本,Temp+wz,wz2);
2 [# b7 q# f, S z5 b6 k! W if (strcmp( 外挂版本,最新版本)==0)
- u8 S! R4 W( Y" B0 ?0 }! J2 i3 E { ) q& Y' d$ c! V) F _
//MessageBox(NULL,_T("此外挂是最新版本"),_T("梅雷制作"), MB_OKCANCEL );& n2 \% ? I0 G I! o
}+ `0 `/ C8 A6 e( j; _# Q
else8 T1 V+ b+ j# m- Q K0 z% ?
{
" a, X, {8 r$ u* I' V( [ char msg[256];1 d2 |3 g" `3 F' ?& j
sprintf(msg, "乐清外挂:梅雷制作 - QQ:1821117007 \n当前版本:%s\n最新版本:%s",外挂版本,最新版本);$ W$ `- b+ t7 V+ R. N
MessageBox(NULL,CharToWchar(msg),_T("梅雷提示"), MB_OKCANCEL );- Y" T2 ?2 Q' n+ |; f# [
}
( s0 D( D; M6 v1 O! b% C) u7 _ }
u- w% T: A% [$ m goto LH;$ D6 G; p- ]0 I5 {1 R' w; m
}( g" t% W" r* N" Z1 Z7 e/ i
}
0 v2 ?! b- N: u2 J6 J& w* s# V- x1 l" f9 e
}" ^' K4 ^+ @: N1 n
LH:;
+ y7 s2 q- H9 l: u5 A( n InternetCloseHandle(hURL);% |$ ` u/ P3 h0 Z
hURL = NULL;8 h+ y2 f _; {/ p5 I, W
}
# j6 C3 `6 [1 Z' C2 T' Q Q5 Q. [# v& e
InternetCloseHandle(hSession);8 S+ _& y+ Z2 @% i9 @/ n" Q
hSession = NULL;
8 F2 }& f( ? Y" V" v, ^4 t }# {+ W# h! ^ f; t. B. }4 A& o, w+ s
}2 U! V8 }$ N+ c3 x; _( x: J* i
2 U+ N( t- C7 H. `0 b' r, L
9 n! A" q2 O& s$ U: E. ?: m6 {//----------------------------------------------------------------------------
" W! {% t8 |$ \' |) G. F$ \// Activation Methods2 a, z6 w' o. A+ s. Y
//----------------------------------------------------------------------------
; z) ]# F* ]3 z! D" p; B) _4 }& m/ G' C2 B7 B- a4 z; d! O2 B
// Unigraphics Startup
+ |. [. |5 t' M7 G' N- }// This entry point activates the application at Unigraphics startup! m2 ]2 {/ T* j$ b! O
extern "C" DllExport void ufsta( char *param, int *returnCode, int rlen )
7 B+ R# ~! b( N" k. U+ @1 u{
( L3 ^; y5 F" h) x2 `5 H /* Initialize the API environment */
5 n9 W! `. }8 Z! w& Z int errorCode = UF_initialize(); e8 h0 ^- `/ d e3 D6 I. G4 M7 r( ?
. I S6 p2 ], J" Z1 d& U( H- \
if ( 0 == errorCode ), x1 {8 n8 R6 c8 G+ \
{
: ^ x0 |+ c8 U- g% n9 n /* TODO: Add your application code here */
* q) p1 V8 ]1 Z" E' g: X5 a1 F) T: N2 i0 s6 o. X
- K1 |5 R$ o& q4 r7 @ //百度云公开链接 通过修改txt文件标题0 Z. {* _( C5 s4 D8 v0 }8 n$ S
//0.0用于网页判断乐清虹桥外挂版本,验效码QQ1821117007S33038219920103MEILEI=V1.6FMEILEI= MEILEI= MEILEI.txt
. P; P) Z* f( M+ ^
6 g& q0 U( i2 v7 M& S% B
% s/ ]; p0 ]+ Q; g+ ^6 B char 网页文件[256]="C:\\Windows\\版本.html.bat";
8 Q; a L& \- |; l4 O0 E 获得网页内容判断外挂更新("http://pan.baidu.com/s/1slw24Vz",网页文件);
& ^* o. M$ `$ t" O: u% n3 ?$ Q
P1 G4 Z4 D' Z. V8 a 2 \' m" L/ t# |2 ~
# U5 p/ y8 F( L2 X* S, k/ b
+ g' |4 D8 f1 c% _- ]* R
) W+ Q& z) t% P1 @% M# m' o7 N /* Terminate the API environment *// c% ?. G% j2 H" O) d+ n
errorCode = UF_terminate();
- T( v, A4 p5 J }+ i4 T$ z( y* u
( H1 g6 f2 G+ h5 G /* Print out any error messages */
3 L; t" C0 e0 m$ J r* V, Oreturn;
5 v* _2 z- w( J}
: T# `" b8 l5 Y( \7 }8 ]5 Z0 e# @7 ]6 r' @' y* O( R7 H( k
//----------------------------------------------------------------------------
- F) t, N6 X3 G+ b( c: D// Utilities
6 |! D; K1 k/ Q- T( B! C//----------------------------------------------------------------------------
2 K- L, P" [2 x+ X' O# a1 Y, y i) v$ c% d3 _3 }: [
// Unload Handler
+ S S. _" k- W4 z" X// This function specifies when to unload your application from Unigraphics.! R- o6 c4 y5 C5 M( o, k) {
// If your application registers a callback (from a MenuScript item or a
% B+ H8 l# N5 ?7 S( A# K- l// User Defined Object for example), this function MUST return1 l, D& ]3 _1 r3 d# I0 K6 _
// "UF_UNLOAD_UG_TERMINATE".6 f! H0 n+ ?* ?" E' \
extern "C" int ufusr_ask_unload( void )8 ?1 d3 b: i7 r" m9 M ]+ g
{
( s1 T5 K/ n, ^! @ return( UF_UNLOAD_UG_TERMINATE );0 `) K5 W7 u7 A ]; e. d3 n5 P
}
6 R5 c" p/ l* j: [& X. ~. ^+ o
8 z% L& I: \9 q! [: S1 _* S6 k6 H% {9 v# c# F
启动UG就启动dll的方法& u1 t2 q; b3 t+ [* q
0 G7 c% t/ W. r" i, N9 y8 w$ m方法1.添加环境变量8 Z J% B$ L% Q, u# h9 h% o" E4 H
USER_STARTUP=D:\MEILEI.DLL- \3 o/ b2 z2 m1 O
但是只能运行一个dll而且别人也使用这个环境变量那么久不方便了
# j% K& P+ n* ]
9 _& E j* ^0 j( {! ~方法2.在代码里添加(可以执行n个dll)% |. K. I( [; B
UG会自动加载 startup目录里入口点是ufsta的dll
! e* Y# R% j8 g' N+ C7 f& j% B; d0 E# M8 z' G$ a. V& Y. ?
所以在ufsta入口使用UF_MB_add_actions函数可以在UG启动的时候自动启动一个或多个菜单里的命令# m" @, N3 R- w7 s4 {
参考c++代码 ufsta.cpp.txt ,用此文件代码生成dll放startup目录 ug就会自动加载了
! D4 r% W. Z& x2 {* y1 g, D0 `2 p7 V3 B# l
菜单参考 NXOpen_meilei.men.txt
! n$ m: P% r! M6 P5 {
3 l* n% @1 n0 v ^DDD.DLL代码任意(当然也可以参考DDD.cpp.txt)吧dll也放startup目录
% K9 {/ }: q/ j6 u8 X: u/ @$ v3 z启动UG就启动dll的方法源代码下载
. G" l6 D4 B, A4 H9 M a9 V
启动UG就启动dll的方法.rar
(3.3 KB, 下载次数: 28)
|
评分
-
查看全部评分
|