| ²é¿´: 419 | »Ø¸´: 0 | |||
zyj8119ľ³æ (ÖøÃûдÊÖ)
|
[½»Á÷]
¡¾×ªÌû¡¿Visual BasicÄÚǶ»ã±àÓïÑÔ½â¾ö·½°¸
|
|
VB¼òµ¥Ò×Ó㬵«¹¦ÄÜÓÐʱºòÊÜÏÞÖÆ¡£VC¡¢Delphi¶¼¿ÉÒÔÖ±½ÓÔÚ³ÌÐòÖÐд»ã±à´úÂ룬¿ÉÄÕµÄÊÇ£¬VB²»ÐС£ÎÒÔÚÍøÉÏÒ²¿´¹ýÐí¶àÓйØÓÚVBǶÈë»ã±àµÄ·½·¨£¬²»¹ýÓÐЩ·½·¨£¬¹ýÓÚ¸´ÔÓ£¬¶øÇÒҲûÏàÓ¦µÄ½éÉÜ¡£ÎÒÕâÀïÌṩһÖÖ·½·¨£¬Ò²Ðí´ó¼ÒÒÔºó¿ÉÄÜÓÐÓã¡ »ù±¾Ë¼Â·£º»ã±à´úÂ룬¿ÉÒÔ´æÔÚÒ»¸öbyteÀàÐ͵ÄÊý×éÖУ¬È»ºóͨ¹ýijÖÖÊֶΣ¬°Ñϵͳ¿ØÖÆÈ¨£¬×ª½»¸øÕâ¶Î»ã±à´úÂ룬ÎÒÃǵĻã±à´úÂë¶Î£¬¾ÍµÃµ½ÁËÖ´ÐС£µ«ÈçºÎÈÃÕâ¶Î»ã±à´úÂ룬»ñµÃϵͳµÄ¿ØÖÆÈ¨ÏÞÄØ£¿²é²éWIN APIÊֲᣬ¾Í¿ÉÒÔÖªµÀÓÐCallWindowProcÕâ¸öº¯Êý¡£Õâ¸öº¯Êý±¾ÊÇÓÃÓÚµ÷ÓÃÓû§×Ô¼º¶¨ÒåµÄ´°¿Ú¹ý³ÌµÄ£¬ÆäÔÐÎÈçÏ£º Function CallWindowProc Lib "user32" Alias "CallWindowProcA" (ByVal lpPrevWndFunc As Long, ByVal hWnd As Long, ByVal Msg As Long, ByVal wParam As Long, ByVal lParam As Long) As Long ¡¡¡¡ËüÓÐ5¸ö²ÎÊý¡£lpPrevWnFuncÊÇÒ»¸ölongÐÍ£¬µÈÓÚÓû§×Ô¼º´°¿Ú¹ý³ÌµÄµØÖ·£¬ÆäÓà3¸ö¶¼ÊÇ´°¿Ú¹ý³ÌËù±ØÐëµÄ²ÎÊý£¬Ïê¼ûMSDN¡£ ¡¡¡¡ÎÒÃÇÖ»ÐèÒª¹ØÐĵÚÒ»¸ö²ÎÊý£ºlpPrevWndFunc£¬´°¿Ú¹ý³ÌµØÖ·¡£Èç¹û£¬ÎÒÃǰÑ×Ô¼ºµÄ»ã±à´úÂëµØÖ·£¬´«½øÈ¥»áÔõôÑù£¿µ±È»£¬CallWindowProc¾Í°ÑÕâ¸öµØÖ·£¬µ±³É´°¿Ú¹ý³ÌµØÖ·£¬È»ºó£¬µ÷ÓÃÕâ¶Î»ã±à´úÂëÁË¡£ÎÒÃǵĻã±à´úÂë±ãµÃµ½Ö´¡£¡£ ¡¡¡¡µ±È»£¬Ò²µÃ×°Ãþ×öÑùµÄ°É£¬½«ÆäÓà4¸ö²ÎÊý´«½øÈ¥£¬¾Í´«4¸ö0ËãÁË£¬ÒòΪÕâ4¸ö²ÎÊý£¬ÎÒÃǸü±¾²»Ó㬵«ÓÖÊÇCallWindowProc±ØÐëµÄ£¬²»ÒªÍüÁË£¬ÎÒÃÇ´«½øÈ¥µÄlpPrevWndFunc£¬²¢·ÇÕæÕýµÄ´°¿Ú¹ý³ÌµØÖ·£¬¶øÊÇ×Ô¼ºµÄ»ã±àÂëµØÖ·¡£ ¡¡¡¡¾ßÌåÒ»µã£¬±ÈÈ磬ÎÒÃÇҪǶÈëÒ»¶ÎʲôҲ²»¸ÉµÄ»ã±à´úÂ룺 Dim AsmCode() as byte redim AsmCode(8) 'Éú³É»úÆ÷´úÂë AsmCode(0) = &H58 'POP EAX AsmCode(1) = &H59 'POP ECX AsmCode(2) = &H59 'POP ECX AsmCode(3) = &H59 'POP ECX AsmCode(4) = &H59 'POP ECX AsmCode(5) = &H50 'PUSH EAX 'Äã¿ÉÒÔÔÚÕâÀïÌí¼ÓÄãÏëÖ´ÐеÄAsm´úÂë... '.....Èç¹ûÌí¼ÓµÄ»°£¬ºóÃæµÄÊý×éÆ«ÒÆÐèÒª×öÏàÓ¦¸Ä¶¯ 'ÄãÌí¼ÓµÄ´úÂëÔÚÕâÀï½áÊø '½«¿ØÖÆÈ¨½»»¹Ö÷³ÌÐò AsmCode(6) = &HC3 'RET '..... ¡¡¡¡È»ºó£º CallDllFunction = CallWindowProc(VarPtr(AsmCode(0), 0, 0, 0, 0) ¡¡¡¡VarPtrº¯Êý£¬ÓÃÓÚÈ¡±äÁ¿µØÖ·¡£·µ»ØÒ»¸ölong ÐÍÖµ¡£ ¡¡¡¡ÎªÊ²Ã´Ç°ÃæÒªÖ´Ðм¸¸öpopºÍÒ»¸öpushÄØ£¿ÒòΪÎÒÃÇÊÇÒÔÒ»¶Î»ã±à´úÂëÊ×µØÖ·£¬Î±×°³ÉÒ»¸ö´°¿Ú¹ý³ÌµÄ£¬ÏµÍ³µ÷ÓÃCallWindowProcʱ£¬Êµ¼ÊÉϳýlpPrevWndFunc£¬ÎÒÃÇ»¹´«ÈëÁË4¸ö²ÎÊý£¬¾ÍÊÇÉÏÃæµÄµÄ4¸ö0£¬¶øCallWindoProcº¯ÊýÔÚµ÷ÓÃlpPrevWndFuncÕâ¶Î»ã±à´úÂë³ÌÐòʱ£¬°ÑÆäÓà4¸ö²ÎÊýÊÇѹÈëÁ˶ÑÕ»µÄ¡£Ï൱ÓÚÖ´ÐÐÁËÒÔÏ´úÂ룺 xxxx00A4H: push 0 xxxx00A6H: push 0 xxxx00A8H: push 0 xxxx00AAH: push 0 xxxx00ACH: call VarPtr(AsmCode(0))(Õâ¶Î´úÂëÎÒÃÇÊÇ¿´²»¼ûµÄ£¬ÊÇCallWindoProcÔÚÄÚ²¿×öµÄ´¦Àí) xxxx00AFH: ...... ¡¡¡¡ÒòΪÎÒÃǸù±¾Ã»ÓÐÓõ½Õâ4¸ö²ÎÊý£¬ËùÒÔÎÒÃÇÖ»ÐèÒª½«Ëüµ¯³ö¡£ËùÒÔ£¬ÎÒÃÇÖ´ÐÐÁË4¸öPOP ECX£¬¾ÍÊǰÑÕâ4¸ö²»ÓõIJÎÊýµ¯³ö£¬ÒÔ±£³Ö¶ÑÕ»Ö¸ÕëµÄÕýÈ·ÐÔ¡£µ«ÎªÊ²Ã´»¹Òª£¬µÚÒ»¾äµÄ OP EAX£¬»¹ÊÇÒòΪCallWindowProc°ÑlpPrevWndFuncµ±³ÉÒ»¸ö´°¿Ú¹ý³ÌµÄԹʣ¬ÒòΪ×÷Ϊһ¸öÕý³£µÄ´°¿Ú¹ý³Ì£¬ÔÚÖ´ÐÐCallÓï¾äµÄʱºò£¬µÃ°ÑCallÓï¾äµÄÏÂÒ»ÌõÖ¸ÁîµØÖ·pushµ½¶ÑÕ»ÖУ¬ÓÃÓÚ×Ó³ÌÐòret¡£ÔÚÉÏÃæÕâ¶Î´úÂë¾ÍÊÇÖ´ÐÐÁË£ºpush xxxx00afh¡£ÊÂʵÉÏ£¬ÔÚCallWindowProcÖУ¬Êµ¼ÊÉÏÒþº¬Ö´ÐÐÕâô¼¸¾ä£¬ÎÒÃDZØÐë¹ØÐĵĴúÂ룺 push 0;²ÎÊýÈëÕ» push 0 push 0 push 0 push xxxx00afh£»£¨µ±Ö´ÐÐcall ʱ£¬×Ô¶¯Ö´ÐУ© ¡¡¡¡ÎªÁËÄÜÈô°¿Ú¹ý³ÌÖ´ÐнáÊøºó¶ÑÕ»Ö¸Õë±£³Öƽºâ£¬µ±È»ÒªÖ´ÐÐÏàÓ¦µÄpopÖ¸ÁµÚÒ»¸öpop eaxÊǰÑ×Ó³ÌÐò·µ»ØµÄµØÖ·ÔÝʱ±£´æÔڼĴæÆ÷eaxÖУ¬È»ºóµ¯³ö4¸ö²»ÓõIJÎÊý¡£ ¡¡¡¡½Ó×Űѱ£´æÔÚeaxÖзµ»ØµØÖ·£¬Ñ¹»Ø¶ÑÕ»¡£µ±Ö´ÐÐretʱ£¬¾ÍÄÜÕýÈ··µ»Øµ½CallWindowProcÖÐÁË¡£ |
» ²ÂÄãϲ»¶
¿¼ÑÐÓ¢Ò»ÊýÒ»338·Ö
ÒѾÓÐ5È˻ظ´
085801µçÆø×¨Ë¶272Çóµ÷¼Á
ÒѾÓÐ6È˻ظ´
²ÄÁϹ¤³Ì085601£¬270Çóµ÷¼Á
ÒѾÓÐ38È˻ظ´
2026 WRÇà°Î
ÒѾÓÐ4È˻ظ´
327Çóµ÷¼Á
ÒѾÓÐ13È˻ظ´
Ò»Ö¾Ô¸085502£¬267·ÖÇóµ÷¼Á
ÒѾÓÐ17È˻ظ´
302Çóµ÷¼Á
ÒѾÓÐ3È˻ظ´
Çóµ÷¼Á
ÒѾÓÐ4È˻ظ´
335Çóµ÷¼Á
ÒѾÓÐ14È˻ظ´
¿¼ÑÐÇóµ÷¼Á
ÒѾÓÐ6È˻ظ´

