|
|
请使用QQ关联注册PLM之家,学习更多关于内容,更多精彩原创视频供你学习!
您需要 登录 才可以下载或查看,没有账号?注册
x
本帖最后由 15757753770 于 2016-12-11 15:51 编辑 9 G! a2 D) ]1 u7 G5 `
! e& B; A9 S* U2 `6 ^1 q( o
如果你想每次运行UG 判断 ug外挂是否更新
$ `) m4 W) }0 D) u& n* t8 e* l6 U# |9 u% h% B# Q
8 ]' x' T( G* o, {0 q* N* y原理:
! q8 N7 `% r5 D自己去搞个网站 或者网页 什么的 只要网页内容修改版本时 网页地址不变就行了9 L7 q& e; V S1 ^' S5 S4 _
然后 启动ug时启动一个dll dll内容就是获得网页上的 版本号 进行判断
/ r3 N5 L& Q) [5 s' t Q1 [! J
9 f8 g0 l4 j( T1 Q
被启动的dll程序源代码,如下
, x9 [$ m$ R# `) u1 ~9 r# z( l$ | B
// Include files& Z6 I2 U$ _ s4 ?
#include <uf.h>8 K3 D& @6 s, H2 O' J
#include <uf_exit.h>+ `$ _! x1 @5 G8 [. u
#include <uf_ui.h>: p' f p! S2 v' Y& o) H3 s0 \
#if ! defined ( __hp9000s800 ) && ! defined ( __sgi ) && ! defined ( __sun )
`5 q+ ^9 B2 m4 B# include <strstream>7 i. h& v) n4 D6 h
# include <iostream>, O5 \! }" g7 y p! Z! h, [/ L# S
using std: strstream;& G3 m( n/ J! E: D2 L
using std::endl;
4 ^* R7 K+ I k- i+ {& Q using std::ends;
6 o; O! u5 k/ I* ~9 Z using std::cerr;
' `! s: b1 ^" d" O1 w/ Q# y#else
) M7 X2 T% D6 h/ b# include <strstream.h>
. f9 C: k$ q% ~8 L7 u# z# include <iostream.h>2 J$ D1 z% K9 E, Z# r* w" P
#endif
' P8 P8 G+ Z# s, h#include <string.h>
( _- `2 H- o2 o8 O( z6 }: M. N) U#include <afx.h>' h7 h0 {" e0 u+ a" h# B
#include <windows.h>2 q3 w4 s1 W+ i
#define MAXBLOCKSIZE 1024
- Q. Y" n8 R# g% a' j#include <wininet.h> //网络% z( \/ e# a* d/ u, w; G5 x. |7 ~% L
#pragma comment(lib, "wininet.lib")//网络" d, [5 o e' M @ Z- V$ s& s/ o" ~
+ M* H+ I$ b7 u" ^/ u$ Jchar 外挂版本[132]="V2.8F";
8 Y! q# ^8 L0 [8 Q
2 a/ O3 p- p1 g% ]- R4 ]0 q+ I
wchar_t* CharToWchar(const char* c) //char*转wchar_t U8 e/ K ]( A
{ ! \) `) b1 T- o( C3 a1 @7 B$ D
wchar_t *m_wchar;6 E6 }; ^" {! x
int len = MultiByteToWideChar(CP_ACP,0,c,strlen(c),NULL,0);
" q1 c/ b2 o7 g. D m_wchar=new wchar_t[len+1];
|* A3 U5 {4 X& c' L MultiByteToWideChar(CP_ACP,0,c,strlen(c),m_wchar,len); 1 \, F7 b' C9 [9 e2 M7 m
m_wchar[len]='\0';
+ |4 ]0 {( I1 w) d/ {9 E- k7 G, E return m_wchar; + V# ]3 c! j$ y3 |; H O1 w# y5 k8 B
}
* ]5 g, W0 U: S3 s, D- T7 l, l
//TCHAR 转 char( D2 D+ Y; X9 s% C. s/ Y
char* ConvertLPWSTRToLPSTR (LPWSTR lpwszStrIn)
* Z7 l( v3 {( N7 H" ~8 Y. a$ u{ 7 k% g, D @) z8 @
LPSTR pszOut = NULL;
$ }& w- G! d% Q2 {& h n if (lpwszStrIn != NULL) , o, R' T- ?; h5 |# k& C7 W' [6 F( ?: R
{ 6 y; `1 w0 `3 q; z" @9 d' d
int nInputStrLen = wcslen (lpwszStrIn);
8 D/ N9 U9 J) |( `
3 s* @, Z! U% \, w // Double NULL Termination
. ]: J) D% h* k: U6 T int nOutputStrLen = WideCharToMultiByte (CP_ACP, 0, lpwszStrIn, nInputStrLen, NULL, 0, 0, 0) + 2; 4 @2 P( T+ r$ H! {2 l8 s1 D
pszOut = new char [nOutputStrLen];
0 B5 C/ ]5 `- D) E2 j# V7 F" B
+ |$ \7 a$ u4 p! G if (pszOut)
u! D4 \1 M" _; [0 r \* `8 c# \ { M+ u* r9 ~! z5 W$ K
memset (pszOut, 0x00, nOutputStrLen); / M4 L1 ~- M9 k7 K* x
WideCharToMultiByte(CP_ACP, 0, lpwszStrIn, nInputStrLen, pszOut, nOutputStrLen, 0, 0);
7 |) x" p' E* N1 d }
* [: P% M+ U$ g% x } ! [8 |1 T& H! M: P
return pszOut; . u. Y) q% q2 ] g& R) `. I
} 8 q# R" Q- m# }+ `; m: G# u( e
S& r4 X3 I4 G3 b
8 @5 h2 A# o( g) d) A: J! L
//CString转char
& ^0 n% z" c! @ M9 P3 Zvoid CString2Char(CString str, char ch[])+ V8 K& N9 N! y
{ F( i' v2 [- e& s7 D$ T1 e" D7 ^" |
int i;. S5 v& e* ]7 Y; t6 ]9 W6 o/ \
char *tmpch;! a0 k) `* P1 D7 b- Y4 s
int wLen = WideCharToMultiByte(CP_ACP, 0, str, -1, NULL, 0, NULL, NULL);//得到Char的长度
$ i0 |" p2 Y7 r1 F h tmpch = new char[wLen + 1]; //分配变量的地址大小
6 l# @$ d% B' s- v WideCharToMultiByte(CP_ACP, 0, str, -1, tmpch, wLen, NULL, NULL); //将CString转换成char*
5 D9 |, G; D. h4 m
0 m/ f7 O0 @- X) y2 o6 H4 H$ K for(i = 0; tmpch != '\0'; i++) ch = tmpch;
) v: _9 P8 Q. e2 G: H8 \, J ch = '\0';# p6 M% j; o/ R" ^ |1 F) f0 n
}) S! ^& N V' Y: V7 Q: m% [3 Y
: X+ r P$ k( y& i
( ~( g: L' J# j7 T
char *去掉char首尾空格(const char *str)
$ n) J& d+ s2 C; K5 B{
, V8 [6 P1 g4 G& ?" A! f p static char line[133];
/ I5 Z- ~: l( X; r9 ]7 |: _ const char *pbegin;" A V$ e, ?% S
char *p,*pend;+ c, `' M9 k4 C1 |4 `) m% ~9 N
int i;2 D1 K% k" K4 V+ A+ g
7 X5 ^; S0 Y: F( }
pbegin=str;
3 M# q9 z: P8 r& i, ? while (*pbegin==' ')
6 L- I" r0 x% p* V pbegin++;
! R2 U! G& S; ~, { R1 l
% l) h K, i1 `$ n) T p=line;! r1 C; K) x5 T1 x8 A" k3 g9 y
while (*p=*pbegin){9 H5 f# H5 o2 ?$ V7 h8 i9 R5 B1 c
if ((*p==' ')&&(*(p-1)!=' '))$ b$ t6 f) U! K* b
pend=p;. w3 c/ e2 P$ i! `* G# u& p
p++;pbegin++;
1 K M, D3 z7 X1 G+ p! V! x } S; I ^$ B- i7 U
if (*(p-1)!=' ') pend=p;" |2 Y8 J- U+ N0 C' R( e' R( n
*pend=0;+ Q/ Q7 q% F/ M
return line;& Z4 P; x. p) g6 E' h- i$ i$ O
}
; q; c& y2 F, _- N) {2 W) Y- T. k* h/ S6 L, `5 p0 R
& d, k; Q: X. X }; s//获得网页信息 - 网页信息是中文会乱码 用英文信息
1 n3 p! Y) e5 P/ hvoid 获得网页内容判断外挂更新(const char *Url,char *html);
; ^( S" R; N8 x: t( w, l1 w2 B5 b4 Qvoid 获得网页内容判断外挂更新(const char *Url,char *html)7 O& J" s2 d( Z3 J2 w; m
{
" b) e/ p- c! f) O+ z& ] x5 E" S5 \& o2 q HINTERNET hSession = InternetOpen(CharToWchar("zwt"), INTERNET_OPEN_TYPE_PRECONFIG, NULL, NULL, 0);
; E8 W% W' Q/ A# D, G* K: O! n if (hSession != NULL)
# E/ D4 R6 {: d( n6 e$ ^6 U {
. g3 W* U j8 L- f, L1 _9 T HINTERNET hURL = InternetOpenUrl(hSession, CharToWchar(Url), NULL, 0, INTERNET_FLAG_DONT_CACHE, 0);
; [, M! X- L- U( t% ]7 ~# q8 L+ B if (hURL != NULL)
% e# f" O( X9 w- s& P; r1 W' d+ e) l {
9 m! S% L, Z A8 D3 X8 ^ l; g/ c+ G" H% X6 ^7 z
char Temp[MAXBLOCKSIZE] = {0};" h/ o3 D! D$ y" g2 M
ULONG Number = 1;* V3 g, v6 x( t1 Q
while (Number > 0)& C8 _! t& ?% b0 h& n* Y [9 X3 D
{# b) w5 t' |0 s. u5 |; p, t
InternetReadFile(hURL, Temp, MAXBLOCKSIZE - 1, &Number);, j0 @# ]6 N/ j8 b0 n. j
char 判断版本[132]="QQ1821117007S33038219920103MEILEI";3 S8 S3 d2 a( ^. {, q
int a=strlen(Temp);
- _5 ?) W6 ~, k. f6 w, z int b=strlen(判断版本);
# v( _4 r) Q) o# G6 C2 `8 f if (a>b) ; w5 w1 t4 j7 t- o; m, J2 C$ }2 C; j; X
{
7 K C) X) ~# f% f8 ?: u2 g8 H char *p=strstr(Temp,判断版本);" d1 }0 m0 w# V, V; l# I) H, Y
if(NULL != p)
0 V& r3 y! r' L n( I* e {
% f+ ^/ h' `- V7 v& d$ V" f8 @ int wz=a-strlen(p)+1+b;//版本号起始位置
3 `/ v% H6 D: y$ v int wz2=a-wz-1;if (wz2>100) wz2=100;
: [8 `. @# i0 P M char s1[132]="";
0 j9 g4 Q' b! @8 j strncpy(s1,Temp+wz,wz2);1 s* I& ^+ g/ P
char *p2=strstr(s1,"MEILEI");
; [' D$ j4 Q' _ if(NULL != p2)! D4 L+ |* |( |
{
/ B ]$ K4 [2 d# { wz2= strlen(s1)-strlen(p2);
7 C% a$ f# C4 n6 x5 h8 a# V4 L1 L. b char 最新版本[132]="";5 c1 Z- M) k' w) E6 O% i% {
strncpy(最新版本,Temp+wz,wz2);
4 ] e4 \4 J1 {) ?; T if (strcmp( 外挂版本,最新版本)==0) p# f) j( c( C& J1 W+ I
{
: p Z: p. b4 e$ D, S- H) q //MessageBox(NULL,_T("此外挂是最新版本"),_T("梅雷制作"), MB_OKCANCEL );8 ~% c5 l% ^4 w- G2 ]8 N
}
5 t6 ~) Z$ J! R else1 C% k1 @ e: g3 `# n1 r% ^
{
7 E: f! b! i6 q1 ]% B- p/ A char msg[256];: }; s4 e; x H! k9 a, I# E0 B
sprintf(msg, "乐清外挂:梅雷制作 - QQ:1821117007 \n当前版本:%s\n最新版本:%s",外挂版本,最新版本);
* U4 p" B* ]& \# x8 V( B MessageBox(NULL,CharToWchar(msg),_T("梅雷提示"), MB_OKCANCEL );, \; p" Q! E; p; y# Z- }
}6 I9 q: K& }+ w8 p z
}
! s: D. o7 p/ |& M goto LH;; |3 L0 {+ s" l8 Y9 p$ l. f. K
}: d! G) `' R. q4 B$ k2 x" T
}! Q! D; P/ m0 }) S
, i* L/ r5 { E5 d5 h
}1 B9 X5 J( _: q9 e3 k2 u! X' M
LH:;2 [* k: y- ?/ f- s/ \* x+ k' k3 n
InternetCloseHandle(hURL);
. {* U% o% S# L3 }' i: C6 |- a" _ hURL = NULL;
7 D5 T }# [$ f }- }- x1 r3 O7 |! ^! L$ x
2 b# y2 p/ b) n5 i0 ?( h
InternetCloseHandle(hSession);
# P- W0 G% U( A1 g+ G( I hSession = NULL;+ ~# U4 t# |0 }2 z
}
2 J7 v* P7 h9 l4 A( W4 x& x. g}1 q) R# Y- H Q1 ]% D- ^
1 p, D" ^ ]. c3 v& C
& z, j$ ~: M% ?3 P" A
//----------------------------------------------------------------------------2 t- t/ m: l. y& u: ] f a% v
// Activation Methods
4 S3 O; O$ P) n0 Y: w7 [//----------------------------------------------------------------------------- K, [' B( ?. L3 j% v
4 t) L, B- b4 L: _' V+ W7 J// Unigraphics Startup! E. I3 k, L7 c. R2 f
// This entry point activates the application at Unigraphics startup2 L% A ^# O) Z0 T) R
extern "C" DllExport void ufsta( char *param, int *returnCode, int rlen )) b( w' \4 K6 D7 i+ F
{
; D$ |+ `& D" h* ^ /* Initialize the API environment */
8 u: e& j' q, W8 ? int errorCode = UF_initialize();) p' Z' Z- h7 V. ?+ e4 x
& u8 Q3 \+ {6 F3 z" ]7 q% e, L* N" c if ( 0 == errorCode )
* B+ C$ d4 a/ `3 e {
$ x7 H6 Q9 \ E, C6 ]1 A7 { /* TODO: Add your application code here */
# H* G( n9 b! ?! s: c/ n! ~& l3 ~9 D4 ?: z z
2 f3 s: t2 g5 U# ]0 _; I, u& A //百度云公开链接 通过修改txt文件标题
- e: G T$ c0 [+ {6 k$ U //0.0用于网页判断乐清虹桥外挂版本,验效码QQ1821117007S33038219920103MEILEI=V1.6FMEILEI= MEILEI= MEILEI.txt3 ?( z- F' V! [0 ?, V; d
r" G4 V" j! {7 N" k: P* J7 z/ K
6 |& a# |. c; y8 q/ q7 Z char 网页文件[256]="C:\\Windows\\版本.html.bat";
8 b- z4 u: l/ i% g8 p. o7 K 获得网页内容判断外挂更新("http://pan.baidu.com/s/1slw24Vz",网页文件);
! A9 ~& \' p3 g8 l
3 O. Q7 N% F1 X. l9 f% s 5 I; @' ~1 e0 S- Z
- ?- N c7 l+ f5 x- M, t
/ n+ M# d! S, J8 l, u+ u& q9 m) D) D' _1 s
/* Terminate the API environment */
3 c7 Z3 z; R( G1 D errorCode = UF_terminate();
( B" F* l' A' N* b! l }
* ~, i* @. o2 x* ~4 j' W
% \4 z) } }; f' ] /* Print out any error messages */8 R m+ s+ F; r9 q8 k
return; g) n$ r/ B( O" |
}$ I* B8 S- a1 z2 Z4 g. U0 [
$ q+ f# e" G, @; S2 E0 c- m
//----------------------------------------------------------------------------/ ?0 |7 m1 \4 y9 T @8 e
// Utilities J) m9 F% T3 G/ _7 f
//----------------------------------------------------------------------------
@& C1 r; D' @0 e. c: `. b4 u$ x+ o; P8 Q& Z
// Unload Handler' k2 l7 t. _7 c6 [! e
// This function specifies when to unload your application from Unigraphics.
( ^7 \/ l0 }9 I- S! T// If your application registers a callback (from a MenuScript item or a% V6 i* u: o6 t
// User Defined Object for example), this function MUST return8 k: h" a( h; y; u; S) U! j/ [
// "UF_UNLOAD_UG_TERMINATE".8 e! c0 r2 `! N; a Q. \
extern "C" int ufusr_ask_unload( void )$ v4 c& C' F7 n" x
{
& ~( y: J. z3 ]- z/ j- n0 ?4 l3 N& T/ q return( UF_UNLOAD_UG_TERMINATE );7 L7 o4 q0 s* ~5 P
}2 m9 K9 @6 I; D3 [7 P& J+ @
8 J9 _. [" f/ w# W/ o
; @* h/ A) e3 U, c
启动UG就启动dll的方法
& m. d2 l! d1 T; z$ {+ P
$ Z+ o/ O* u6 _( c方法1.添加环境变量: }- \, L! m! Z8 L& }
USER_STARTUP=D:\MEILEI.DLL) i( P4 h6 r& c! C0 N5 W3 \0 R
但是只能运行一个dll而且别人也使用这个环境变量那么久不方便了
' ]& `6 h0 \! r, U
W7 O9 u' Q. I" k3 L方法2.在代码里添加(可以执行n个dll)
7 [/ r9 S: L2 {* g3 O8 oUG会自动加载 startup目录里入口点是ufsta的dll
$ V1 i8 |# q5 y1 V
9 [5 \6 _6 R) k- R所以在ufsta入口使用UF_MB_add_actions函数可以在UG启动的时候自动启动一个或多个菜单里的命令
- l2 p& [* C3 a. b, Q" R参考c++代码 ufsta.cpp.txt ,用此文件代码生成dll放startup目录 ug就会自动加载了# z4 s7 x% X, z' ~
" v& y8 m* u" |0 g
菜单参考 NXOpen_meilei.men.txt/ }5 R: N8 N. J2 f% b- w
1 C! U$ r& ?5 x" r
DDD.DLL代码任意(当然也可以参考DDD.cpp.txt)吧dll也放startup目录; n9 W' F/ L) F- F- }
启动UG就启动dll的方法源代码下载
4 l) Y6 v( Z3 A
启动UG就启动dll的方法.rar
(3.3 KB, 下载次数: 28)
|
评分
-
查看全部评分
|