.Net рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдХреЗ рд╡рд┐рдВрдбреЛрдЬ рдЕрдиреБрдкреНрд░рдпреЛрдЧреЛрдВ рдХреЗ рд▓рд┐рдП рдЯреЗрд╕реНрдЯ рдСрдЯреЛрдореЗрд╢рди

рдкрд░реАрдХреНрд╖рдг рд╕реНрд╡рдЪрд╛рд▓рди



рдкрд░реАрдХреНрд╖рдг рдПрдХ рдЧрддрд┐рд╡рд┐рдзрд┐ рд╣реИ рдЬреЛ рд╕реЙрдлреНрдЯрд╡реЗрдпрд░ рдХреА рдЧреБрдгрд╡рддреНрддрд╛ рдХрд╛ рдореВрд▓реНрдпрд╛рдВрдХрди рдФрд░ рд╕реБрдзрд╛рд░ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдХреА рдЬрд╛рддреА рд╣реИред рдпрд╣ рдЧрддрд┐рд╡рд┐рдзрд┐, рд╕рд╛рдорд╛рдиреНрдп рд░реВрдк рд╕реЗ, рд╕реЙрдлреНрдЯрд╡реЗрдпрд░ рд╕рд┐рд╕реНрдЯрдо рдореЗрдВ рджреЛрд╖реЛрдВ рдФрд░ рд╕рдорд╕реНрдпрд╛рдУрдВ рдХрд╛ рдкрддрд╛ рд▓рдЧрд╛рдиреЗ рдкрд░ рдЖрдзрд╛рд░рд┐рдд рд╣реИред

рд╕реЙрдлреНрдЯрд╡реЗрдпрд░ рд╕рд┐рд╕реНрдЯрдо рдХреЗ рдкрд░реАрдХреНрд╖рдг рдореЗрдВ рдЧрддрд┐рд╢реАрд▓ рд░реВрдк рд╕реЗ рдкрд░реАрдХреНрд╖рдгреЛрдВ рдХреЗ рд╕реАрдорд┐рдд (рд╕реАрдорд┐рдд) рд╕реЗрдЯ рдкрд░ рдХрд╛рд░реНрдпрдХреНрд░рдореЛрдВ рдХреЗ рд╡реНрдпрд╡рд╣рд╛рд░ рдХреЛ рд╕рддреНрдпрд╛рдкрд┐рдд рдХрд░рдирд╛ рд╢рд╛рдорд┐рд▓ рд╣реИ, рдЖрдорддреМрд░ рдкрд░ рдЖрд╡реЗрджрди рдХреНрд╖реЗрддреНрд░ рдХреЗ рдкреНрд░рджрд░реНрд╢рди рдХрд┐рдП рдЧрдП рдХрд╛рд░реНрдпреЛрдВ рд╕реЗ рдФрд░ рд╕рд┐рд╕реНрдЯрдо рдХреЗ рдЕрдкреЗрдХреНрд╖рд┐рдд рд╡реНрдпрд╡рд╣рд╛рд░ рдХреЗ рдЕрдиреБрдкрд╛рд▓рди рдХрд╛ рд╕рддреНрдпрд╛рдкрди рдкреНрд░рджрд╛рди рдХрд░рддрд╛ рд╣реИред

рдкрд░реАрдХреНрд╖рдг рд╕реЙрдлреНрдЯрд╡реЗрдпрд░ рдХреЗ рд▓рд┐рдП рдореБрдЦреНрдп рджреГрд╖реНрдЯрд┐рдХреЛрдг рдмреНрд▓реИрдХ рдмреЙрдХреНрд╕ рдХрд╛ рдкрд░реАрдХреНрд╖рдг рдХрд░ рд░рд╣рд╛ рд╣реИред рдЗрд╕ рджреГрд╖реНрдЯрд┐рдХреЛрдг рдХреЗ рд╕рд╛рде, рдкрд░реАрдХреНрд╖рдХ рдХрд╛рд░реНрдпрдХреНрд░рдо рдХреА рдЖрдВрддрд░рд┐рдХ рд╕рдВрд░рдЪрдирд╛ рдХреЛ рдирд╣реАрдВ рдЬрд╛рдирддрд╛ рд╣реИред рдкрд░реАрдХреНрд╖рдХ рдХрд╛рд░реНрдпрдХреНрд░рдо рдХреЗ рд╕рд╛рде рдмрд╛рддрдЪреАрдд рдХрд░рддрд╛ рд╣реИ: рдбреЗрдЯрд╛ рдореЗрдВ рдкреНрд░рд╡реЗрд╢ рдХрд░рддрд╛ рд╣реИ, рдмрдЯрди рджрдмрд╛рддрд╛ рд╣реИ, рдЕрдиреНрдп рджреГрд╢реНрдп рдШрдЯрдХреЛрдВ рдореЗрдВ рд╣реЗрд░рдлреЗрд░ рдХрд░рддрд╛ рд╣реИ рдФрд░ рдкрд░рд┐рдгрд╛рдореЛрдВ рдХрд╛ рдореВрд▓реНрдпрд╛рдВрдХрди рдХрд░рддрд╛ рд╣реИред



рдЪреВрдВрдХрд┐ рдЖрдорддреМрд░ рдкрд░ рдкреВрд░реНрдг рдкрд░реАрдХреНрд╖рдг рдЕрд╕рдВрднрд╡ рд╣реИ рдпрд╛ рд▓рд╛рдЧреВ рдХрд░рдирд╛ рдореБрд╢реНрдХрд┐рд▓ рд╣реИ, рдкрд░реАрдХреНрд╖рдХ рдХрд╛ рдХрд╛рд░реНрдп рдбреЗрдЯрд╛ рдФрд░ рдХрд╛рд░реНрдпреЛрдВ рдХреЗ рдЕрдиреБрдХреНрд░рдо рдХрд╛ рдЪрдпрди рдХрд░рдирд╛ рд╣реИ рдЬрд┐рд╕ рдкрд░ рдкрд░реАрдХреНрд╖рдг рдХреЗ рддрд╣рдд рдХрд╛рд░реНрдпрдХреНрд░рдо рдХреА рддреНрд░реБрдЯрд┐рдпрд╛рдВ рд╕рдмрд╕реЗ рдЕрдзрд┐рдХ рд╣реЛрдиреЗ рдХреА рд╕рдВрднрд╛рд╡рдирд╛ рд╣реИред