ÕÒµ½Ò»Ð©Ïà¹ØµÄ¾«»ªÌû×Ó£¬Ï£ÍûÓÐÓÃŶ~
ÓÐû¸´Ï°Ó¢Óï¼´ÓïÑÔ¿¼ÊÔ£¬ºÜ¼èÄÑÀ§»óºÜÓôÃÆµÄ£¿
ÒѾÓÐ8È˻ظ´
fischerͶӰʽÕâÑùµÄ»·¨£¬Äã¿ÉÒÔ½ÓÊÜÂ𣿡¾Òѽâ¾ö¡¿
ÒѾÓÐ5È˻ظ´
Euler Project Q13 Å·À¹¤³ÌµÚÊ®ÈýÌâ
ÒѾÓÐ20È˻ظ´
¡¾ÇóÖú¡¿±¾È˶ÔCÓïÑÔÓÐÒ»µã»ù´¡£¬´òËãѧϰһVC£¬Çë¸÷Î»ÍÆ¼ö¼¸±¾¾µäÈëÃŽ̲Ä
ÒѾÓÐ17È˻ظ´
¡¾ÌÖÂÛ¡¿Visual C++ 6.0----ÀúÊ·×µÄVisual C++
ÒѾÓÐ8È˻ظ´
¡¾ÇóÖú¡¿Intel Visual FortranÓëCompaq Visual FortranµÄÇø±ð£¿
ÒѾÓÐ18È˻ظ´
¿ÆÑдÓСľ³æ¿ªÊ¼£¬ÈËÈËΪÎÒ£¬ÎÒΪÈËÈË













OP EAX£¬»¹ÊÇÒòΪCallWindowProc°ÑlpPrevWndFuncµ±³ÉÒ»¸ö´°¿Ú¹ý³ÌµÄԹʣ¬ÒòΪ×÷Ϊһ¸öÕý³£µÄ´°¿Ú¹ý³Ì£¬ÔÚÖ´ÐÐCallÓï¾äµÄʱºò£¬µÃ°ÑCallÓï¾äµÄÏÂÒ»ÌõÖ¸ÁîµØÖ·pushµ½¶ÑÕ»ÖУ¬ÓÃÓÚ×Ó³ÌÐòret¡£ÔÚÉÏÃæÕâ¶Î´úÂë¾ÍÊÇÖ´ÐÐÁË£ºpush xxxx00afh¡£ÊÂʵÉÏ£¬ÔÚCallWindowProcÖУ¬Êµ¼ÊÉÏÒþº¬Ö´ÐÐÕâô¼¸¾ä£¬ÎÒÃDZØÐë¹ØÐĵĴúÂ룺
»Ø¸´´ËÂ¥
µã»÷ÕâÀïËÑË÷¸ü¶àÏà¹Ø×ÊÔ´