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