рд╕реЙрдлрд╝реНрдЯрд╡реЗрдпрд░ рд╡рд┐рдХрд╕рд┐рдд рдХрд░рддреЗ рд╕рдордп, рдкрд░реАрдХреНрд╖рдХ рд╕реНрд╡реАрдХреГрддрд┐ рдФрд░ рдкреНрд░рддрд┐рдЧрдорди рдкрд░реАрдХреНрд╖рдг рдХреЗ рджреМрд░рд╛рди рдмрдбрд╝реА рд╕рдВрдЦреНрдпрд╛ рдореЗрдВ рд╕рдорд╛рди рдкрд░реАрдХреНрд╖рдг рдХрд░рддреЗ рд╣реИрдВред рдЗрд╕ рд╕рдВрдмрдВрдз рдореЗрдВ, рдкрд░реАрдХреНрд╖рдг рд╕реНрд╡рдЪрд╛рд▓рди рдмрд╣реБрдд рд╕рд╛рд░реЗ рдорд╛рдирд╡-рдШрдВрдЯреЗ рдмрдЪрд╛ рд╕рдХрддрд╛ рд╣реИред рд╕реНрд╡рдЪрд╛рд▓рд┐рдд рдкрд░реАрдХреНрд╖рдг рдХрд░рддреЗ рд╕рдордп, рдкрд░реАрдХреНрд╖рдХ рдХрд╛ рдХрд╛рд░реНрдп рдкрд░реАрдХреНрд╖рдгреЛрдВ рдХрд╛ рдПрдХ рд╕рдореВрд╣ рд╡рд┐рдХрд╕рд┐рдд рдХрд░рдирд╛ рд╣реИред рдкреНрд░рддреНрдпрдХреНрд╖ рдкрд░реАрдХреНрд╖рдг рдХреЗ рд╕рд╛рде, рдкрд░реАрдХреНрд╖рдХ рдЕрдзрд┐рдХ рдорд╣рддреНрд╡рдкреВрд░реНрдг рдФрд░ рдЕрдзрд┐рдХ рдмреБрджреНрдзрд┐рдорд╛рди рдХрд╛рд░реНрдп рдХрд░ рд╕рдХрддреЗ рд╣реИрдВред рдЗрд╕рдХреЗ рдЕрд▓рд╛рд╡рд╛, рд░рд╛рдд рдореЗрдВ рдкрд░реАрдХреНрд╖рдг рдХрд╛рд░реНрдпреЛрдВ рдХреЗ рдмрдбрд╝реЗ рд╕реЗрдЯ рд▓реЙрдиреНрдЪ рдХрд┐рдП рдЬрд╛ рд╕рдХрддреЗ рд╣реИрдВ, рдЬреЛ рд╡рд┐рдХрд╛рд╕ рдкреНрд░рдХреНрд░рд┐рдпрд╛ рдХреЛ рддреЗрдЬ рдХрд░реЗрдЧрд╛ рдФрд░ рдкрд░рд┐рдпреЛрдЬрдирд╛ рдХреА рд▓рд╛рдЧрдд рдХреЛ рдХрдо рдХрд░реЗрдЧрд╛ред рд╕реБрдмрд╣ рдореЗрдВ, рдкрд░реАрдХреНрд╖рдХ рдкрд░рд┐рдгрд╛рдореЛрдВ рдХрд╛ рд╡рд┐рд╢реНрд▓реЗрд╖рдг рдХрд░рддреЗ рд╣реИрдВ, рдХреБрдЫ рдкрд░реАрдХреНрд╖рдгреЛрдВ рдХреЛ рдкрд░рд┐рд╖реНрдХреГрдд рдпрд╛ рдкреБрди: рдкрд░реАрдХреНрд╖рдг рдХрд░рддреЗ рд╣реИрдВ рдФрд░ рдкрд░рд┐рдпреЛрдЬрдирд╛ рдкреНрд░рдмрдВрдзрдХ рдпрд╛ рдбреЗрд╡рд▓рдкрд░реНрд╕ рдХреЛ рд╕рдВрдЪрд░рдг рдХреЗ рд▓рд┐рдП рдЖрд╡рд╢реНрдпрдХ рд░рд┐рдкреЛрд░реНрдЯ рддреИрдпрд╛рд░ рдХрд░рддреЗ рд╣реИрдВред

.Net рдкреНрд▓реЗрдЯрдлрд╝реЙрд░реНрдо рддрдВрддреНрд░



.Net рдкреНрд▓реЗрдЯрдлрд╝реЙрд░реНрдо рдкрд░ рд╡рд┐рдВрдбреЛрдЬрд╝ рдПрдкреНрд▓рд┐рдХреЗрд╢рди рд╡рд┐рдХрд╕рд┐рдд рдХрд░рддреЗ рд╕рдордп, рдЖрдк рдкреНрд▓реЗрдЯрдлрд╝реЙрд░реНрдо рдХрд╛ рдЙрдкрдпреЛрдЧ рдПрдХ рд╣рд▓реНрдХреЗ рдФрд░ рд▓рдЪреАрд▓реЗ рдЯреВрд▓ рдХреЛ рдмрдирд╛рдиреЗ рдХреЗ рд▓рд┐рдП рдХрд░ рд╕рдХрддреЗ рд╣реИрдВ рдЬреЛ рд╡рд┐рдХрд╕рд┐рдд рдкрд░реАрдХреНрд╖рдг рдЪрд▓рд╛рдПрдЧрд╛ред рдкреВрд░реНрдг рд╕рдорд╛рдзрд╛рди рдмрдирд╛рдиреЗ рдХреЗ рд▓рд┐рдП рдЖрд╡рд╢реНрдпрдХ рдирд╣реАрдВ рд╣реИ, рдХрднреА-рдХрднреА рдпрд╣ рдЬрд▓реНрджреА рд╕реЗ рд╕реНрд╡рдЪрд╛рд▓рд┐рдд рдкрд░реАрдХреНрд╖рдгреЛрдВ рдХрд╛ рдПрдХ рд╕реЗрдЯ рдмрдирд╛рдиреЗ рдХреЗ рд▓рд┐рдП рд╕рдордЭ рдореЗрдВ рдЖрддрд╛ рд╣реИ рдЬреЛ рд╕реАрдзреЗ рдХреЛрдб рдореЗрдВ рд╕реЗрдЯ рдХрд┐рдпрд╛ рдЬрд╛рдПрдЧрд╛ред рдкрд░реАрдХреНрд╖рдгреЛрдВ рдХреЛ рдЬрд▓реНрджреА рд╕реЗ рд╕рдВрд╢реЛрдзрд┐рдд рдХрд░рдиреЗ рдФрд░ рдЬреЛрдбрд╝рдиреЗ рдХреЗ рд▓рд┐рдП, рдЖрдкрдХреЛ рд╡рд┐рднрд┐рдиреНрди рддрд░реАрдХреЛрдВ рдХреЗ рд╕рд╛рде рдПрдХ рдЕрд╕реЗрдВрдмрд▓реА рдХрд╛ рдирд┐рд░реНрдорд╛рдг рдФрд░ рдЙрдкрдпреЛрдЧ рдХрд░рдирд╛ рд╣реЛрдЧрд╛ рдЬреЛ рдкреНрд░реЛрдЧреНрд░рд╛рдо рдХреЗ рдЙрдкрдпреЛрдЧрдХрд░реНрддрд╛ рдЗрдВрдЯрд░рдлрд╝реЗрд╕ рдХреЗ рд╕рд╛рде рдкрд░реАрдХреНрд╖рдХ рдХреЗ рд▓рд┐рдП рдЖрд╡рд╢реНрдпрдХ рдХреНрд░рд┐рдпрд╛рдПрдВ рдХрд░реЗрдЧрд╛ред

рд╡рд┐рдВрдбреЛрдЬ рдЕрдиреБрдкреНрд░рдпреЛрдЧреЛрдВ рдХреЗ рдЙрдкрдпреЛрдЧрдХрд░реНрддрд╛ рдЗрдВрдЯрд░рдлрд╝реЗрд╕ рдХреЗ рд╕реНрд╡рдЪрд╛рд▓рд┐рдд рдкрд░реАрдХреНрд╖рдг рдХреЗ рд╕рд╛рде, рджреЛ рд╕рдорд╛рдзрд╛рди рд╕рдВрднрд╡ рд╣реИрдВред рдЗрдирдореЗрдВ рд╕реЗ рдкрд╣рд▓рд╛ рдкрд░рд╛рд╡рд░реНрддрди рддрдВрддреНрд░ рдкрд░ рдЖрдзрд╛рд░рд┐рдд рд╣реИред

