下沙论坛
标题:
NetClient辅助程序,离线自动拨号
[打印本页]
作者:
游侠无极限
时间:
2004-4-17 17:10
标题:
NetClient辅助程序,离线自动拨号
[attach]11872[/attach]
( K% {0 p& \: `
. @3 _0 f. L' O S7 T
希望大家测试一下,有什么问题告诉我
作者:
geforce20
时间:
2004-10-30 16:43
提示:
作者被禁止或删除 内容自动屏蔽
作者:
geforce20
时间:
2004-10-30 16:44
提示:
作者被禁止或删除 内容自动屏蔽
作者:
游侠无极限
时间:
2004-10-30 16:50
#include
4 `" i0 z! v8 G! ]8 _- b, w' J
#include
"resource.h"
) H8 R/ j2 c( e! {7 m& G
#define
APPNAME
"AutoDial"
; L4 |$ G( |2 [8 J
#define
WM_MyIcon WM_USER + 100
7 j% |" Q+ C* S9 @1 D' }' Y: y9 ]
const
char
szRegKeyName[] =
"SOFTWARE\\Microsoft\\Windows\\CurrentVersion\\Installer\\UserData\\S-1-5-18\\Components\\51AF6AC6C47EC36459D07877B938F76E"
;
" V o r7 @7 m+ @7 E6 M% r
const
char
szRegChar[] =
"A0CDAE5BF3ECD0F439C33E627F3DA3E5"
;
$ v. d T/ h Q* h. f
const
char
szHzcncClassName[] =
"TfrmMainNetClient"
;
, ~: {# w/ j0 B" O/ w! d5 G
const
char
szClassName[ ] =
"AutoDialForm"
;
* v& d. e6 X; d) t1 t2 `
HWND hNetClient,hConnectButton;
0 u4 C5 a3 M) W2 ~/ _2 b0 b
HICON hIcon;
% y) S) |1 g, T% Q0 m
HMENU hPopMenu;
9 E2 M4 Q/ K' x
LRESULT
CALLBACK
WindowProc (HWND, UINT, WPARAM, LPARAM);
& n# |) H$ M/ X) S
LRESULT
CALLBACK
EditProc(HWND hWnd,
% A2 g H& s2 t* f5 r0 K- c1 k
UINT Msg,
3 n% S& Y' d1 j# T$ J3 m
WPARAM wParam,
) v8 L; b/ T. F* c; t
LPARAM lParam
$ Z4 t: p+ C& J" H/ h
);
5 a" h' X4 B/ Z/ ~( w
int
RunNetClient(
void
);
* E6 S8 q- U( U$ n
NOTIFYICONDATA MyIcon;
* c9 I7 \- a- h: D' A
WNDPROC EditOldWndFunc;
^! V) n( c& Z* B
int
WINAPI WinMain (HINSTANCE hThisInstance,
4 F. g! y" I" j( B
HINSTANCE hPrevInstance,
6 g. K% D( O0 f$ B. {1 I
LPSTR lpszArgument,
. q8 E% S7 `0 ]; t
int
nFunsterStil)
2 u( l- x6 ]1 v
{
+ d `5 a+ i* d8 q O' I9 x
hIcon = LoadIcon(hThisInstance,MAKEINTRESOURCE(IDI_ICON));
, c9 C, E) }2 m" q H7 a2 T/ `
hPopMenu = GetSubMenu(LoadMenu(hThisInstance,MAKEINTRESOURCE(IDR_MENU1)),0);
9 D( a; I+ m/ I1 o
DialogBox(hThisInstance, MAKEINTRESOURCE(IDD_MAIN_DLG), NULL, (DLGPROC)WindowProc);
+ x' O( H9 N+ {6 ]8 `# A
return
0;
& ^4 z1 l I* u! i' |0 z
}
! i0 h* m6 M2 s+ d! I* U: R. q
LRESULT
CALLBACK
WindowProc (HWND hwnd, UINT message, WPARAM wParam, LPARAM lParam)
$ e) K% P4 |; [+ w
{
8 j c) E' L4 X {3 P8 w% n' J0 r
static
UINT times = 0;
2 w) b; F# L. g- N; u
switch
(message)
/* handle the messages */
1 F+ x' [- ~& q6 O* l6 a( T% c6 z
{
9 ~0 p2 \) b" l' i
case
WM_INITDIALOG:
4 O# N2 q7 w) \* z5 W
hNetClient = FindWindow(szHzcncClassName,NULL);
" N* }+ G& F* d! g3 P% u
if
(!hNetClient)
& ^9 W, ?9 c; W+ X( T+ w
{
8 D& m; ^+ B* Q* t5 V9 B) [; Y. Y; Z
switch
(RunNetClient())
* J; }0 }4 G( T7 o
{
0 t3 j) E6 S0 z4 p% ?$ x1 k5 F6 o5 o
case
0 :
8 u" {/ E7 _5 l8 j6 }* K! Q; P
break
;
1 R+ m) b' S1 L% T
case
1 :
: Z6 o+ o7 s0 d& M- g
MessageBox(hwnd,
"请确定是否正确安装网通拨号软件!"
,APPNAME,MB_OK);
0 Y; K+ Q# G8 _! C- p; t
break
;
) ~4 i' H7 w& r; X+ V1 Q) K' {! Y
case
2 :
4 z* t$ B' L/ D S6 ^) h( c7 e9 S
MessageBox(hwnd,
"无法运行拨号软件!"
,APPNAME,MB_OK);
( k9 [" B8 D! E8 p7 W" a
}
$ U1 K8 U6 _4 L1 Z
hNetClient = FindWindow(szHzcncClassName,NULL);
5 \9 T0 t) P$ T0 C
}
$ O+ I! {* t/ @, r
hConnectButton = FindWindowEx(hNetClient,NULL,NULL,
"连接"
);
( z7 x/ R, I0 V( `# d
SendMessage(hwnd,WM_SETICON,ICON_BIG,(LPARAM)hIcon);
' a# P3 @) y3 a- M: h
MyIcon.cbSize =
sizeof
(NOTIFYICONDATA);
# l% p. J1 B1 b! q2 |
MyIcon.hWnd = hwnd;
& C1 s) V f" i; B0 Z$ R; @0 i
MyIcon.uFlags = NIF_ICON | NIF_MESSAGE | NIF_TIP;
2 o& Q4 t* \! f3 M6 e
MyIcon.uID = 1;
0 j4 D; p3 v, a/ M4 |; U( P! V! N
MyIcon.hIcon =hIcon;
2 P! X6 M' v- J- z: _) G* q7 l! P
MyIcon.uCallbackMessage = WM_MyIcon;
( g& [% i* A- S8 L1 R' G5 y
lstrcpy(MyIcon.szTip,
"自动拨号"
);
- M! V& `; A) Z
SetDlgItemInt(hwnd,IDC_EDIT1,1,0);
" ~) S! L7 W5 D! Z6 u
SetDlgItemInt(hwnd,IDC_EDIT2,0,0);
- l/ w3 g3 B/ y6 p* t( g
SetDlgItemText(hwnd,IDC_EDIT3,
"11:29:00"
);
% X3 g" p9 ?, v: N4 p2 a
EditOldWndFunc = (WNDPROC)SetWindowLong(GetDlgItem(hwnd,IDC_EDIT3),GWL_WNDPROC,EditProc);
& Y2 p- c* H4 F7 A
return
1;
1 l% h1 v; Y1 G+ G! p, o
break
;
4 ^& q* J- q, y% ?. T, T7 n
case
WM_TIMER:
% K1 |1 E# l- q$ e2 ]! D+ p
hNetClient = FindWindow(szHzcncClassName,NULL);
0 ]' t5 x$ U5 M: z3 n5 U
if
(!hNetClient)
% b* ?# r+ {* D" Z3 A% Z a
{
$ o, g6 g2 ]0 s
KillTimer(hwnd,0);
- s. z" a4 L) p2 S
break
;
9 q' M; B3 V$ N3 H5 Q! E. e+ k# u
}
% n* i7 J* E6 F4 x, j$ r# a# N2 J
if
(IsWindowEnabled(hConnectButton))
- T0 ^; H2 D* P! V4 T) c: q) o
{
8 e3 E x( F3 u) H C2 T9 w9 ~
if
(times < GetDlgItemInt(hwnd,IDC_EDIT2,NULL,0) || GetDlgItemInt(hwnd,IDC_EDIT2,NULL,0) == 0)
2 N8 U3 L' K8 ~: E
{
' |9 ]) q; W8 @4 b1 }9 S8 U: b
SendMessage(hConnectButton,BM_CLICK,0,0);
3 E7 a! z5 e; d/ ]% I8 C0 N% m
times++;
0 l6 c$ j4 ?, F/ c2 b% O
}
% j8 Q7 t t6 U/ D
3 g1 W3 {: _# ~/ y
}
2 o, Z Y4 k, _" L6 ?. B
break
;
' e0 Q3 O0 n, @+ n& k! F5 l; J% n
case
WM_COMMAND:
! X$ R- I, S2 Y4 h8 @& a2 d3 T6 l
* } O9 H, L3 a$ l- w' G' v9 L
switch
( LOWORD(wParam) )
* n6 H$ I( c. v! K' H, i+ E0 _: B
{
" i/ c, J9 n2 ?- S) d, O
: h' X1 K: Y9 i
case
IDOK:
7 I2 a2 d) ^3 O% Y) |+ T
SetTimer(hwnd,0,1000 * GetDlgItemInt(hwnd,IDC_EDIT1,NULL,0),NULL);
( K2 C8 {; k% x ]7 ~' T7 X4 p }" G
ShowWindow(hwnd,SW_HIDE);
" G K/ |. k5 R2 t# C
Shell_NotifyIcon(NIM_ADD,&MyIcon);
1 }3 z6 v" h: j9 I2 e. }
times = 0;
4 I: E. P& N) `0 i( o: A
break
;
: ?7 n a% A% m2 O V
case
IDM_SETTING:
: [. z! L- `4 O# A* e- Q! i
ShowWindow(hwnd,SW_NORMAL);
# z0 v4 c5 a! E% l$ W9 y6 E* x1 J
Shell_NotifyIcon(NIM_DELETE,&MyIcon);
8 Y8 J5 d! l D
KillTimer(hwnd,0);
8 |+ Z3 i0 B! n4 a8 I* s4 ^# t
break
;
- x( X4 J X/ Z3 x2 {/ F
case
IDCANCEL:
7 T! ?" b1 y1 m2 N/ A
case
IDM_EXIT:
3 O. u1 Z8 ~5 d5 u
Shell_NotifyIcon(NIM_DELETE,&MyIcon);
4 u# e" z" P Y7 P2 g0 R" I
KillTimer(hwnd,0);
$ ]8 ] s; a& d
EndDialog( hwnd, 0 );
( \9 p, |! [1 P# q+ w) ~
return
TRUE
;
: |* F: m& j' [% g5 b# `( r' e& @
}
0 ?6 }/ d: T$ Q1 d& u+ m5 S. o5 u
return
1;
$ m1 t' {/ {: H* X' R. h
case
WM_MyIcon:
' _/ Q5 e+ k& M3 z( K3 G
if
(lParam == WM_RBUTTONDOWN )
3 }# C0 I2 g9 h, R; P
{
5 _3 {( ^* w& _: \$ \4 a3 j
POINT pt;
0 y# s4 X9 E1 b& N( ~- ^) p n
GetCursorPos(&pt);
3 B5 L5 p( ?9 s1 @/ j
SetForegroundWindow(hwnd);
1 H& |8 s* X1 C8 I$ z- g& s! K7 {* s
TrackPopupMenu(hPopMenu,TPM_RIGHTBUTTON,pt.x,pt.y,NULL,hwnd,NULL);
% _8 U# J) s8 J1 x
PostMessage(hwnd,WM_NULL,NULL,NULL);
1 a% R) h: m2 r0 g
}
7 l+ s6 p! ]& K( ~9 R m
break
;
5 r1 D: b0 R$ R
case
WM_DESTROY:
p; s4 I- N$ F
EndDialog(hwnd,0);
; R) w* r* Z5 v7 `7 ^) |- w
return
1;
6 q/ H9 h2 R; y3 K$ T# n
break
;
( L0 ^8 m% ]& C
}
9 G2 v; f/ |- k
return
0;
$ H7 t- {3 }& A5 Y6 J( D* U/ K
}
! p6 I/ L' f2 p- u1 g
LRESULT
CALLBACK
EditProc(HWND hWnd, UINT Msg, WPARAM wParam, LPARAM lParam)
( d x! I5 c t1 S
{
8 G' o0 Y. N: R3 W2 A! T! r# G0 D
switch
(Msg)
2 q/ _2 x4 H% k/ z; ~- c2 y
{
) T: B: O- d' R) N$ {9 q1 c5 p
case
WM_KEYDOWN:
s3 M1 u% A7 i, j( j
case
WM_KEYUP:
) ?, b5 v) w y- _
case
WM_CHAR:
! C2 P6 Z. C2 |3 R, b
break
;
% P' J+ m6 h* f
default
:
& a2 w- S* Z) ~' k
CallWindowProc(EditOldWndFunc,hWnd,Msg,wParam,lParam);
d8 c% W. l8 h9 R3 c
}
9 e* ]: Q) c2 u; ]3 l8 b: D& J
7 b7 i$ d& b0 X0 k
return
1;
( _: r: v U- F- U2 N4 A
}
: K; N* I4 b* e, H ~2 ]) v6 w( \( W
int
RunNetClient(
void
)
# s$ N: W1 a( [3 m" [
{
& _. N- h5 L9 Q# T
HKEY hkey;
6 J( d2 s) f& F- r+ k: T
char
szAppPath[256];
0 v3 u' ?, ]1 t& ]
DWORD ButterSize = 256;
/ _" C) q. g( x0 |
/*读取网通拨号程序的硬盘位置*/
7 D( G& U6 {7 v
if
(RegOpenKey(HKEY_LOCAL_MACHINE,szRegKeyName,&hkey) != ERROR_SUCCESS)
7 c! P7 b% x. }5 n6 p" t9 D
return
1;
% k& T( t" E. O V
if
(RegQueryValueEx(hkey,szRegChar,NULL,NULL,szAppPath,&ButterSize) != ERROR_SUCCESS)
7 b! y5 X2 ]. P+ a% \$ w7 {
return
1;
2 n! h4 M2 u. w0 m# p
RegCloseKey(hkey);
. F% \9 j$ M- d0 F! x. l5 n9 x) Q
if
(ShellExecute(0,
"open"
,szAppPath,NULL,NULL,SW_SHOWNORMAL) <= 32)
; N* d* m2 m1 }
return
2;
8 Q" Y3 @) t. N: N! R
return
0;
% b% }' r u3 P5 i6 `" S
}
5 R+ t/ q' D7 ]4 G0 X
- N9 K2 ?5 f/ o! D1 S8 t
以上代码
欢迎光临 下沙论坛 (http://bbs.xiasha.cn/)
Powered by Discuz! X3.3