به نقل از Toxic_Frog :
متاسفم كه نا اميدت ميكنم نه راهي نيست كه بشه اونو در وي بي نوشت. دليلشم اينه :
ايده قضيه سادست. تابعي كه مربوط به يه پروسه نباشه (تابعي كه در فضاي آدرس اون پروسه اجرا نميشه) اگه پيغام WM_GETTEXT رو بفرسته جواب درست نميگيره (فقط چند تايي ستاره نصيبيش ميشه ) همه راههاي ديگه هم از اين پيغام استفاده ميكنن. در هر صورت تنها راه ممكن اينه كه يه پروسه خارجي تو فضاي آدرس پروسه صاحب پنجره اجرا شه و از اونجا تكست رو بگيره و به شما بده.
اين برنامه يك پنجره رو پيدا ميكنه (حالا با هر متدي كه شما بخوايد هم ميشه مثلا با FindWindow بعد پروسه مربوط به اون پنجره رو هم ميگيره. تو فضاي آدرس اون پروسه اول يه فضايي رو ميگيره (اين توابع فقط تو NT كار ميكنن) يك كد رو تو اون فضا مينويسه به عبارتي يه قسمت از برنامه رو اونجا مينويسه (واسه همينم يه تابع خالي گذاشته تو برنامش. از اونجا كه ميخواد اندازه اين تابع (كدي) رو كه ميخواد توش بنويسه بدست بياره. اندازش ميشه فاصله آدرس تابع هدف تا تابع بعد از خودش.) بعد كه اونو نوشت يك ساختار رو هم مينويسه و اون تابعي كه حالا نقش ستون پنجم رو ايفا ميكنه توي اون برنامه هدف اجرا ميكنه. تا اينجاش رو ميشه تو وي بي پياده كرد اما بعدش::::: :wacko:
توي اين تابع جاسوس نبايد هيچ تابعي فراخواني بشه (مشكل اينه كه اين تابع داره تو فضاي يك پروسه ديگه اجرا ميشه اما اصلش تو كد شماست. بنابراين اگه سعي كنيد تابعي رو فراخواني كنيد با كرش Crash برنامه مقصد روبرو ميشيد .ساده ترش اينكه : شما اگه وقتي از اين كد سعي ميكنيد يه تابع رو فراخواني كنيد تو برنامه شما دنبالش ميگرده و نه تو برنامه مقصد اين يعني خطاي AccsessViolation براي اون برنامه و...
به همين دليل اين برنامه آدرس تابع SendMessage رو از اول ميگيره بعد اونو تو استراكچري كه به تابع پاس ميده ميذاره حالا تابع جاسوس اين تابع رو اجرا ميكنه. (اين جا ديگه مجازه) و اما مشكل وي بي : اين زبان برنامه نويسي نميتواند توابع را از طريق آدرس فراخواني كند. بنابراين شما ميتوانيد كدتان را در برنامه جاسازي كنيد و آن را هم اجرا كنيد. اما چطور ميتوانيد تابعي كه براي گرفتن تكست لازم است اجرا كنيد و تكست را بگيريد؟؟
من كدو به دلفي ترجمه كردم خيلي قشنگ جواب ميده
راستي اين برنامه رو فقط تو NT ميشه استفاده كرد. نه 98 و ME