рдкреНрд░рддрд┐рдмрд┐рдВрдм рддрдВрддреНрд░ рдЖрдкрдХреЛ рдЙрди рд╡рд╕реНрддреБрдУрдВ рдХреЛ рдкреНрд░рд╛рдкреНрдд рдХрд░рдиреЗ рдХреА рдЕрдиреБрдорддрд┐ рджреЗрддрд╛ рд╣реИ рдЬреЛ рд╡рд┐рдзрд╛рдирд╕рднрд╛рдУрдВ, рдореЙрдбреНрдпреВрд▓ рдФрд░ рдкреНрд░рдХрд╛рд░реЛрдВ рдХрд╛ рд╡рд░реНрдгрди рдХрд░рддреЗ рд╣реИрдВред рдкреНрд░рддрд┐рдмрд┐рдВрдм рдХрд╛ рдЙрдкрдпреЛрдЧ рдЧрддрд┐рд╢реАрд▓ рд░реВрдк рд╕реЗ рдПрдХ рдкреНрд░рдХрд╛рд░ рдХреА рдЖрд╡реГрддреНрддрд┐ рдмрдирд╛рдиреЗ рдХреЗ рд▓рд┐рдП рдХрд┐рдпрд╛ рдЬрд╛ рд╕рдХрддрд╛ рд╣реИ, рдПрдХ рдкреНрд░рдХрд╛рд░ рдХреЛ рдХрд┐рд╕реА рдореМрдЬреВрджрд╛ рд╡рд╕реНрддреБ рд╕реЗ рдмрд╛рдБрдз рд╕рдХрддрд╛ рд╣реИ, рдФрд░ рдХрд┐рд╕реА рдореМрдЬреВрджрд╛ рдСрдмреНрдЬреЗрдХреНрдЯ рд╕реЗ рдПрдХ рдкреНрд░рдХрд╛рд░ рдкреНрд░рд╛рдкреНрдд рдХрд░ рд╕рдХрддрд╛ рд╣реИ рдФрд░ рдЗрд╕рдХреЗ рддрд░реАрдХреЛрдВ рдХреЛ рдХреЙрд▓ рдХрд░ рд╕рдХрддрд╛ рд╣реИ рдпрд╛ рдЗрд╕рдХреЗ рдХреНрд╖реЗрддреНрд░реЛрдВ рдФрд░ рдЧреБрдгреЛрдВ рдХреЛ рдПрдХреНрд╕реЗрд╕ рдХрд░ рд╕рдХрддрд╛ рд╣реИред

рджреВрд╕рд░рд╛ рджреГрд╖реНрдЯрд┐рдХреЛрдг Win32 API рдкреБрд╕реНрддрдХрд╛рд▓рдпреЛрдВ рдХреЗ рдирд┐рдореНрди-рд╕реНрддрд░ рдХреЗ рдХрд╛рд░реНрдпреЛрдВ рдкрд░ рдЖрдзрд╛рд░рд┐рдд рд╣реИ: FindWindow, FindWindowEx, SendMessage, PostMessage рдФрд░ P / Invoke рддрдВрддреНрд░ (рдЕрдирд╡рд╛рдВрдЯреЗрдб рдХреЛрдб рдХреЛ рд▓рд╛рдЧреВ рдХрд░рддреЗ рд╣реБрдП)ред

рдорд╛рдирд╡ рд░рд╣рд┐рдд рдХреЛрдб рдЖрд╣реНрд╡рд╛рди рдПрдХ рд╕реЗрд╡рд╛ рд╣реИ рдЬреЛ рдкреНрд░рдмрдВрдзрд┐рдд рдкреНрд░реЛрдЧреНрд░рд╛рдо рдХреЛрдб рдХреЛ рдЧрддрд┐рд╢реАрд▓ рд▓рд┐рдВрдХ рдкреБрд╕реНрддрдХрд╛рд▓рдпреЛрдВ (DLL) рдореЗрдВ рдХрд╛рд░реНрдпрд╛рдиреНрд╡рд┐рдд рдЕрдкреНрд░рдмрдВрдзрд┐рдд рдХрд╛рд░реНрдпреЛрдВ рдХреЛ рд▓рд╛рдЧреВ рдХрд░рдиреЗ рдХреА рдЕрдиреБрдорддрд┐ рджреЗрддрд╛ рд╣реИред рдПрдХ рдЕрдкреНрд░рдмрдВрдзрд┐рдд рдХреЛрдб рдХреЙрд▓ рдПрдХ рдирд┐рд░реНрдпрд╛рдд рдлрд╝рдВрдХреНрд╢рди рдХрд╛ рдкрддрд╛ рд▓рдЧрд╛рддрд╛ рд╣реИ рдФрд░ рдХреЙрд▓ рдХрд░рддрд╛ рд╣реИред

рджреВрд╕рд░рд╛ рджреГрд╖реНрдЯрд┐рдХреЛрдг рди рдХреЗрд╡рд▓ .Net рдЕрдиреБрдкреНрд░рдпреЛрдЧреЛрдВ рдХреЗ рд▓рд┐рдП, рдмрд▓реНрдХрд┐ рдЙрдкрдпреЛрдЧрдХрд░реНрддрд╛ рдЗрдВрдЯрд░рдлрд╝реЗрд╕ рд╡рд╛рд▓реЗ рдХрд┐рд╕реА рднреА рд╡рд┐рдВрдбреЛрдЬрд╝ рдЕрдиреБрдкреНрд░рдпреЛрдЧреЛрдВ рдХреЗ рд▓рд┐рдП рдХрд╛рдо рдХрд░рддрд╛ рд╣реИред

рдкрд░реАрдХреНрд╖рдг рдЖрд╡реЗрджрди



рдкрд░реАрдХреНрд╖рдг рдХреЗ рддрд╣рдд рдЖрд╡реЗрджрди рджреЛ рдкреВрд░реНрдгрд╛рдВрдХ рдЬреЛрдбрд╝рддрд╛ рд╣реИ рдФрд░ рдмрдЯрди рдкрд░ рдХреНрд▓рд┐рдХ рдХрд░рдиреЗ рдХреЗ рдмрд╛рдж рдкрд░рд┐рдгрд╛рдо рдкреНрд░рджрд░реНрд╢рд┐рдд рдХрд░рддрд╛ рд╣реИред рдпрджрд┐ рдЬреЛрдбрд╝ рдХрд┐рд╕реА рдХрд╛рд░рдг рд╕реЗ рд╡рд┐рдлрд▓ рд╣реЛ рдЧрдпрд╛, рддреЛ рдкрд░рд┐рдгрд╛рдо рдХреЗ рдмрдЬрд╛рдп "рддреНрд░реБрдЯрд┐" рд╢рдмреНрдж рдкреНрд░рджрд░реНрд╢рд┐рдд рд╣реЛрддрд╛ рд╣реИред











"рдмреНрд▓реИрдХ рдмреЙрдХреНрд╕" рдХрд╛ рдкрд░реАрдХреНрд╖рдг рдХрд░рддреЗ рд╕рдордп рдХреЛрдб рддрдХ рдкрд╣реБрдВрдЪ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рдирд╣реАрдВ рд╣реЛрддреА рд╣реИред рд╣рдо рдЕрдкрдиреЗ рдХреЛрдб рдХрд╛ рдЙрдкрдпреЛрдЧ рдирд╣реАрдВ рдХрд░ рд╕рдХрддреЗ рд╣реИрдВ рдФрд░ рд╡рд┐рдзрд╛рдирд╕рднрд╛ рдФрд░ рдЪрд▓ рд░рд╣реЗ рдЖрд╡реЗрджрди рд╕реЗ рд╕рднреА рдЖрд╡рд╢реНрдпрдХ рдЬрд╛рдирдХрд╛рд░реА рдкреНрд░рд╛рдкреНрдд рдХрд░ рд╕рдХрддреЗ рд╣реИрдВред рд▓реЗрдХрд┐рди рдХреЛрдб рдХреЛ рдПрдХреНрд╕реЗрд╕ рдХрд░рддреЗ рд╕рдордп, рдХреБрдЫ рдкреНрд░рдХреНрд░рд┐рдпрд╛рдУрдВ рдХреЛ рд╕рд░рд▓ рдХрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИред

