¹C«È:  µù¥U | µn¿ý | ·j¯Á | À°§U | VIPÃÙ§U¥»¯¸ | ¥ZµnÃÙ§U¼s§i | ³]¬°­º­¶ | ¥[¤J¦¬Âà | ÁcÅ餤¤å

 

your gf Ú»­ø¨ì¤ù ¥î¼äóa ¤£¯à³X°ÝSOPCAST­¶­± ¶Â¦â­I´º ¤ÑÀs¤K³¡·tª÷Ä_ ¸Ý¥Ponline©xºô ¤p¤t¬ü ½u¤WH°Êµe §K¶O§Y®É³ø»ù ªá¼Ë¤Ö¦~¤Ö¤k¢ê¢ü ¤Ó»×¥ß§Ó¶Ç ¤H¶¡¤¿¾¹º©µe Hebe·s¾v«¬ Media calssic I miss you³¯¬f¦t seed H LostPlanet¯}¸Ñ ¤Ñ°ó¨pªA³Ü¤ôµ{¦¡ ¤Ñ¥~2 online ¯]®ü®á®³¤p©j¥þ®M

 




·j¯Á¿ï¶µ ¯Á¤Þ¨t²Î¤u¨ãµ¡
 
¼ÐÃD: Win32·J½s±Ðµ{¤Q¤@
http://manyway.net ÃÙ§Uºô¯¸¸ü¤J¤¤...
chan0006
ºaÅA²z¨Æ
Rank: 7Rank: 7Rank: 7Rank: 7Rank: 7Rank: 7Rank: 7
¹q¸£¦a±a°Ï¥D

ºaÅA¾±³¹ ¥Ø«e¨S¦³¾±³¹

UID¡G 460360

©Ê§O¡G ¨k

ºëµØ¡G 3 ½g

¿n¤À¡G 2593 ÂI

©«¤l¡G 1863 ½g

  ¤j ¤¤ ¤p
µoªí©ó 2006-11-26 12:01  ¸ê®Æ  ­Ó¤HªÅ¶¡  ¥D­¶ µu®ø®§  ¥[¬°¦n¤Í  ²K¥[ chan0006 ¬°MSN¦n¤Í ³q¹LMSN©M chan0006 ¥æ½Í QQ

Win32·J½s±Ðµ{¤Q¤@ ±z¬O²Ä 345­ÓÂsÄýªÌ

·§­z ¶iµ{±±¨î²³æªº»¡¬Û·í©ó¦b¤@­Óµ{¦¡¤¤°õ¦æ¥t¤@­Óµ{¦¡¡A§A¥i¥H§â¥¦·Q¹³¦¨¦b Dos ¤U¥Î int 21h/4bh ¥\¯à¨Ó°õ¦æ¥t¥~¤@­Óµ{¦¡¡A¦pªG³æ±q°õ¦æ¥t¤@­Óµ{¦¡ªº¥Øªº¨ÓÁ¿¡A¦b Windows ¤¤¦³¤£¤Ö¤èªk¡A¦p¨Ï¥Î ShellExecute µ¥¡A¦ý³o¨Ç Api ¶È¶È¬O¡§°õ¦æ¡¨¦Ó¤w¡A¶iµ{±±¨îªº·N¸q¦b©ó¥i¥H³Ð«Ø¤@­Ó¶iµ{¡A¨Ã¥i¥H³q¹L¶iµ{±±¨î½Xµ²§ô¶iµ{¡A¦P¼Ë§A¤]¥i¥H³q¹L¶iµ{±±¨î½X¨Ó¸òÂܵ{¦¡¡AÁÙ¥i¥H¥Î ReadProcessMemory ©M WriteProcessMemory ¨ÓŪ¼g¤l¶iµ{ªº°O¾ÐÅéªÅ¶¡¡C
¶iµ{±±¨î­n¨Ï¥Îªº¬ÛÃö API ¦³¤U­±³o¨Ç¡G
³Ð«Ø¶iµ{ªº¨ç¼Æ¬°CreateProcess¡A¸Ó¨ç¼Æ¤ñ¸û½ÆÂø¡A¦@¦³¤Q­Ó°Ñ¼Æ¡A¦ý¦³­Ó¦n®ø®§¬O¨Ï¥Î®É¤j³¡¤À¥i¥H¥Î NULL¡C
BOOL CreateProcess(
LPCTSTR lpApplicationName, // °õ¦æµ{¦¡ÀɮצW
LPTSTR lpCommandLine, // °Ñ¼Æ¦æ
LPSECURITY_ATTRIBUTES lpProcessAttributes, // ¶iµ{¦w¥þ°Ñ¼Æ
LPSECURITY_ATTRIBUTES lpThreadAttributes, // ½uµ{¦w¥þ°Ñ¼Æ
BOOL bInheritHandles, // Ä~©Ó¼Ð°O
DWORD dwCreationFlags, // ³Ð«Ø¼Ð°O
LPVOID lpEnvironment, // Àô¹ÒÅܼÆ
LPCTSTR lpCurrentDirectory, // ¹B¦æ¸Ó¤l¶iµ{ªºªì©l¥Ø¿ý
LPSTARTUPINFO lpStartupInfo, // ³Ð«Ø¸Ó¤l¶iµ{ªº¬ÛÃö°Ñ¼Æ
LPPROCESS_INFORMATION lpProcessInformation // ³Ð«Ø«á¥Î©ó³Q³Ð«Ø¤l¶iµ{ªº¸ê°T
);

¦U­Ó°Ñ¼Æªº»¡©ú¦p¤U¡G
lpApplicationName¡G¬°°õ¦æµ{¦¡ªºÀɮצW¡A§A¤]¥i¥H§â°õ¦æÀɮצW¥]¬A¦b¤U¤@­Ó°Ñ¼Æ lpCommandLine ¤¤¡AµM«á§â¸Ó°Ñ¼Æ¸m¬°NULL¡C
lpCommandLine¡G¬°°Ñ¼Æ¦æ¡A¦pªGµL°Ñ¼Æ¥i¥H¬°NULL¡A¦b¦³°Ñ¼Æ¶Ç»¼µ¹¶iµ{®É¥i¥H¦p¤U³]¸m¡GlpApplicationName=ÀɮצW¡FlpCommandLine=°Ñ¼Æ¡A©ÎªÌ lpApplicationName=NULL¡FlpCommandLine=ÀɮצW + °Ñ¼Æ¡C
lpProcessAttributes¡AlpThreadAttributes¡G¤À§O´y­z¤F³Ð«Øªº¶iµ{©M½uµ{¦w¥þÄݩʡA¦pªG¨Ï¥ÎNULLªí¥Ü¨Ï¥ÎÀq»{ªº¦w¥þ´y­z¡C
bInheritHandles¡Gªí¥Ü·í«e¶iµ{¤¤ªº¥´¶}ªº±±¨î½X¬O§_¯à°÷³Q³Ð«Øªº¤l¶iµ{©ÒÄ~©Ó¡C
dwCreationFlags¡Gªí¥Ü³Ð«Ø¼Ð°O¡A³q¹L¸Ó¼Ð°O¥i¥H³]¸m¶iµ{ªº³Ð«Øª¬ºA©MÀu¥ý¶¶§Ç§O¡C±`¥Îªº¦³¤U­±ªº¼Ð°O¡G
CREATE_NEW_CONSOLE¡G¬°¤l¶iµ{³Ð«Ø¤@­Ó·sªº±±¨î»O¡C
CREATE_SUSPENDED¡G¤l¶iµ{¦b³Ð«Ø®É¬°±¾°_ª¬ºA¡C¦pªG«ü©w¤F³o­Ó°Ñ¼Æ¡A¨º»ò°õ¦æ CreateProcess «á¶iµ{¥u¬O³Q¸Ë¤J°O¾ÐÅé¡A¦ý¤£¬O°¨¤W¶}©l°õ¦æ¡A¦Ó¬O¥²¶·µ¥¥Dµ{§Ç½Õ¥Î ResumeThread «á¤~Ä~Äò°õ¦æ¡C
HIGH_PRIORITY_CLASS/NORMAL_PRIORITY_CLASS¡G°ª/´¶³qÀu¥ý¶¶§Ç§O¡C
lpEnvironment¡Gªí¥Ü¤l¶iµ{©Ò¨Ï¥ÎªºÀô¹ÒÅܼơA¦pªG¬°NULL¡A«hªí¥Ü»P·í«e¶iµ{¨Ï¥Î¬Û¦PªºÀô¹ÒÅܼơC
lpCurrentDirectory¡Gªí¥Ü¤l¶iµ{¹B¦æªºªì©l¥Ø¿ý¡C
lpStartupInfo¡GSTARTUPINFO µ²ºc¡A¥Î©ó¦b³Ð«Ø¤l¶iµ{®É³]¸m¦UºØÄݩʡC
lpProcessInformation¡GPROCESS_INFORMATION µ²ºc¡A¥Î¨Ó¦b¶iµ{³Ð«Ø«á±µ¦¬¬ÛÃö¸ê°T¡A¸Óµ²ºc¥Ñ¨t²Î¶ñ¼g¡C
½Õ¥Î CreateProcess ¨ç¼Æ¦³¤T­Ó°Ñ¼Æ¬O¥²»Ýªº¡A¤@¦b lpApplicationName ©Î lpCommandLine «ü©wÀɮצW¡A¤G¬O lpStartupInfo µ²ºc¡A¤T¬O PROCESS_INFORMATION µ²ºc¡A¦]¬° PROCESS_INFORMATION µ²ºcªð¦^¤F¶iµ{«Ø¥ß«áªº±±¨î½X¡A¥H«áªº¤@¤Á¾Þ§@±N­n¥Î¨ì³o¨Çªð¦^ªº±±¨î½X¡A¥¦¬O¥Ñ¨t²Î¶ñ¼gªº¡Aµ²ºc»¡©ú¦p¤U¡G

typedef struct _PROCESS_INFORMATION {
HANDLE hProcess; //¶iµ{±±¨î½X
HANDLE hThread; //¶iµ{ªº¥D½uµ{±±¨î½X
DWORD dwProcessId; //¶iµ{ID
DWORD dwThreadId; //¶iµ{ªº¥D½uµ{ID
} PROCESS_INFORMATION;

¥t¥~ÁÙ¦³¤@­ÓÃöÁ䪺µ²ºc STARTUPINFO¡A¸Óµ²ºc©w¸q¦p¤U¡G
typedef struct STARTUPINFO {
DWORD cb; //µ²ºcªø«×
LPTSTR lpReserved; //«O¯d
LPTSTR lpDesktop; //«O¯d
LPTSTR lpTitle; //¦pªG¬°±±¨î»O¶iµ{«h¬°Åã¥Üªº¼ÐÃD
DWORD dwX; //µ¡¤f¦ì¸m
DWORD dwY; //µ¡¤f¦ì¸m
DWORD dwXSize; //µ¡¤f¤j¤p
DWORD dwYSize; //µ¡¤f¤j¤p
DWORD dwXCountChars; //±±¨î»Oµøµ¡¦r¤¸¸¹¼e«×
DWORD dwYCountChars; //±±¨î»Oµøµ¡¦r¤¸¸¹°ª«×
DWORD dwFillAttribute; //±±¨î»Oµøµ¡¶ñ¥R¼Ò¦¡
DWORD dwFlags; //³Ð«Ø¼Ð°O
WORD wShowWindow; //µøµ¡Åã¥Ü¼Ð°O¡A¦p¦PShowWindow¤¤ªº¼Ð°O
WORD cbReserved2; //
LPBYTE lpReserved2; //
HANDLE hStdInput; //¼Ð·Ç¿é¤J±±¨î½X
HANDLE hStdOutput; //¼Ð·Ç¿é¥X±±¨î½X
HANDLE hStdError; //¼Ð·Ç¿ù»~±±¨î½X
} STARTUPINFO, *LPSTARTUPINFO;

µ²ºc¤¤ dwFlags «ü©w¤F¨ä¥Lªº¤@¨ÇÄæ¦ì¬O§_¦³®Ä¡A¦p¡GdwFlags¥]§t STARTF_USESIZE ªí¥ÜdwXSize©MdwYSize¦³®Ä¡A¥]§tSTARTF_USEPOSITIONªí¥ÜdwX©MdwY¦³®Ä¡Aµ¥µ¥¡C¦pªG¤£¬O¦³¯S®íªº­n¨D¡A§Ú­Ì¤£¥Î¦Û¤v¥h¶ñ¼g³o­Óµ²ºc¡A¥u»Ý¥Î GetStartupInfo Åý Windows ¬°§A¶ñ¼g¦n¤F¡A³o¼Ë¡A«Ø¥ß¤@­Ó¶iµ{ªº»y¥y´N¬O¡G
...
stStartUp STARTUPINFO stProcInfo PROCESS_INFORMATION <?>
stProcInfo PROCESS_INFORMATION <?>
...

invoke GetStartupInfo,addr stStartUp
invoke CreateProcess,NULL,addr szFileName,NULL,NULL,NULL,NORMAL_PRIORITY_CLASS,NULL,NULL,offset stStartUp,offset stProcInfo
...

¦pªG¦¨¥\ªº¸Ü¡Aeax ±Nªð¦^«D¹s­È¡Aª`·Nªð¦^¦b PROCESS_INFORMATION µ²ºc¤¤ªº hProcess¡A¥H«á«Ü¦hªº¾Þ§@³£­n¥Î¨ì¥¦¡C
±j¨îµ²§ô¤@­Ó¶iµ{ªº API ¬° TerminateProcess

BOOL TerminateProcess(
HANDLE hProcess, // ¶iµ{±±¨î½X
UINT uExitCode // °h¥X¥N½X
);

§A¥i¥H¨Ï¥Î»y¥y invoke TerminateProcess,structProcInfo.hProcess,0 ¨Óµ²§ô¶iµ{¡A­nª`·Nªº¬O¦pªG¥i¯àªº¸Ü¡A¾¨¶q¤£­n¦bµ{¦¡¤¤±j¨îµ²§ô§Oªº¶iµ{¡A¦]¬°¨Ï¥Î TerminateProcess µ²§ôªº¶iµ{¡A¥¦¸Ë¸üªº dll ¤£¯à³Q¥¿½T¨ø¸ü¡C³o¼Ë¥i¯à·|¤Þ°_¨t²Î¸ê·½ªºµL®Ä¦û¥Î¡C³Ì¦nªº¿ìªk¦b¶iµ{¤¤¦Û¤v¨Ï¥Î ExitProcess °h¥X¡C
¬d¸ß¤@­Ó¶iµ{ª¬ºAªº API ¬° GetExitCodeProcess¡C
BOOL GetExitCodeProcess(
HANDLE hProcess, // handle to the process
LPDWORD lpExitCode // address to receive termination status
);

¦pªG¶iµ{©|¥¼°h¥X¡A¨ç¼Æ±N·|ªð¦^STILL_ACTIVE¡C³o­Ó API ¬O°¨¤Wªð¦^ªº¡C
µ¥«Ý¶iµ{°õ¦æ¥i¥H¥Î WaitForSingleObject
³o­Ó API ¨Ã¤£¬O³æ¥Î©ó¶iµ{ªºµ¥«Ý¡A¨ä¥LÁÙ¥i¥H¥Î½u¤Wµ{µ¥¾Þ§@¡A¦ý§Ú­Ì¤@¯ë¥Î¥¦¨Óµ¥«Ý¶iµ{ªº°õ¦æ¡A¥¦ªº¥Ó©ú¬O¡G
DWORD WaitForSingleObject(
HANDLE hHandle, // handle of object to wait for
DWORD dwMilliseconds // time-out interval in milliseconds
);

¦pªG§Ú­Ì­nµ¥«Ý¶iµ{°õ¦æ 1 ¬íÄÁ¡A¥i¥H invoke WaitForSingleObject,stProcInfo.hProcess,1000 ¦pªG­nµ¥¨ì¶iµ{µ²§ô¡A¥i¥H¥Î WaitForSingleObject,stProcInfo.hProcess,INFINITE ¡A°Ñ¼Æ 2 ¤¤ªº INFINITE ¦b Windows.inc ¤¤¦³©w¸q¡A·N«ä¬OµL½aµ¥«Ý¡C
³Ì«á¡A·í¤£¦A¨Ï¥Î¶iµ{±±¨î½Xªº®É­Ô¡A¤£­n§Ñ¤F¨Ï¥Î CloseHandle Ãö³¬ hProcess ©M hThread¡A§_«h·|®ö¶O¨t²Î±±¨î½Xªº¸ê·½¡C
®Ú·½µ{¦¡ - ·J½s­ì©lÀÉ®×

.386
.model flat, stdcall
option casemap :none   ; case sensitive
;>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>
; Include ¼Æ¾Ú
;>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>
include  windows.inc
include  user32.inc
include  kernel32.inc
include  comctl32.inc
include  comdlg32.inc
include  gdi32.inc

includelib user32.lib
includelib kernel32.lib
includelib comctl32.lib
includelib comdlg32.lib
includelib gdi32.lib
;>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>
; Equ ¼Æ¾Ú
;>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>
DLG_MAIN equ 3000
;>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>
ID_BROWSE equ 3001
ID_RUN  equ 3002
ID_EXIT  equ 3003
ID_TEXT  equ 3004

F_RUNNING equ 0001h ;¶iµ{¦b¹B¦æ¤¤
;>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>
; ¸ê®Æ¬q
;>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>
  .data?

stStartUp STARTUPINFO  <?>
stProcInfo PROCESS_INFORMATION <?>
stOpenFileName OPENFILENAME <?>

hRunThread dd ?
hInstance dd ?
hWinMain dd ?
hIcon  dd ?
szBuffer db 512 dup (?)

dwFlag  dd ?
;>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>

  .data
szExcute db '°õ¦æ(&E)',0  ;«ö¶s¤å¦r
szKill  db '²×¤î(&E)',0
szExcuteError db '±Ò°ÊÀ³¥Îµ{¦¡¿ù»~¡I',0

szTitleOpen db "Open executable file...",0
szExt  db '*.exe',0
szFilter db 'Excutable Files',0,'*.exe;*.com',0
  db 0

;>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>
; ¥N½X¬q
;>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>
  .code

if  DEBUG
  include  Debug.asm
endif
include  Win.asm

;********************************************************************
; °õ¦æµ{¦¡¥Îªº½uµ{
; 1. ¥Î CreateProcess «Ø¥ß¶iµ{
; 2. ¥Î WaitForSingleOject µ¥«Ý¶iµ{µ²§ô
;********************************************************************
_RunThread proc uses ebx ecx edx esi edi,\
  dwParamWORD

  or dwFlag,F_RUNNING
;********************************************************************
; ¨ú®ø¡§°h¥X¡¨«ö¶s¨Ã§â¡§°õ¦æ¡¨«ö¶s§ï¬°¡§¤¤¤î¡¨
;********************************************************************
  invoke GetDlgItem,hWinMain,ID_EXIT
  invoke EnableWindow,eax,FALSE
  invoke SendDlgItemMessage,hWinMain,ID_RUN,WM_SETTEXT,0,offset szKill

;********************************************************************
; °õ¦æÀÉ¡A¦pªG¦¨¥\«hµ¥«Ýµ{¦¡µ²§ô
;********************************************************************
  invoke GetStartupInfo,addr stStartUp
  invoke CreateProcess,NULL,addr szBuffer,NULL,NULL,\
   NULL,NORMAL_PRIORITY_CLASS,NULL,NULL,offset stStartUp,offset stProcInfo
  .if eax != 0
   invoke WaitForSingleObject,stProcInfo.hProcess,INFINITE
   invoke CloseHandle,stProcInfo.hProcess
   invoke CloseHandle,stProcInfo.hThread
  .else
   invoke MessageBox,hWinMain,addr szExcuteError,NULL,MB_OK or MB_ICONERROR
  .endif
;********************************************************************
; Enable ¡§°h¥X¡¨«ö¶s¨Ã§â¡§¤¤¤î¡¨«ö¶s§ï¬°¡§°õ¦æ¡¨
;********************************************************************
  invoke GetDlgItem,hWinMain,ID_EXIT
  invoke EnableWindow,eax,TRUE
  invoke SendDlgItemMessage,hWinMain,ID_RUN,WM_SETTEXT,0,offset szExcute
  and dwFlag,not F_RUNNING
  ret

_RunThread endp
;********************************************************************
; µøµ¡µ{¦¡
;********************************************************************
DialogMainProc proc uses ebx edi esi, \
  hWndWORD,wMsgWORD,wParam:DWORD,lParam:DWORD

  mov eax,wMsg
;********************************************************************
  .if eax == WM_INITDIALOG
   mov eax,hWnd
   mov hWinMain,eax
   call _Init
;********************************************************************
  .elseif eax == WM_CLOSE
   invoke EndDialog,hWinMain,NULL
;********************************************************************
  .elseif eax == WM_COMMAND
   mov eax,wParam
   .if ax == ID_BROWSE
    call _BrowseFile
    call _CheckText
   .elseif ax == ID_TEXT
    invoke GetDlgItemText,hWinMain,ID_TEXT,addr szBuffer,512
    call _CheckText
   .elseif ax == ID_RUN
;********************************************************************
; ¦pªG¨S¦³¦b°õ¦æ¤¤(dwFlag ¨S¦³¸m¦ì) «h«Ø¥ß½uµ{¡A½u¤Wµ{¤¤°õ¦æµ{¦¡
; ¦pªG¤w¸g¦b°õ¦æ¤¤¡A«h¥Î TerminateProcess ²×¤î°õ¦æ
;********************************************************************
    test dwFlag,F_RUNNING
    .if ZERO?
     invoke CreateThread,NULL,NULL,offset _RunThread,\
     NULL,NULL,offset hRunThread
    .else
     invoke TerminateProcess,stProcInfo.hProcess,-1
    .endif
   .elseif ax == ID_EXIT
    invoke EndDialog,hWinMain,NULL
   .endif
  .else
;********************************************************************
; ª`·N¡G¹ï¸Ü¤è¶ôªº®ø®§³B²z«á¡A­nªð¦^ TRUE,¹ï¨S¦³³B²zªº®ø®§
; ­nªð¦^ FALSE
;********************************************************************
   mov eax,FALSE
   ret
  .endif
  mov eax,TRUE
  ret

DialogMainProc endp
;********************************************************************
; µ{¦¡¤J¤f
;********************************************************************
start:
  invoke InitCommonControls
  invoke GetModuleHandle,NULL
  mov hInstance,eax
  invoke DialogBoxParam,hInstance,DLG_MAIN,NULL,offset DialogMainProc,0
  invoke ExitProcess,NULL
;********************************************************************
_Init  proc

  invoke _CenterWindow,hWinMain
  invoke SendDlgItemMessage,hWinMain,ID_TEXT,EM_LIMITTEXT,512,NULL
  invoke GetDlgItem,hWinMain,ID_RUN
  invoke EnableWindow,eax,FALSE

  ret
_Init  endp
;********************************************************************
; ®Ú¾Ú text control ¤¤¦³µL¦r¤¸¨M©w¬O§_±N¡§°õ¦æ¡¨«ö¶s Disable ±¼
;********************************************************************
_CheckText proc

  invoke GetDlgItemText,hWinMain,ID_TEXT,addr szBuffer,512
  invoke lstrlen,addr szBuffer
  .if eax != 0 || (dwFlag & F_RUNNING)
   invoke GetDlgItem,hWinMain,ID_RUN
   invoke EnableWindow,eax,TRUE
  .else
   invoke GetDlgItem,hWinMain,ID_RUN
   invoke EnableWindow,eax,FALSE
  .endif
  ret

_CheckText endp
;********************************************************************
_BrowseFile proc

  mov stOpenFileName.Flags,OFN_PATHMUSTEXIST or OFN_FILEMUSTEXIST
  mov stOpenFileName.lStructSize,SIZEOF stOpenFileName
  mov eax,hWinMain
  mov stOpenFileName.hwndOwner,eax
  mov stOpenFileName.lpstrFilter,offset szFilter ;°ÆÀɦW
  mov stOpenFileName.lpstrFile,offset szBuffer ;ÀɮצW½w½Ä
  mov stOpenFileName.nMaxFile,512   ;ÀɮצW½w½Äªø«×
  mov stOpenFileName.lpstrInitialDir,0
  mov stOpenFileName.lpstrTitle,offset szTitleOpen
  mov stOpenFileName.lpstrDefExt,offset szExt
  invoke GetOpenFileName,offset stOpenFileName
  .if eax == FALSE
   ret
  .endif
  invoke SetDlgItemText,hWinMain,ID_TEXT,addr szBuffer
  ret

_BrowseFile endp
;********************************************************************
  end start


µ{¦¡ªº¤ÀªR©M­nÂI
    ¥»µ{¦¡¦b¨Ï¥Î½Õ¥Î GetOpenFileName ©ÎªÌ¦Û¤v¦b¤å¥»®Ø¤¤¿é¤J°õ¦æÀɮצW¡AµM«á³q¹L CreateProcess «Ø¥ß¶iµ{¡A³Ì«á¥Î WaitForSingleObject µ¥«Ý¶iµ{µ²§ô¡A¦pªG¦b¹ï¸Ü¤è¶ôªº³B²z¹Lµ{¤¤µ¥«Ý·|¾É­Pµ{¦¡¦b¶iµ{ªð¦^«eµLªk¦^À³¡A©Ò¥Hµ{¦¡¤¤¥Î CreateThread «Ø¥ß¤@­Ó½uµ{¨Ó¹ê²{³o­Ó¹Lµ{¡A·í¤l¹Lµ{ªð¦^ªº®É­Ô¡A½uµ{µ²§ô¡CdwFlag ¤¤ªº 0 ¦ì¤¸§@¬°¼Ð»x¦ì¤¸¡Aªí¥Ü¬O§_¤l¹Lµ{¦b¹B¦æ¤¤¡A¦pªG³o¤@¦ì¸m 1 ªº¸Ü¡A«ö¤U¡§²×¤î¡¨«ö¶s·|¥Î TerminateProcess ¨Ó±j¨î²×¤î¤l¶iµ{¡C





〓¤¤°ê¶Â«ÈÁp·ù¡]CHU¡^〓«e®Ö¤ß¦¨­û¡A²{¬°ºaÅA·|­û
〓¤¤°ê¶Â«ÈÁp·ù¡]CHU¡^〓ºôµ¸¹q¤lÂø»x¡m¯x°}¡n½s¿è
­·°ó§Þ³N¤u§@«Ç
³»³¡

 



¥»¯¸³]³Æ¾¹§÷¥Ñ Many Way (HK) Limited ÃÙ§U´£¨Ñ
·í«e®É°Ï GMT+8, ²{¦b®É¶¡¬O 2008-9-8 11:07

Advertisting Agency

Audit and Analytics

Partner Companies

Powered by Discuz! 5.5.0¢x0.080106 (s), 7 queries, Copyright © 2008 HK-PUB.COM All Rights Reserved. ¥»¯¸Án©ú - ¼s§i¬d¸ß - ²M°£ Cookies - Ápô§Ú­Ì - ¤j²³½×¾Â - Archiver - WAP