рдЖрд╡реЗрджрди D: \ Visual Studio 2010 \ Projects \ WindowsFormsApplication1 \ WindowsFormsApplication1 \ bin \ Debug \ AUT.exe рдкрд░ рд╕реНрдерд┐рдд рд╣реИ

рдЕрдиреБрдкреНрд░рдпреЛрдЧ рдХреЗ рддрд╣рдд рдкрд░реАрдХреНрд╖рдг рдХреЗ рд▓рд┐рдП AUT рдирд╛рдо рд╕рд╛рдорд╛рдиреНрдп рд╕рдВрдХреНрд╖рд┐рдкреНрдд рдирд╛рдо рд╣реИред

рдкреНрд░рддрд┐рдмрд┐рдВрдм рддрдВрддреНрд░ рдХреЗ рдЖрдзрд╛рд░ рдкрд░ рдкрд░реАрдХреНрд╖рдгред



рдкреНрд░рддрд┐рдмрд┐рдВрдм рддрдВрддреНрд░ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рддреЗ рд╕рдордп, рд╡рд┐рдзрд╛рдирд╕рднрд╛ рдХреЛ рд▓реЛрдб рдХрд░рдирд╛ рдЖрд╡рд╢реНрдпрдХ рд╣реИ, рдлреЙрд░реНрдо рдХрд╛ рдкреНрд░рдХрд╛рд░ рдкреНрд░рд╛рдкреНрдд рдХрд░реЗрдВ, рдПрдХ рдЙрджрд╛рд╣рд░рдг рдмрдирд╛рдПрдВ рдФрд░ рдЗрд╕ рдлреЙрд░реНрдо рдХреЗ рд╕рд╛рде рдПрдкреНрд▓рд┐рдХреЗрд╢рди рдХреЛ рдПрдХ рдирдИ рд╕реНрдЯреНрд░реАрдо рдореЗрдВ рд▓реЙрдиреНрдЪ рдХрд░реЗрдВред

рдпрджрд┐ рдкрд░реАрдХреНрд╖рдХ рдХреЗ рдкрд╛рд╕ рд╕реНрд░реЛрдд рдХреЛрдб рддрдХ рдкрд╣реБрдВрдЪ рдирд╣реАрдВ рд╣реИ, рддреЛ рд░реЗрдб рдЧреЗрдЯ рдХреА рдкрд░рд╛рд╡рд░реНрддрдХ рдЙрдкрдпреЛрдЧрд┐рддрд╛ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд┐рдпрд╛ рдЬрд╛ рд╕рдХрддрд╛ рд╣реИред рдЗрд╕рдХреА рдорджрдж рд╕реЗ, рдЖрдк рдлреЙрд░реНрдо, рдирд┐рдпрдВрддреНрд░рдг рдФрд░ рд╡рд┐рдзрд┐рдпреЛрдВ рдХреЗ рдирд╛рдо рджреЗрдЦ рд╕рдХрддреЗ рд╣реИрдВред







рдЗрд╕ рддрд░рд╣ рдЖрдк рдпрд╣ рдЬрд╛рди рд╕рдХрддреЗ рд╣реИрдВ рдХрд┐ рдлреЙрд░реНрдо рдХреНрд▓рд╛рд╕ рдХреЛ рдлреЙрд░реНрдо 1 рдХрд╣рд╛ рдЬрд╛рддрд╛ рд╣реИред рдкрд╛рда рдлрд╝реАрд▓реНрдбреНрд╕ рдХреЛ textBox1 рдФрд░ textBox2 рдирд╛рдо рджрд┐рдпрд╛ рдЧрдпрд╛ рд╣реИ, рдмрдЯрди рдмрдЯрди 1 рд╣реИ, рдкрд░рд┐рдгрд╛рдо рд▓реЗрдмрд▓ 1 рдирд╛рдо рдХреЗ рд╕рд╛рде рдЖрдЙрдЯрдкреБрдЯ рдореЗрдВ рд╣реИред рдмрдЯрди рдХреНрд▓рд┐рдХ рдХреЛ рд╕рдВрд╕рд╛рдзрд┐рдд рдХрд░рдиреЗ рдХреА рд╡рд┐рдзрд┐ рдХреЛ рдмрдЯрди 1 рдХрд╣рд╛ рдЬрд╛рддрд╛ рд╣реИред рдХреНрд▓рд┐рдХ рдХрд░реЗрдВ рдФрд░ рдЗрдирдкреБрдЯ рдХреЗ рд░реВрдк рдореЗрдВ рдкреНрд░рдХрд╛рд░ рдСрдмреНрдЬреЗрдХреНрдЯ рдФрд░ EventArgs рдХреЗ рдорд╛рдкрджрдВрдбреЛрдВ рдХреЛ рд╕реНрд╡реАрдХрд╛рд░ рдХрд░рддрд╛ рд╣реИред

рдбреЗрдЯрд╛ рдХреА рдПрдХ рд╕реНрд╡рдЪрд╛рд▓рд┐рдд рдкрд░реАрдХреНрд╖рд╛ рдмрдирд╛рдиреЗ рдХреЗ рд▓рд┐рдП, рдЖрд╡реЗрджрди рдХреА рдЖрдВрддрд░рд┐рдХ рд╕рдВрд░рдЪрдирд╛ рдХреЗ рдмрд╛рд░реЗ рдореЗрдВ рдЬреНрдЮрд╛рди рдкрд░реНрдпрд╛рдкреНрдд рд╣реИред

рдХреЛрдб рдХрд╛ рдкреБрди: рдЙрдкрдпреЛрдЧ рдмрдврд╝рд╛рдиреЗ рдХреЗ рд▓рд┐рдП, рдХрдИ рдХрдХреНрд╖рд╛рдПрдВ рдФрд░ рд╡рд┐рдзрд┐рдпрд╛рдВ рдмрдирд╛рдПрдВред

рдкрд░реАрдХреНрд╖рдг рдЖрд╡реЗрджрди StartApplication рд╡рд┐рдзрд┐ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░ рд▓реЙрдиреНрдЪ рдХрд┐рдпрд╛ рдЧрдпрд╛ рд╣реИред



static Form StartApplication( string path, string formName)

{

Form result = null ;

Assembly a = Assembly .LoadFrom(path);

Type t = a.GetType(formName);

result = (Form)a.CreateInstance(t.FullName);

ApplicationState aps = new ApplicationState(result);

ThreadStart ts = new ThreadStart(aps.RunApp);

Thread thread = new Thread(ts);

thread.Start();

return result;

}



* This source code was highlighted with Source Code Highlighter .








рдЕрд╕реЗрдВрдмрд▓реА рдХрд╛ рдорд╛рд░реНрдЧ рдФрд░ рдкреНрд░рдкрддреНрд░ рдХрд╛ рдирд╛рдо рдЗрдирдкреБрдЯ рдХреЗ рд▓рд┐рдП рджрд┐рдпрд╛ рдЧрдпрд╛ рд╣реИред рдирд┐рд░реНрджрд┐рд╖реНрдЯ рдЕрд╕реЗрдВрдмрд▓реА рдХреЛ рд▓реЛрдб рдХрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИ, рдкреНрд░рдкрддреНрд░ рдХрд╛ рдкреНрд░рдХрд╛рд░ рдирд┐рд░реНрдзрд╛рд░рд┐рдд рдХрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИ, рдкреНрд░рдкрддреНрд░ рдХрд╛ рдПрдХ рдЙрджрд╛рд╣рд░рдг рдмрдирд╛рдпрд╛ рдЬрд╛рддрд╛ рд╣реИ, рдФрд░ рдЗрд╕рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдХреЗ рдПрдкреНрд▓рд┐рдХреЗрд╢рди рдХреЛ рдПрдХ рдирдП рдереНрд░реЗрдб рдореЗрдВ рд▓реЙрдиреНрдЪ рдХрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИ: рдкреНрд░рддрд┐рдирд┐рдзрд┐ рдФрд░ рдирдП рдереНрд░реЗрдб рдореЗрдВ рд╢реБрд░реВ рдХрд░рдиреЗ рдХреА рд╡рд┐рдзрд┐ рдирд┐рд░реНрджрд┐рд╖реНрдЯ рд╣реИред

рдХреНрд▓рд╛рд╕ ApplicationStateред



class ApplicationState

{

public readonly Form formToRun;



public ApplicationState(Form f)

{

this .formToRun = f;

}



public void RunApp()

{

Application.Run(formToRun);

}

}



* This source code was highlighted with Source Code Highlighter .








рдкреБрди: рдЙрдкрдпреЛрдЧ рдХреЗ рд▓рд┐рдП, рдХрдИ рд╡рд┐рдзрд┐рдпреЛрдВ, рдХреНрд╖реЗрддреНрд░реЛрдВ рдФрд░ рдкреНрд░рддрд┐рдирд┐рдзрд┐рдпреЛрдВ рдХреЛ рдкрд░рд┐рднрд╛рд╖рд┐рдд рдХрд┐рдпрд╛ рдЬрд╛рдирд╛ рдЪрд╛рд╣рд┐рдПред



static BindingFlags flags = BindingFlags.Public |

BindingFlags.NonPublic |

BindingFlags.Static |

BindingFlags.Instance;



delegate void SetControlPropertyValueHandler(Form f, string controlName, string propertyName, object newValue);



static void SetControlPropertyValue(Form f, string controlName, string propertyName, object newValue)

{

if (f.InvokeRequired)

{

f.Invoke(

new SetControlPropertyValueHandler(SetControlPropertyValue),

new object [] { f, controlName, propertyName, newValue }

);

}

else

{

Type t1 = f.GetType();

FieldInfo fi = t1.GetField(controlName, flags);

object ctrl = fi.GetValue(f);

Type t2 = ctrl.GetType();

PropertyInfo pi = t2.GetProperty(propertyName);

pi.SetValue(ctrl, newValue, null );

}

}

static AutoResetEvent are = new AutoResetEvent( false );

delegate void InvokeMethodHandler(Form f, string methodName, params object [] parms);

static void InvokeMethod(Form f, string methodName, params object [] parms)

{

if (f.InvokeRequired)

{

f.Invoke(

new InvokeMethodHandler(InvokeMethod),

new object [] { f, methodName, parms }

);

}

else

{

Type t = f.GetType();

MethodInfo mi = t.GetMethod(methodName, flags);

mi.Invoke(f, parms);

are.Set();

}

}

delegate object GetControlPropertyValueHandler(Form f, string controlName, string propertyName);

static object GetControlPropertyValue(Form f, string controlName, string propertyName)

{

if (f.InvokeRequired)

{

object iResult = f.Invoke(

new GetControlPropertyValueHandler(GetControlPropertyValue),

new object [] { f, controlName, propertyName }

);

return iResult;

}

else

{

Type t1 = f.GetType();

FieldInfo fi = t1.GetField(controlName, flags);

object ctrl = fi.GetValue(f);

Type t2 = ctrl.GetType();

PropertyInfo pi = t2.GetProperty(propertyName);

object gResult = pi.GetValue(ctrl, null );

return gResult;

}

}

delegate object GetControlHandler(Form f, string controlName);

static object GetControl(Form f, string controlName)

{

if (f.InvokeRequired)

{

object iCtrl = f.Invoke(

new GetControlHandler(GetControl),

new object [] { f, controlName }

);

return iCtrl;

}

else

{

Type t1 = f.GetType();

FieldInfo fi = t1.GetField(controlName, flags);

object gCtrl = fi.GetValue(f);

return gCtrl;

}

}

delegate object GetFormPropertyValueHandler(Form f, string propertyName);

static object GetFormPropertyValue(Form f, string propertyName)

{

if (f.InvokeRequired)

{

object iResult = f.Invoke(

new GetFormPropertyValueHandler(GetFormPropertyValue),

new object [] { f, propertyName }

);

return iResult;

}

else

{

Type t = f.GetType();

PropertyInfo pi = t.GetProperty(propertyName);

object gResult = pi.GetValue(f, null );

return gResult;

}

}

delegate void SetFormPropertyValueHandler(Form f, string propertyName, object newValue);

static void SetFormPropertyValue(Form f, string propertyName, object newValue)

{

if (f.InvokeRequired)

{

f.Invoke(

new SetFormPropertyValueHandler(SetFormPropertyValue),

new object [] { f, propertyName, newValue }

);

}

else

{

Type t = f.GetType();

PropertyInfo pi = t.GetProperty(propertyName);

pi.SetValue(f, newValue, null );

}

}



* This source code was highlighted with Source Code Highlighter .








InvokeRequired рдкреНрд░реЙрдкрд░реНрдЯреА рдХреЛ рдпрд╣ рдЗрдВрдЧрд┐рдд рдХрд░рдиреЗ рдХрд╛ рдПрдХ рдореВрд▓реНрдп рдорд┐рд▓рддрд╛ рд╣реИ рдХрд┐ рдХреНрдпрд╛ рдХреЙрд▓ рдСрдкрд░реЗрдЯрд░ рдХреЛ рдХрдВрдЯреНрд░реЛрд▓ рд╕реЗ рд╡рд┐рдзрд┐ рдХреЙрд▓ рдХреЗ рджреМрд░рд╛рди рдЗрдирд╡реЛрдХ рд╡рд┐рдзрд┐ рдХреЛ рдХреЙрд▓ рдХрд░рдирд╛ рдЪрд╛рд╣рд┐рдП, рдХреНрдпреЛрдВрдХрд┐ рдХреЙрд▓ рдСрдкрд░реЗрдЯрд░ рдЙрд╕ рд╕реНрдЯреНрд░реАрдо рдореЗрдВ рдирд╣реАрдВ рд╣реИ рдЬрд┐рд╕рдореЗрдВ рдирд┐рдпрдВрддреНрд░рдг рдмрдирд╛рдпрд╛ рдЧрдпрд╛ рдерд╛ [4]ред

InvokeMethod - рдирд┐рд░реНрджрд┐рд╖реНрдЯ рдорд╛рдкрджрдВрдбреЛрдВ рдХреЗ рд╕рд╛рде рдорд╛рдкрджрдВрдбреЛрдВ рдореЗрдВ рдирд┐рд░реНрджрд┐рд╖реНрдЯ рд╡рд┐рдзрд┐ рдХреЛ рдХреЙрд▓ рдХрд░рддрд╛ рд╣реИред

SetControlPropertyValue - рдирд┐рд░реНрджрд┐рд╖реНрдЯ рдирд┐рдпрдВрддреНрд░рдг рдХреА рд╕рдВрдкрддреНрддрд┐ рд╕реЗрдЯ рдХрд░рддрд╛ рд╣реИред

GetControlPropertyValue - рдирд┐рд░реНрджрд┐рд╖реНрдЯ рдирд┐рдпрдВрддреНрд░рдг рд╕рдВрдкрддреНрддрд┐ рдХрд╛ рдореВрд▓реНрдп рдкреНрд░рд╛рдкреНрдд рдХрд░рддрд╛ рд╣реИред

SetFormPropertyValue - рдирд┐рд░реНрджрд┐рд╖реНрдЯ рдкреНрд░рдкрддреНрд░ рдЧреБрдг рд╕реЗрдЯ рдХрд░рддрд╛ рд╣реИред

GetFormPropertyValue - рдПрдХ рдлреЙрд░реНрдо рд╕рдВрдкрддреНрддрд┐ рдХрд╛ рдореВрд▓реНрдп рдкреНрд░рд╛рдкреНрдд рдХрд░рддрд╛ рд╣реИред

GetControl - рдирд┐рд░реНрджрд┐рд╖реНрдЯ рдирд┐рдпрдВрддреНрд░рдг рд╣реЛ рдЬрд╛рддрд╛ рд╣реИред

рдЗрди рд╡рд┐рдзрд┐рдпреЛрдВ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдХреЗ, рдЖрдк рдПрдХ рдкрд░реАрдХреНрд╖рдг рдПрдкреНрд▓рд┐рдХреЗрд╢рди рдмрдирд╛ рд╕рдХрддреЗ рд╣реИрдВред



static void Main( string [] args)

{

string path = @"D:\visual studio 2010\Projects\WindowsFormsApplication1\WindowsFormsApplication1\bin\Debug\aut.exe" ;

string nameForm = "AUT.Form1" ;

Form myForm = StartApplication(path, nameForm);

string f1 = "521" ;

string f2 = "367" ;

SetControlPropertyValue(myForm, "textBox1" , "Text" , f1);

SetControlPropertyValue(myForm, "textBox2" , "Text" , f2);

object ctrl = GetControl(myForm, "button1" );

InvokeMethod(myForm, "button1_Click" , ctrl, EventArgs .Empty);

string res = GetControlPropertyValue(myForm, "label1" , "Text" ).ToString();

string resTest = "FAIL" ;

if (res == "888" ) resTest = "PASS" ;

Console .WriteLine( "{0} + {1} = {2}. Test {3}" , f1, f2, res, resTest);

}



* This source code was highlighted with Source Code Highlighter .








рдкрд╛рда рдлрд╝реАрд▓реНрдб рдореЗрдВ рдЖрд╡рд╢реНрдпрдХ рдорд╛рди рд╕реЗрдЯ рдХрд┐рдП рдЬрд╛рддреЗ рд╣реИрдВ, рдЬрд┐рд╕рдХреЗ рдмрд╛рдж рдЖрд╡рд╢реНрдпрдХ рдорд╛рдкрджрдВрдбреЛрдВ рдХреЗ рд╕рд╛рде рдмрдЯрди 1_рдХреНрд▓рд┐рдХ рд╡рд┐рдзрд┐ рдХрд╣рд╛ рдЬрд╛рддрд╛ рд╣реИред рдЙрд╕рдХреЗ рдмрд╛рдж, рдирд┐рдпрдВрддреНрд░рдг рд▓реЗрдмрд▓ 1 рдХреА рдкрд╛рда рд╕рдВрдкрддреНрддрд┐ рдХрд╛ рдореВрд▓реНрдп рдкреНрд░рд╛рдкреНрдд рдХрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИ рдФрд░ рдЗрд╕рдХреА рддреБрд▓рдирд╛ рд╡рд╛рдВрдЫрд┐рдд рдХреЗ рд╕рд╛рде рдХреА рдЬрд╛рддреА рд╣реИ, рдЬрд┐рд╕рдХреЗ рдмрд╛рдж рд╕реНрдХреНрд░реАрди рдкрд░ рдкрд░реАрдХреНрд╖рдг рдХреЗ рдмрд╛рд░реЗ рдореЗрдВ рдЬрд╛рдирдХрд╛рд░реА рдкреНрд░рджрд░реНрд╢рд┐рдд рд╣реЛрддреА рд╣реИред

рдХреЗрд╡рд▓ рдкреНрд░рддрд┐рдмрд┐рдВрдм рддрдВрддреНрд░ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдиреЗ рдХрд╛ рдПрдХ рд╡рд┐рд╢реЗрд╖ рдорд╛рдорд▓рд╛ рдкреНрд░рд╕реНрддреБрдд рдХрд┐рдпрд╛ рдЧрдпрд╛ рд╣реИ; рдкрд░реАрдХреНрд╖рдХ рдкрд░реАрдХреНрд╖рдг рд╕реВрдЯ рдХреЛ рдкреВрд░рдХ рдХрд░ рд╕рдХрддрд╛ рд╣реИред

рдЕрдкреНрд░рдмрдВрдзрд┐рдд рдХреЛрдб рдХреЛ рд▓рд╛рдЧреВ рдХрд░рдиреЗ рдХреЗ рдЖрдзрд╛рд░ рдкрд░ рдкрд░реАрдХреНрд╖рдгред



рдкрд░реАрдХреНрд╖рдг рдХреЗ рд▓рд┐рдП, user32.dll рд▓рд╛рдЗрдмреНрд░реЗрд░реА рд╕реЗ рдХрдИ рдлрд╝рдВрдХреНрд╢рди рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИред

рдлрд╝рдВрдХреНрд╢рди рдЖрдпрд╛рдд рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП, DllImport рд╡рд┐рд╢реЗрд╖рддрд╛ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░реЗрдВред



[DllImport( "user32.dll" , EntryPoint = "FindWindow" , CharSet = CharSet.Auto)]

static extern IntPtr FindWindow( string lpClassName, string lpWindowName);



[DllImport( "user32.dll" , EntryPoint = "FindWindowEx" , CharSet = CharSet.Auto)]

static extern IntPtr FindWindowEx( IntPtr hwndParent, IntPtr hwndChildAfter, string lpszClass, string lpszWindow);



[DllImport( "user32.dll" , EntryPoint = "SendMessage" , CharSet = CharSet.Auto)]

static extern void SendMessage1( IntPtr hWnd, uint Msg, int wParam, int lParam);



[DllImport( "user32.dll" , EntryPoint = "PostMessage" , CharSet = CharSet.Auto)]

static extern bool PostMessage1( IntPtr hWnd, uint Msg, int wParam, int lParam);



[DllImport( "user32.dll" , EntryPoint = "SendMessage" , CharSet = CharSet.Auto)]

static extern int SendMessage3( IntPtr hWndControl, uint Msg, int wParam, byte [] lParam);



* This source code was highlighted with Source Code Highlighter .








рдпреЗ рдлрд╝рдВрдХреНрд╢рди рдЖрдкрдХреЛ рдореБрдЦреНрдп рдлрд╝реЙрд░реНрдо рд╣реИрдВрдбрд▓рд░ рдЦреЛрдЬрдиреЗ, рдЖрд╡рд╢реНрдпрдХ рдирд┐рдпрдВрддреНрд░рдг рдЦреЛрдЬрдиреЗ, рдкрд╛рда рджрд░реНрдЬ рдХрд░рдиреЗ, рдмрдЯрди рдкрд░ рдХреНрд▓рд┐рдХ рдХрд░рдиреЗ рдФрд░ рдирд┐рдпрдВрддреНрд░рдг рдореВрд▓реНрдп рдкреНрд░рд╛рдкреНрдд рдХрд░рдиреЗ рдХреА рдЕрдиреБрдорддрд┐ рджреЗрдВрдЧреЗред

рдкреБрди: рдЙрдкрдпреЛрдЧ рдХреЗ рд▓рд┐рдП, рд╣рдо рдХрдИ рддрд░реАрдХреЛрдВ рдХреЛ рдкрд░рд┐рднрд╛рд╖рд┐рдд рдХрд░рддреЗ рд╣реИрдВ



static void ClickKey( IntPtr hControl, VKeys key)

{

PostMessage1(hControl, ( int )WMessages.WM_KEYDOWN, ( int )key, 0);

PostMessage1(hControl, ( int )WMessages.WM_KEYUP, ( int )key, 0);

}

static void ClickOn( IntPtr hControl)

{

PostMessage1(hControl, ( int )WMessages.WM_LBUTTONDOWN, 0, 0); // button down

PostMessage1(hControl, ( int )WMessages.WM_LBUTTONUP, 0, 0); // button up

}

static void SendChar( IntPtr hControl, char c)

{

uint WM_CHAR = 0x0102;

SendMessage1(hControl, WM_CHAR, c, 0);

}

static void SendChars( IntPtr hControl, string s)

{

foreach ( char c in s)

{

SendChar(hControl, c);

}

}

static IntPtr FindWindowByIndex( IntPtr hwndParent, int index)

{

if (index == 0)

return hwndParent;

else

{

int ct = 0;

IntPtr result = IntPtr .Zero;

do

{

result = FindWindowEx(hwndParent, result, null , null );

if (result != IntPtr .Zero)

++ct;

} while (ct < index && result != IntPtr .Zero);

return result;

}

}

static List < IntPtr > GetAllControls( IntPtr hwndParent)

{

IntPtr ctrl = IntPtr .Zero;

List < IntPtr > res = new List < IntPtr >();

ctrl = FindWindowEx(hwndParent, ctrl, null , null );

while (ctrl != IntPtr .Zero)

{

res.Add(ctrl);

ctrl = FindWindowEx(hwndParent, ctrl, null , null );

}

return res;

}

static IntPtr FindMainWindowHandle( string caption)

{

IntPtr mwh = IntPtr .Zero;

bool formFound = false ;

int attempts = 0;

do

{

mwh = FindWindow( null , caption);

if (mwh == IntPtr .Zero)

{

Thread.Sleep(100);

++attempts;

}

else

{

formFound = true ;

}

} while (!formFound && attempts < 25);

if (mwh != IntPtr .Zero)

return mwh;

else

throw new Exception( "Could not find Main Window" );

}



* This source code was highlighted with Source Code Highlighter .








рдореБрдЦреНрдп рдХрд╛рд░реНрдп рдирд┐рдпрдВрддреНрд░рдг рдХреЗ рдХреНрд░рдо рдХреЛ рдирд┐рд░реНрдзрд╛рд░рд┐рдд рдХрд░рдирд╛ рд╣реИред рдпрджрд┐ рдЗрд╕рдХреЗ рдирд╛рдо / рд╢реАрд░реНрд╖рдХ / рдХреИрдкреНрд╢рди рдХреА рд╕рдВрдкрддреНрддрд┐ рдЬреНрдЮрд╛рдд рд╣реЛ рддреЛ рдЖрдк рдирд┐рдпрдВрддреНрд░рдг рдХреЛ рдПрдХ рд╕рдВрдХреЗрддрдХ рдкреНрд░рд╛рдкреНрдд рдХрд░ рд╕рдХрддреЗ рд╣реИрдВред рдпрджрд┐ рдпрд╣ рдЧреБрдг рдЕрдЬреНрдЮрд╛рдд рд╣реИ, рдпрд╛ рдпрд╣ рдЕрджреНрд╡рд┐рддреАрдп рдирд╣реАрдВ рд╣реИ, рддреЛ рдЖрдкрдХреЛ FindWindowByIndex рд╡рд┐рдзрд┐ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдирд╛ рд╣реЛрдЧрд╛ред рдЬреАрд░реЛ рдХрдВрдЯреНрд░реЛрд▓ рд╡рд┐рдВрдбреЛ рд╣реА рд╣реЛрдЧреАред рдирд┐рдпрдВрддреНрд░рдг рдЗрд╕рдХреЗ рдЕрд▓рд╛рд╡рд╛ рдХреНрд░рдо рдореЗрдВ рд╣реИрдВ:

this .Controls.Add( this .label1);

this .Controls.Add( this .button1);

this .Controls.Add( this .textBox2);

this .Controls.Add( this .textBox1);



* This source code was highlighted with Source Code Highlighter .






рд▓реЗрдХрд┐рди рдЪреВрдВрдХрд┐ рдпрд╣ рдорд╛рдирд╛ рдЬрд╛рддрд╛ рд╣реИ рдХрд┐ рд╕реНрд░реЛрдд рдХреЛрдб рдЕрдЬреНрдЮрд╛рдд рд╣реИ, рдЗрд╕рд▓рд┐рдП рдЖрдкрдХреЛ SPY ++ рдЙрдкрдпреЛрдЧрд┐рддрд╛ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдирд╛ рд╣реЛрдЧрд╛ред рдпрд╣ рдирд┐рдпрдВрддреНрд░рдг рдХреЗ рдХреНрд░рдо рдХреЛ рджрд░реНрд╢рд╛рддрд╛ рд╣реИред







рдкрд╣рд▓рд╛ рдирдВрдмрд░ рд▓реЗрдмрд▓, рджреВрд╕рд░рд╛ рдмрдЯрди, рддреАрд╕рд░рд╛ рдФрд░ рдЪреМрдерд╛ рдЯреЗрдХреНрд╕реНрдЯ рдлрд╝реАрд▓реНрдб рд╣реИред

рдЗрд╕ рдЬрд╛рдирдХрд╛рд░реА рдХреЗ рдЖрдзрд╛рд░ рдкрд░, рдПрдкреНрд▓рд┐рдХреЗрд╢рди рдХрд╛ рдкрд░реАрдХреНрд╖рдг рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдХреЛрдб рдмрдирд╛рдпрд╛ рдЬрд╛рддрд╛ рд╣реИред



static void Main( string [] args)

{

string path = @"D:\visual studio 2010\Projects\WindowsFormsApplication1\WindowsFormsApplication1\bin\Debug\aut.exe" ;

string nameForm = "AUT" ;

Process p = Process.Start(path);

//

IntPtr mwh = FindMainWindowHandle(nameForm);

//

IntPtr tb1 = FindWindowByIndex(mwh, 3);

IntPtr tb2 = FindWindowByIndex(mwh, 4);

//

string f1 = "521" ;

SendChars(tb1, f1);

string f2 = "367" ;

SendChars(tb2, f2);

//

IntPtr btn = FindWindowByIndex(mwh, 2);

ClickOn(btn);

//

Thread.Sleep(150);

IntPtr lbl = FindWindowByIndex(mwh, 1);

uint WM_GETTEXT = 0x000D;

byte [] buffer = new byte [256];

string res = null ;

int numFetched = SendMessage3(lbl, WM_GETTEXT, 256, buffer);

res = System.Text. Encoding .Unicode.GetString(buffer);

// Label

string resTest = "FAIL" ;

if (res == "888" ) resTest = "PASS" ;

Console .WriteLine( "{0} + {1} = {2}. Test {3}" , f1, f2, res, resTest);

Thread.Sleep(3000);

p.CloseMainWindow();

p.Close();

}



* This source code was highlighted with Source Code Highlighter .






рдирд┐рд╖реНрдХрд░реНрд╖



рд╕реНрд╡рдЪрд╛рд▓рд┐рдд рдкрд░реАрдХреНрд╖рдг рдХреЗ рд▓рд┐рдП рдПрдХ рдкреВрд░реНрдг рдЙрдкрдХрд░рдг рдХрд╛ рд╡рд┐рдХрд╛рд╕ рдЗрд╕ рд▓реЗрдЦ рдХрд╛ рдЙрджреНрджреЗрд╢реНрдп рдирд╣реАрдВ рдерд╛ред рдЗрд╕ рд▓реЗрдЦ рдореЗрдВ рдХреЗрд╡рд▓ .Net рдкреНрд▓реЗрдЯрдлреЙрд░реНрдо рдХреЗ рддрдВрддреНрд░ рдХреЛ рджрд┐рдЦрд╛рдпрд╛ рдЧрдпрд╛ рд╣реИ рдЬреЛ рд╕реНрд╡рдЪрд╛рд▓рд┐рдд рдкрд░реАрдХреНрд╖рдг рдХреЗ рд▓рд┐рдП рдЙрдкрдпреЛрдЧ рдХрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИред рдЗрд╕ рд▓реЗрдЦ рдХреЗ рдмрд╛рд╣рд░, рдкрд░реАрдХреНрд╖рдг рд╕реВрдЯ рд╕рдВрдЪрдп рдФрд░ рдкрд░рд┐рдгрд╛рдо рдмрдЪрд╛рдиреЗ рд╕реЗ рд╕рдВрдмрдВрдзрд┐рдд рдкреНрд░рд╢реНрди рд╣реИрдВред рдкрд░реАрдХреНрд╖рдг рд▓рдХреНрд╖реНрдп, рдбреЗрдЯрд╛, рдУрд░реЗрдХрд▓ рд╕рдорд╕реНрдпрд╛рдУрдВ рдХреЛ рдЪреБрдирдиреЗ рдХреЗ рдкреНрд░рд╢реНрдиреЛрдВ рдкрд░ рд╡рд┐рдЪрд╛рд░ рдирд╣реАрдВ рдХрд┐рдпрд╛ рдЧрдпрд╛ рдерд╛ред

рд╕реВрддреНрд░реЛрдВ рдХреА рд╕реВрдЪреА



1. subok.sorlik.ru/4_software_testing.html IEEE рдЧрд╛рдЗрдб рдЯреВ рд╕реЙрдлреНрдЯрд╡реЗрдпрд░ рдЗрдВрдЬреАрдирд┐рдпрд░рд┐рдВрдЧ рдмреЙрдбреА рдСрдл рдиреЙрд▓реЗрдЬ, SWEBOK, 2004. рдлрдВрдбрд╛рдореЗрдВрдЯрд▓реНрд╕ рдСрдлрд╝ рд╕реЙрдлреНрдЯрд╡реЗрдпрд░ рдЗрдВрдЬреАрдирд┐рдпрд░рд┐рдВрдЧред рд╕рд░реНрдЧреЗрдИ рдСрд░рд▓рд┐рдХ рджреНрд╡рд╛рд░рд╛ рдЕрдиреБрд╡рд╛рджред

2. рд╕реИрдо рдХрдиреЗрд░, рдЬреИрдХ рдлреЛрдХ, рдпрдВрдЧ рдХреЗрдХреЗ рдЧреБрдпреЗрдиред рд╕реЙрдлреНрдЯрд╡реЗрдпрд░ рдкрд░реАрдХреНрд╖рдгред рдореМрд▓рд┐рдХ рд╡реНрдпрд╛рд╡рд╕рд╛рдпрд┐рдХ рдЕрдиреБрдкреНрд░рдпреЛрдЧ рдкреНрд░рдмрдВрдзрди рдЕрд╡рдзрд╛рд░рдгрд╛рдПрдВред рдбрд╛рдпрд╕реЙрдлреНрдЯ, 2001ред

3. msdn.microsoft.com/en-us/library/ms173183.aspx - рдкреНрд░рддрд┐рдмрд┐рдВрдм (C # рдФрд░ Visual Basic)ред

4. msdn.microsoft.com/en-us/library/system.windows.forms.control.invokerequired.aspx - .NET рдлреНрд░реЗрдорд╡рд░реНрдХ рдХреНрд▓рд╛рд╕ рд▓рд╛рдЗрдмреНрд░реЗрд░реАред рд╕рдВрдкрддреНрддрд┐ рдкрд░ рдирд┐рдпрдВрддреНрд░рдгред

5. msdn.microsoft.com/en-us/library/26thfadc.aspx - рдЕрдкреНрд░рдмрдВрдзрд┐рдд DLL рдлрд╝рдВрдХреНрд╢рди рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдирд╛ред

6. рдЬреЗрдореНрд╕ рдбреАред рдореИрдХреНрдлреНрд░реЗред рдиреЗрдЯ рдкрд░реАрдХреНрд╖рдг рд╕реНрд╡рдЪрд╛рд▓рди рд╡реНрдпрдВрдЬрдиреЛрдВ: рдПрдХ рд╕рдорд╕реНрдпрд╛-рд╕рдорд╛рдзрд╛рди рджреГрд╖реНрдЯрд┐рдХреЛрдгред books.google.ru/books?id=3vN9zsMLvxkC

7. www.automatedtestinginstitute.com/home/index.php?option=com_content&task=view&id=1312&option=com_content&Itemid=1000 UI рдСрдЯреЛрдореЗрд╢рди рдкреНрд░реЗрдЬреЗрдВрдЯ рд▓реЗрдпрд░ рдХреЗ рдиреАрдЪреЗред рдмреА рдЬреЗ рд░реЛрд▓рд┐рд╕рдиред рд▓реЗрдЦ рдХреЗ рдкреВрд░реНрдг рд╕рдВрд╕реНрдХрд░рдг рдХреЗ рд╕рд╛рде рдкрддреНрд░рд┐рдХрд╛ рд╕реЗ рд▓рд┐рдВрдХ рдХрд░реЗрдВред www.automatedtestinginstitute.com/home/ASTMagazine/2010/AutomatedSoftwareTestingMagazine_June2010.pdf

8. msdn.microsoft.com/en-us/magazine/cc163864.aspx .NET рдХреЗ рд╕рд╛рде рд▓рд╛рдЗрдЯрд╡реЗрдЯ UI рдЯреЗрд╕реНрдЯ рдСрдЯреЛрдореЗрд╢рдиред рдЬреЗрдореНрд╕ рдореИрдХрдХреЗрдлреНрд░реЗред

9. habrahabr.ru/blogs/net/58582 рдПрдХ рдЕрдкреНрд░рдмрдВрдзрд┐рдд рд╡рд╛рддрд╛рд╡рд░рдг рдореЗрдВ NET: рдкреНрд▓реЗрдЯрдлрд╝реЙрд░реНрдо рдЪрд╛рд▓рд╛рди рдпрд╛ LPTSTR рдХреНрдпрд╛ рд╣реИред

10. PInvoke.net



рдкреНрд░реЛрдЬреЗрдХреНрдЯ рд╕реЛрд░реНрд╕ рдХреЛрдб



All Articles