рдпрд╣ рд▓реЗрдЦ рдХрд┐рд╕ рдмрд╛рд░реЗ рдореЗрдВ рд╣реИ:
рдХрдИ рдкреНрд░реЛрдЧреНрд░рд╛рдо рдЙрдкрдпреЛрдЧрдХрд░реНрддрд╛ рдХреЛ рдПрдХреНрд╕рдкреНрд▓реЛрд░рд░ рд╕реЗ рдПрдкреНрд▓рд┐рдХреЗрд╢рди рд╡рд┐рдВрдбреЛ рдореЗрдВ рдЦреАрдВрдЪрдХрд░ рдлрд╛рдЗрд▓реЗрдВ рдЦреЛрд▓рдиреЗ рдХреА рдЕрдиреБрдорддрд┐ рджреЗрддреЗ рд╣реИрдВред рдПрдХ рдирд┐рдпрдо рдХреЗ рд░реВрдк рдореЗрдВ, рдпрд╣ рдЙрдкрдпреЛрдЧрдХрд░реНрддрд╛ рдХреЗ рд▓рд┐рдП рдЕрдзрд┐рдХ рд╕реБрд╡рд┐рдзрд╛рдЬрдирдХ рд╣реИ, рдорд╛рдирдХ рдЙрджреНрдШрд╛рдЯрди рдореЙрдбрд▓ рдХреЗ рд╡рд┐рдкрд░реАрдд, рдореЗрдиреВ "рдлрд╝рд╛рдЗрд▓ -> рдУрдкрди" рдХрд╛ рдЪрдпрди рдХрд░рдХреЗ рдпрд╛ рдЯреВрд▓рдмрд╛рд░ рдкрд░ рд╕рдВрдмрдВрдзрд┐рдд рдмрдЯрди рдкрд░ рдХреНрд▓рд┐рдХ рдХрд░рдХреЗ, рдХреНрдпреЛрдВрдХрд┐ рдЗрд╕ рдорд╛рдорд▓реЗ рдореЗрдВ рдЙрдкрдпреЛрдЧрдХрд░реНрддрд╛ рд╕рдВрд╡рд╛рдж рдмреЙрдХреНрд╕ рдХреЗ рд╕рд╛рде рдХрд╛рдо рдХрд░рдиреЗ рдХреЗ рдЪрд░рдг рдХреЛ рдЫреЛрдбрд╝ рджреЗрддрд╛ рд╣реИред
рдЗрд╕ рд╕реБрд╡рд┐рдзрд╛ рдХреЛ рдЕрдкрдиреЗ рдПрдкреНрд▓рд┐рдХреЗрд╢рди рдореЗрдВ рдЬреЛрдбрд╝рдиреЗ рд╕реЗ рдпрд╣ рдФрд░ рдЕрдзрд┐рдХ "рдкреЗрд╢реЗрд╡рд░" рд╣реЛ рдЬрд╛рдПрдЧрд╛ред
рдпрд╣ рдХреИрд╕реЗ рдХрд╛рдо рдХрд░рддрд╛ рд╣реИ:
рд╡рд┐рдВрдбреЛрдЬ рдПрдкреНрд▓рд┐рдХреЗрд╢рди рдореЗрдВ рдЗрд╕ рдХрд╛рд░реНрдпрдХреНрд╖рдорддрд╛ рдХреЛ рдЬреЛрдбрд╝рдиреЗ рдХреЗ рджреЛ рдореБрдЦреНрдп рддрд░реАрдХреЗ рд╣реИрдВред
рдкрд╣рд▓рд╛ рддрд░реАрдХрд╛ рдорд╛рдирдХ рд╡рд┐рдВрдбреЛрдЬ рдбреНрд░реИрдЧ-рдПрдВрдб-рдбреНрд░реЙрдк рдПрдкреАрдЖрдИ рдХрд╛рд░реНрдпреЛрдВ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдирд╛ рдФрд░ рд╕рд╛рде рдореЗрдВ рдЖрдиреЗ рд╡рд╛рд▓реЗ рд╡рд┐рдВрдбреЛ рд╕рдВрджреЗрд╢реЛрдВ рдХреЛ рд╕рдВрднрд╛рд▓рдирд╛ рд╣реИред
рджреВрд╕рд░реА рд╡рд┐рдзрд┐ OLE (COM) рддрдХрдиреАрдХ рдХрд╛ рдЙрдкрдпреЛрдЧ рд╣реИ, рдЬреЛ рдЕрдиреБрдкреНрд░рдпреЛрдЧреЛрдВ рдХреЗ рдмреАрдЪ рдбреЗрдЯрд╛ рд╕реНрдерд╛рдирд╛рдВрддрд░рд┐рдд рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдЙрдиреНрдирдд рддрд░реАрдХреЗ рдкреНрд░рджрд╛рди рдХрд░рддрд╛ рд╣реИред
рдЗрд╕ рд▓реЗрдЦ рдореЗрдВ, рдкрд╣рд▓рд╛ рдФрд░ рд╕рдмрд╕реЗ рдЖрд╕рд╛рди рддрд░реАрдХрд╛ рдорд╛рдирд╛ рдЬрд╛рдПрдЧрд╛ред
рд╕рдВрдХреНрд╖рд┐рдкреНрдд рд╕рдореАрдХреНрд╖рд╛:
рдбрд┐рдлрд╝реЙрд▓реНрдЯ рд░реВрдк рд╕реЗ, Windows рдЕрдиреБрдкреНрд░рдпреЛрдЧреЛрдВ рдореЗрдВ рдлрд╝рд╛рдЗрд▓реЛрдВ рдХреЗ рд▓рд┐рдП рдЦреАрдВрдЪреЗрдВ рдФрд░ рдбреНрд░реЙрдк рд╕рдорд░реНрдерди рдЕрдХреНрд╖рдо рд╣реИред
рдЗрд╕ рд╕реБрд╡рд┐рдзрд╛ рдХреЛ рд╕рдХреНрд╖рдо рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП, рд╣рдореЗрдВ рд╡рд┐рдВрдбреЛрдЬ рдХреЛ рдмрддрд╛рдирд╛ рд╣реЛрдЧрд╛ рдХрд┐ рд╣рдо рдбреНрд░реИрдЧ рдФрд░ рдбреНрд░реЙрдк рдиреЛрдЯрд┐рдлрд┐рдХреЗрд╢рди рдкреНрд░рд╛рдкреНрдд рдХрд░рдирд╛ рдЪрд╛рд╣рддреЗ рд╣реИрдВ, рдФрд░ рдЕрдзрд┐рд╕реВрдЪрдирд╛ рдбреЗрдЯрд╛ рдХреЛ рд╕рдВрд╕рд╛рдзрд┐рдд рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдЬрд┐рдореНрдореЗрджрд╛рд░ рд╡рд┐рдВрдбреЛ рднреА рдирд┐рд░реНрджрд┐рд╖реНрдЯ рдХрд░реЗрдВред
рдЗрд╕ рд╡рд┐рдВрдбреЛ рдХреЛ WM_DROPFILES рд╕рдВрджреЗрд╢ рдХреЛ рд╕рдВрд╕рд╛рдзрд┐рдд рдХрд░рдиреЗ рдореЗрдВ рд╕рдХреНрд╖рдо рд╣реЛрдирд╛ рдЪрд╛рд╣рд┐рдП рдЬреЛ рдЙрд╕ рд╕рдордп рдЖрддрд╛ рд╣реИ рдЬрдм рдЙрдкрдпреЛрдЧрдХрд░реНрддрд╛ рдбреНрд░реИрдЧ рдПрдВрдб рдбреНрд░реЙрдк рдСрдкрд░реЗрд╢рди рдХреЛ рдкреВрд░рд╛ рдХрд░рддрд╛ рд╣реИред
рдпрд╣ рд╕рдВрджреЗрд╢ рд╣рдореЗрдВ рдбреНрд░реЙрдк рдЗрд╡реЗрдВрдЯ рд╣реИрдВрдбрд▓рд░ рдХреЛ рд▓рд╛рдЧреВ рдХрд░рдиреЗ рдХрд╛ рдЕрд╡рд╕рд░ рдкреНрд░рджрд╛рди рдХрд░рддрд╛ рд╣реИ, рдЬрд┐рд╕рд╕реЗ рд╣рдо рд╡рд┐рднрд┐рдиреНрди рдПрдкреАрдЖрдИ рдХрд╛рд░реНрдпреЛрдВ рдХреЛ рдХреЙрд▓ рдХрд░ рд╕рдХрддреЗ рд╣реИрдВ рдЬреЛ рд╣рдорд╛рд░реЗ рдмрд╛рд░реЗ рдореЗрдВ рдЬрд╛рдирдХрд╛рд░реА рдкреНрд░рд╛рдкреНрдд рдХрд░ рд╕рдХрддреЗ рд╣реИрдВред
рдЗрд╕ рд╕рдВрджреЗрд╢ рдХреЛ рд╕рдВрд╕рд╛рдзрд┐рдд рдХрд░рдиреЗ рдХреЗ рдмрд╛рдж, рдпрд╣ рд╡рд┐рдВрдбреЛрдЬ рдХреЛ рд╕реВрдЪрд┐рдд рдХрд░рдиреЗ рдХрд╛ рдПрдХ рдЕрдЪреНрдЫрд╛ рддрд░реАрдХрд╛ рд╣реИ рдХрд┐ рд╣рдордиреЗ рдЗрд╕ рдСрдкрд░реЗрд╢рди рдХреЛ рд╕рдВрд╕рд╛рдзрд┐рдд рдХрд┐рдпрд╛ рд╣реИ рдФрд░ рдЕрдм рдЗрд╕рдХреЗ рдмрд╛рд░реЗ рдореЗрдВ рд╕реВрдЪрдирд╛рдПрдВ рдкреНрд░рд╛рдкреНрдд рдирд╣реАрдВ рдХрд░рдирд╛ рдЪрд╛рд╣рддреЗ рд╣реИрдВред
Windows Vista (рдФрд░ рдЙрдЪреНрдЪрддрд░) рдореЗрдВ рд╕реБрд░рдХреНрд╖рд╛ рд╕рдорд╕реНрдпрд╛рдПрдБрд╕реБрд░рдХреНрд╖рд╛ рдХрд╛рд░рдгреЛрдВ рд╕реЗ, рд╡рд┐рдВрдбреЛрдЬрд╝ рд╡рд┐рд╕реНрдЯрд╛ рдЙрди рдЦрд┐рдбрд╝рдХрд┐рдпреЛрдВ рдХреЗ рдмреАрдЪ рдЦреАрдВрдЪ рдФрд░ рдбреНрд░реЙрдк рдХрд░рдиреЗ рдореЗрдВ рд╕рдХреНрд╖рдо рдирд╣реАрдВ рд╣реЛ рд╕рдХрддрд╛ рд╣реИ рдЬрд┐рдирдХреА рд╕реБрд░рдХреНрд╖рд╛ рд╕реЗрдЯрд┐рдВрдЧреНрд╕ рдЕрд▓рдЧ рд╣реИрдВред
рдкрд░рд┐рдгрд╛рдорд╕реНрд╡рд░реВрдк, рдЖрдкрдХреЗ рдЖрд╡реЗрджрди рджреНрд╡рд╛рд░рд╛ WM_DROPFILES рд╕рдВрджреЗрд╢ рдХреА рдкреНрд░рд╛рдкреНрддрд┐ рдЕрд╡рд░реБрджреНрдз рд╣реЛ рд╕рдХрддреА рд╣реИред
рдЖрдЗрдП рдХрджрдо рд╕реЗ рдХрджрдо рдкрд░ рд╡рд┐рдЪрд╛рд░ рдХрд░реЗрдВ рдХрд┐ рдбреНрд░реИрдЧ-рдПрдВрдб-рдбреНрд░реЙрдк рдХреЗ рдорд╛рдзреНрдпрдо рд╕реЗ рдлрд╝рд╛рдЗрд▓ рд░рд┐рд╕реЗрдкреНрд╢рди рдХреЛ рд▓рд╛рдЧреВ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдбреЗрд▓реНрдлреА рдПрдкреНрд▓рд┐рдХреЗрд╢рди рдореЗрдВ рдХреНрдпрд╛ рдХрд░рдиреЗ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реИ:
1. рдЖрд╡рд╢реНрдпрдХ рдПрдкреАрдЖрдИ рдХрд╛рд░реНрдпреЛрдВ рддрдХ рдкрд╣реБрдВрдЪ рдкреНрд░рд╛рдкреНрдд рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП, рдЖрдкрдХреЛ рд╢реЗрд▓рдПрдкреАрдЖрдИ рдореЙрдбреНрдпреВрд▓ рдХреЛ рдЬреЛрдбрд╝рдирд╛ рд╣реЛрдЧрд╛:
uses ShellAPI;
2. DragAcceptFiles рдлрд╝рдВрдХреНрд╢рди рдХреЛ рдХреЙрд▓ рдХрд░реЗрдВ, рд╡рд┐рдВрдбреЛ рдХреЗ рд╣реИрдВрдбрд▓ рдХреЗ рд▓рд┐рдП рдкрд╣рд▓рд╛ рдкреИрд░рд╛рдореАрдЯрд░ рдкрд╛рд╕ рдХрд░рдирд╛ рдЬреЛ WM_DROPFILES рд╕рдВрджреЗрд╢ рдХреЛ рд╕рдВрд╕рд╛рдзрд┐рдд рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдЬрд╝рд┐рдореНрдореЗрджрд╛рд░ рд╣реЛрдЧрд╛, рдФрд░ рджреВрд╕рд░рд╛ True, рдпрд╣ рджрд░реНрд╢рд╛рддрд╛ рд╣реИ рдХрд┐ рдпрд╣ рд╡рд┐рдВрдбреЛ рд╕реВрдЪрдирд╛рдПрдБ рдкреНрд░рд╛рдкреНрдд рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рддреИрдпрд╛рд░ рд╣реИред
рдЙрджрд╛рд╣рд░рдг рдХреЗ рд▓рд┐рдП, рдпрд╣ рд╡рд┐рдВрдбреЛ рд╣рдорд╛рд░реЗ рдЖрд╡реЗрджрди рдХрд╛ рдореБрдЦреНрдп рд░реВрдк рд╣реЛрдЧрд╛:
DragAcceptFiles(Form1.Handle, True);
3. WM_DROPFILES рд╕рдВрджреЗрд╢ рдХреЛ рд╕рдВрд╕рд╛рдзрд┐рдд рдХрд░реЗрдВред рдбреЗрд▓реНрдлреА рдореЗрдВ, рд╣рдо рдЖрд╡реЗрджрди рдХреЗ рдореБрдЦреНрдп рд░реВрдк рдХреА рдХрдХреНрд╖рд╛ рдореЗрдВ рдПрдХ рд╕рдВрджреЗрд╢ рд╣реИрдВрдбрд▓рд░ рдХреА рдШреЛрд╖рдгрд╛ рдХрд░ рд╕рдХрддреЗ рд╣реИрдВ:
procedure WMDropFiles(var Msg: TWMDropFiles); message WM_DROPFILES;
4. WM_DROPFILES рд╕рдВрджреЗрд╢ рдкреНрд░рд╛рдкреНрдд рдХрд░рддреЗ рд╕рдордп, рд╣рд╕реНрддрд╛рдВрддрд░рд┐рдд рдлрд╝рд╛рдЗрд▓реЛрдВ рдХреЗ рдмрд╛рд░реЗ рдореЗрдВ рдЬрд╛рдирдХрд╛рд░реА рдкреНрд░рд╛рдкреНрдд рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП DragQueryXXX рдлрд╝рдВрдХреНрд╢рди рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░реЗрдВ - рдиреАрдЪреЗ рджрд┐рдП рдЧрдП рд╕реНрдкрд╖реНрдЯреАрдХрд░рдг рджреЗрдЦреЗрдВред
5. рд╡рд┐рдВрдбреЛрдЬ рдХреЛ рд╕реВрдЪрд┐рдд рдХрд░реЗрдВ рдХрд┐ рдЗрд╕ рд╕рдВрджреЗрд╢ рдиреЗ рдкреНрд░рд╕рдВрд╕реНрдХрд░рдг рд╕рдорд╛рдкреНрдд рдХрд░ рджрд┐рдпрд╛ рд╣реИред
рдпрд╣ DragFinish рдлрд╝рдВрдХреНрд╢рди рдХреЛ рдХреЙрд▓ рдХрд░рдХреЗ рдХрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИ, рдЬрд┐рд╕рдореЗрдВ WM_DROPFILES рд╕рдВрджреЗрд╢ рдХреЛ рд╕рдВрд╕рд╛рдзрд┐рдд рдХрд░рддреЗ рд╕рдордп HDROP рдбрд┐рд╕реНрдХреНрд░рд┐рдкреНрдЯрд░ рдХреЛ рдкреИрд░рд╛рдореАрдЯрд░ рдХреЗ рд░реВрдк рдореЗрдВ рдкрд╛рд╕ рдХрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИред
рдЗрд╕ рдлрд╝рдВрдХреНрд╢рди рдХреЛ рдХреЙрд▓ рдХрд░рдиреЗ рд╕реЗ рдбреНрд░реИрдЧ-рдПрдВрдб-рдбреНрд░реЙрдк рдСрдкрд░реЗрд╢рди рдХреЗ рдмрд╛рд░реЗ рдореЗрдВ рдбреЗрдЯрд╛ рд╕реНрдЯреЛрд░ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдЙрдкрдпреЛрдЧ рдХрд┐рдП рдЬрд╛рдиреЗ рд╡рд╛рд▓реЗ рд╕рдВрд╕рд╛рдзрди рдореБрдХреНрдд рд╣реЛ рдЬрд╛рдПрдВрдЧреЗред
DragFinish(DropH);
6. рдЬрдм рдПрдкреНрд▓рд┐рдХреЗрд╢рди рдмрдВрдж рд╣реЛ рдЬрд╛рддрд╛ рд╣реИ, рддреЛ рдЖрдкрдХреЛ рдлрд┐рд░ рд╕реЗ рдбреНрд░реИрдЧрд╕реЗрдкреНрдЯрдлрд╛рдЗрд▓реНрд╕ рдлрд╝рдВрдХреНрд╢рди рдХреЛ рдХреЙрд▓ рдХрд░рдиреЗ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реЛрддреА рд╣реИ, рд▓реЗрдХрд┐рди рдЗрд╕ рдмрд╛рд░ рдлрд╛рд▓реНрд╕ рдХреЛ рджреВрд╕рд░реЗ рдкреИрд░рд╛рдореАрдЯрд░ рдХреЗ рд░реВрдк рдореЗрдВ рдкрд╛рд╕ рдХрд░реЗрдВ, рдЬреЛ рд╡рд┐рдВрдбреЛрдЬ рдХреЛ рд╕реВрдЪрд┐рдд рдХрд░реЗрдЧрд╛ рдХрд┐ рд╡рд┐рдВрдбреЛ рдЕрдм WM_DROPFILES рд╕рдВрджреЗрд╢ рдХреЛ рд╕рдВрд╕рд╛рдзрд┐рдд рдирд╣реАрдВ рдХрд░рддрд╛ рд╣реИред
DragAcceptFiles(Form1.Handle, False);
рдорд╛рдЗрдЧреНрд░реЗрдЯ рдХреА рдЧрдИ рдлрд╝рд╛рдЗрд▓реЛрдВ рдХреЗ рдмрд╛рд░реЗ рдореЗрдВ рдЬрд╛рдирдХрд╛рд░реА рдкреНрд░рд╛рдкреНрдд рдХрд░рдирд╛ред
рд╣рдо рдорд╛рдЗрдЧреНрд░реЗрдЯреЗрдб рдлрд╝рд╛рдЗрд▓реЛрдВ рдХреЗ рдмрд╛рд░реЗ рдореЗрдВ рдЬрд╛рдирдХрд╛рд░реА рдкреНрд░рд╛рдкреНрдд рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рджреЛ рдХрд╛рд░реНрдпреЛрдВ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░реЗрдВрдЧреЗ - DragQueryFile рдФрд░ DragQueryPointред
WM_DROPFILES рд╕рдВрджреЗрд╢ рдХреЛ рд╕рдВрд╕рд╛рдзрд┐рдд рдХрд░рддреЗ рд╕рдордп рдЗрди рджреЛрдиреЛрдВ рдХрд╛рд░реНрдпреЛрдВ рдХреЗ рд▓рд┐рдП HDROP рдбрд┐рд╕реНрдХреНрд░рд┐рдкреНрдЯрд░ рдкреИрд░рд╛рдореАрдЯрд░ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реЛрддреА рд╣реИред
рд╕рднреА рдЯреНрд░реЗрдбреЛрдВ рдореЗрдВ рдЖрдкрдХрд╛ рд╕реНрд╡рд╛рдЧрдд рд╣реИ - DragQueryFileред
рд╡рд┐рдВрдбреЛрдЬ рдПрдкреАрдЖрдИ рдХреЗ рдЕрдзрд┐рдХрд╛рдВрд╢ рдХрд╛рд░реНрдпреЛрдВ рдХреА рддрд░рд╣, рдбреНрд░реИрдЧрд╡рд┐рдХрдлрд╛рдЗрд▓ рдХрдИ рд╡реНрдпрд╡рд╣рд╛рд░реЛрдВ рдХреЛ рд▓рд╛рдЧреВ рдХрд░ рд╕рдХрддрд╛ рд╣реИ, рдЬреЛ рдЗрд╕реЗ рдкрд╛рд░рд┐рдд рдХрд┐рдП рдЧрдП рдорд╛рдкрджрдВрдбреЛрдВ рдкрд░ рдирд┐рд░реНрднрд░ рдХрд░рддрд╛ рд╣реИред
рдРрд╕рд╛ рд╡реНрдпрд╡рд╣рд╛рд░ рдХрднреА-рдХрднреА рдЗрд╕ рддрдереНрдп рдХреА рдУрд░ рдЬрд╛рддрд╛ рд╣реИ рдХрд┐ рдкреНрд░реЛрдЧреНрд░рд╛рдорд░ рдХреЗ рд▓рд┐рдП рдЗрд╕ рдлрд╝рдВрдХреНрд╢рди рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдиреЗ рдХреЗ рд╕рд╣реА рдкреНрд░рдХрд╛рд░ рдХреЛ рдпрд╛рдж рд░рдЦрдирд╛ рдореБрд╢реНрдХрд┐рд▓ рд╣реИред
рдЖрдЗрдП рдЗрд╕рдХреЗ рдорд╛рдкрджрдВрдбреЛрдВ рдХреЛ рджреЗрдЦреЗрдВ (рдбреЗрд▓реНрдлреА рд╕рд┐рдВрдЯреИрдХреНрд╕ рдХреЛ рдзреНрдпрд╛рди рдореЗрдВ рд░рдЦрддреЗ рд╣реБрдП):
- рдбреНрд░реЙрдкрд╣реИрдВрдбрд▓: рдПрдЪрдбреАрдЖрд░рдкреА - рдСрдкрд░реЗрд╢рди рдбрд┐рд╕реНрдХреНрд░рд┐рдкреНрдЯрд░ WM_DROPFILES рд╕рдВрджреЗрд╢ рджреНрд╡рд╛рд░рд╛ рднреЗрдЬрд╛ рдЧрдпрд╛ред
- рд╕реВрдЪрдХрд╛рдВрдХ: рдкреВрд░реНрдгрд╛рдВрдХ - рдлрд╝рд╛рдЗрд▓ рд╕реВрдЪрдХрд╛рдВрдХ рдЬрдм рд╕реНрдерд╛рдирд╛рдВрддрд░рд┐рдд рдлрд╝рд╛рдЗрд▓реЛрдВ рдХреА рд╕реВрдЪреА рдХреЛ рдХреНрд╡реЗрд░реА рдХрд░рддрд╛ рд╣реИред
- FileName: PChar - рд╕реВрдЪрдХ рдХреЛ рдЙрд╕ рдмрдлрд░ рдореЗрдВ рдЬрд┐рд╕рдореЗрдВ рдлрд╝рд╛рдЗрд▓ рдирд╛рдо рд╕реНрдерд╛рдирд╛рдВрддрд░рд┐рдд рдХрд┐рдпрд╛ рдЬрд╛рдПрдЧрд╛ред
- BufSize: рдкреВрд░реНрдгрд╛рдВрдХ - FileName рдмрдлрд░ рдХрд╛ рдЖрдХрд╛рд░ред
рдЗрд╕ рдлрд╝рдВрдХреНрд╢рди рдХреЛ рдХреЙрд▓ рдХрд░рдиреЗ рд╕реЗ рд╣рдореЗрдВ рдирд┐рдореНрди рдбреЗрдЯрд╛ рдкреНрд░рд╛рдкреНрдд рдХрд░рдиреЗ рдХрд╛ рдЕрд╡рд╕рд░ рдорд┐рд▓рддрд╛ рд╣реИ:
- рд╕реНрдерд╛рдирд╛рдВрддрд░рд┐рдд рдлрд╝рд╛рдЗрд▓реЛрдВ рдХреА рд╕рдВрдЦреНрдпрд╛ рдкреНрд░рд╛рдкреНрдд рдХрд░рдирд╛ред рдЗрдВрдбреЗрдХреНрд╕ рдкреИрд░рд╛рдореАрдЯрд░ рдореЗрдВ $ FFFFFFFF рдпрд╛ DWORD (-1) рдкрд╛рд╕ рдХрд░рдХреЗ рд╣рдо рдпрд╣ рдЬрд╛рдирдХрд╛рд░реА рдкреНрд░рд╛рдкреНрдд рдХрд░ рд╕рдХрддреЗ рд╣реИрдВ, рдЬрдмрдХрд┐ FileName рдкреИрд░рд╛рдореАрдЯрд░ "nil" рд╣реЛрдирд╛ рдЪрд╛рд╣рд┐рдП, рдФрд░ BufSize рдкреИрд░рд╛рдореАрдЯрд░, рдЬреЛ FileName рдмрдлрд░ рдХреЗ рдЖрдХрд╛рд░ рдХреЛ рдирд┐рдпрдВрддреНрд░рд┐рдд рдХрд░рддрд╛ рд╣реИ, рдХреЛ рд╢реВрдиреНрдп рд╣реЛрдирд╛ рдЪрд╛рд╣рд┐рдПред рдлрд╝рдВрдХреНрд╢рди рджреНрд╡рд╛рд░рд╛ рд▓реМрдЯрд╛рдпрд╛ рдЧрдпрд╛ рдорд╛рди рд╕реНрдерд╛рдирд╛рдВрддрд░рд┐рдд рдлрд╝рд╛рдЗрд▓реЛрдВ рдХреА рд╕рдВрдЦреНрдпрд╛ рдХреЗ рдмрд░рд╛рдмрд░ рд╣реЛрдЧрд╛ред рдЬрд╛рд╣рд┐рд░ рд╣реИ рдХрд┐ рдкрд░реНрдпрд╛рдкреНрдд рд╣реИред
- рдЗрдВрдбреЗрдХреНрд╕ рдкреИрд░рд╛рдореАрдЯрд░ рдХреЗ рдЖрдзрд╛рд░ рдкрд░ рдлрд╝рд╛рдЗрд▓ рдирд╛рдо рдХреЛ рд╕рдВрдЧреНрд░рд╣реАрдд рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдЖрд╡рд╢реНрдпрдХ рдореЗрдореЛрд░реА рдХреНрд╖реЗрддреНрд░ рдХреЗ рдЖрдХрд╛рд░ рдХреЛ рдкреНрд░рд╛рдкреНрдд рдХрд░рдирд╛ (рдЧрдгрдирд╛ рд╢реВрдиреНрдп рд╕реЗ рдЬрд╛рддреА рд╣реИ, рдпрд╛рдиреА рдкрд╣рд▓реА рдлрд╝рд╛рдЗрд▓ рд╢реВрдиреНрдп рджреНрд╡рд╛рд░рд╛ рд╕реВрдЪреА рдореЗрдВ рдЕрдиреБрдХреНрд░рдорд┐рдд рд╣реЛрддреА рд╣реИ)ред рдРрд╕рд╛ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП, рдЖрдкрдХреЛ рд╕реВрдЪрдХрд╛рдВрдХ рдкреИрд░рд╛рдореАрдЯрд░ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдХреЗ рд╕реВрдЪреА рдореЗрдВ рдЖрд╡рд╢реНрдпрдХ рдлрд╝рд╛рдЗрд▓ рдирд┐рд░реНрджрд┐рд╖реНрдЯ рдХрд░рдиреЗ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реИ, рдЬрд┐рд╕рд╕реЗ рдлрд╝рд╛рдЗрд▓рдирд╛рдо рдФрд░ BufSize рдкреИрд░рд╛рдореАрдЯрд░ рдкрд┐рдЫрд▓реЗ рдкреИрд░рд╛рдЧреНрд░рд╛рдл рдХреЗ рд╕рдорд╛рди рд╣реИрдВред рдирддреАрдЬрддрди, рдлрд╝рдВрдХреНрд╢рди рдлрд╝рд╛рдЗрд▓ рдирд╛рдо рдХреЛ рд╕рдВрдЧреНрд░рд╣реАрдд рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдЖрд╡рд╢реНрдпрдХ рдмрд╛рдЗрдЯреНрд╕ рдХреА рд╕рдВрдЦреНрдпрд╛ рд╡рд╛рдкрд╕ рдХрд░ рджреЗрдЧрд╛ред
- рдкрд╛рд░рд┐рдд рд╕реВрдЪрдХрд╛рдВрдХ рдХреЗ рдЖрдзрд╛рд░ рдкрд░ рдлрд╝рд╛рдЗрд▓ рдирд╛рдо рдкреНрд░рд╛рдкреНрдд рдХрд░рдирд╛ред рдРрд╕рд╛ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП, рд╕реВрдЪрдХрд╛рдВрдХ рдкреИрд░рд╛рдореАрдЯрд░ рдХреЗ рдорд╛рдзреНрдпрдо рд╕реЗ рдлрд╝рд╛рдЗрд▓ рдЗрдВрдбреЗрдХреНрд╕ рдХреЛ рдирд┐рд░реНрджрд┐рд╖реНрдЯ рдХрд░рдиреЗ рдХреЗ рдЕрд▓рд╛рд╡рд╛, рдПрдХ рдмрдлрд░ (рдЖрд╡рд╢реНрдпрдХ рдЖрдХрд╛рд░ рд╕реЗ рдереЛрдбрд╝рд╛ рдмрдбрд╝рд╛) рддреИрдпрд╛рд░ рдХрд░реЗрдВ рдЬреЛ рдлрд╝рд╛рдЗрд▓ рдкрде рдХреЗ рдмрд╛рд░реЗ рдореЗрдВ рдбреЗрдЯрд╛ рдкреНрд░рд╛рдкреНрдд рдХрд░ рд╕рдХрддрд╛ рд╣реИ, рд╕рд╛рде рд╣реА рд╢реВрдиреНрдп рдХреЛ рд╕рдорд╛рдкреНрдд рдХрд░ рд╕рдХрддрд╛ рд╣реИред
рдЕрдм рддрдХ, рдпрд╣ рд╕рдм рд╕реНрдкрд╖реНрдЯ рдирд╣реАрдВ рджрд┐рдЦрддрд╛ рд╣реИ, рд▓реЗрдХрд┐рди рд▓реЗрдЦ рдХреЗ рдЕрдВрдд рдореЗрдВ рд╣рдо рдЗрди рд╕рднреА рдЪрд░рдгреЛрдВ рдХреЛ рдПрдХ рд╡рд░реНрдЧ рдХреЗ рд░реВрдк рдореЗрдВ рд▓рд╛рдЧреВ рдХрд┐рдП рдЧрдП рд╕реНрд╡рддрдВрддреНрд░ рдХреЛрдб рдХреЗ рд░реВрдк рдореЗрдВ рд╡рд┐рдЪрд╛рд░ рдХрд░реЗрдВрдЧреЗред
DragQueryPoint
рдпрд╣ рдлрд╝рдВрдХреНрд╢рди, рд╕рд┐рджреНрдзрд╛рдВрдд рд░реВрдк рдореЗрдВ, рдПрдХ рд╡реИрдХрд▓реНрдкрд┐рдХ рдбреНрд░реИрдЧрд╡рд┐рдХрдлрд╝рд╛рдЗрд▓ рд╣реИ, рдЗрд╕реЗ рдХреЙрд▓ рдХрд░рдХреЗ, рд╣рдо рдирд┐рд░реНрджреЗрд╢рд╛рдВрдХ рдХрд╛ рдкрддрд╛ рд▓рдЧрд╛ рд╕рдХрддреЗ рд╣реИрдВ рдЬрд┐рд╕ рдкрд░ рдбреНрд░реИрдЧ рдПрдВрдб рдбреНрд░реЙрдк рд╕рдорд╛рдкреНрдд рд╣реЛ рдЧрдпрд╛ рд╣реИред
рдЗрд╕рдХреЗ рдорд╛рдкрджрдВрдбреЛрдВ рдкрд░ рд╡рд┐рдЪрд╛рд░ рдХрд░реЗрдВ:
- рдбреНрд░реЙрдкрд╣реИрдВрдбрд▓: рдПрдЪрдбреАрдЖрд░рдкреА - рдСрдкрд░реЗрд╢рди рдбрд┐рд╕реНрдХреНрд░рд┐рдкреНрдЯрд░ WM_DROPFILES рд╕рдВрджреЗрд╢ рджреНрд╡рд╛рд░рд╛ рднреЗрдЬрд╛ рдЧрдпрд╛ред
- var рдкреЙрдЗрдВрдЯ: TPoint - TPoint рд╕рдВрд░рдЪрдирд╛ рдЬрд┐рд╕рдореЗрдВ рдбреНрд░реИрдЧ-рдПрдВрдб-рдбреНрд░реЙрдк рдСрдкрд░реЗрд╢рди рдХреЗ рдкреВрд░рд╛ рд╣реЛрдиреЗ рдХреЗ рдмрд┐рдВрджреБ рдХреЗ рдмрд╛рд░реЗ рдореЗрдВ рдбреЗрдЯрд╛ рд╡рд╛рдкрд╕ рдХрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИред рдпрджрд┐ рд╡рд┐рдВрдбреЛ рдХреЗ рдХреНрд▓рд╛рдЗрдВрдЯ рдХреНрд╖реЗрддреНрд░ рдореЗрдВ рдСрдкрд░реЗрд╢рди рдкреВрд░рд╛ рд╣реЛ рдЧрдпрд╛ рд╣реИ, рддреЛ рдпрд╣ рдПрдХ рдЧреИрд░-рд╢реВрдиреНрдп рдорд╛рди рд▓реМрдЯрд╛рдПрдЧрд╛, рдЕрдиреНрдпрдерд╛ рдлрд╝рдВрдХреНрд╢рди рд╢реВрдиреНрдп рд╡рд╛рдкрд╕ рдЖ рдЬрд╛рдПрдЧрд╛ред
рдЖрдЗрдП рдЗрд╕рдХреА рд╕рдВрдкреВрд░реНрдгрддрд╛ рдкрд░ рд╡рд┐рдЪрд╛рд░ рдХрд░реЗрдВред
рдПрдХ рдирдпрд╛ рдкреНрд░реЛрдЬреЗрдХреНрдЯ рдмрдирд╛рдПрдВред
рд╣рдорд╛рд░реЗ рдкрд╛рд╕ рдПрдХ "рдордЫрд▓реА" рдбреЗрд▓реНрдлреА рдПрдкреНрд▓рд┐рдХреЗрд╢рди рд╣реИ рдФрд░ рд╣рдореЗрдВ рдЗрд╕реЗ рдбреНрд░реИрдЧ-рдПрдВрдб-рдбреНрд░реЙрдк рдХреЗ рдорд╛рдзреНрдпрдо рд╕реЗ рд╕реНрдерд╛рдирд╛рдВрддрд░рд┐рдд рдлрд╝рд╛рдЗрд▓реЛрдВ рдХреЗ рдмрд╛рд░реЗ рдореЗрдВ рдЬрд╛рдирдХрд╛рд░реА рдкреНрд░рд╛рдкреНрдд рдХрд░рдиреЗ рдХреА рдХреНрд╖рдорддрд╛ рдЬреЛрдбрд╝рдиреЗ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реИред
рд╣рдорд╛рд░реЗ рдлрд╛рд░реНрдо рдореЗрдВ, рд╣рдо рд╣рдорд╛рд░реЗ рд▓рд┐рдП рдмреНрдпрд╛рдЬ рдХреА рдШрдЯрдирд╛ рдХреЗ рд╣реИрдВрдбрд▓рд░ рдХреЛ рдкрдВрдЬреАрдХреГрдд рдХрд░реЗрдВрдЧреЗ:
procedure TForm1.FormCreate(Sender: TObject); begin
рдЗрд╕ рдХреЛрдб рдХреЗ рд╕рд╛рде, рд╣рдордиреЗ WM_DROPFILES рд╕рдВрджреЗрд╢ рдкреНрд░рд╛рдкреНрдд рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рд╕рд╛рдЗрди рдЕрдк рдХрд┐рдпрд╛ред
рдпрд╣ рд╕рдВрджреЗрд╢ рд╣реИрдВрдбрд▓рд░ рдЬреИрд╕рд╛ рджрд┐рдЦрддрд╛ рд╣реИ:
procedure TForm1.WMDropFiles(var Msg: TWMDropFiles); var DropH: HDROP;
рдмрд╣реБрдд рд╢реБрд░реБрдЖрдд рдореЗрдВ, рд╣рдо рдПрдХ рд╕реНрдерд╛рдиреАрдп рдЪрд░ рдореЗрдВ рдбреНрд░реЙрдк рдСрдкрд░реЗрд╢рди рдХреЗ рд╣реИрдВрдбрд▓ рдХреЛ рдпрд╛рдж рдХрд░рддреЗ рд╣реИрдВред
рдпрд╣ рдХреЗрд╡рд▓ рд╕реБрд╡рд┐рдзрд╛ рдХреЗ рд▓рд┐рдП рдХрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИ, рднрд╡рд┐рд╖реНрдп рдореЗрдВ рд╣рдо рдХреЙрд▓ рдХреЗ рд▓рд┐рдП рдЗрд╕ рдорд╛рди рдХрд╛ рдЙрдкрдпреЛрдЧ рдбреНрд░реИрдЧрд╡рд┐рдХрдлрд╛рдЗрд▓ рдлрд╝рдВрдХреНрд╢рди (рд╕рд╛рде рд╣реА рдбреНрд░реИрдЧрдПрдХреНрд╕рдПрдХреНрд╕рдПрдХреНрд╕рдПрдХреНрд╕рдПрдХреНрд╕ рдХреЗ рдмрд╛рдХреА рд╣рд┐рд╕реНрд╕реЛрдВ) рдХреЗ рд▓рд┐рдП рдХрд░реЗрдВрдЧреЗ, рдкрд╣рд▓рд╛ рдХреЙрд▓ рдЬрд┐рд╕рдореЗрдВ рд╣рдореЗрдВ рд╕реВрдЪреА рдореЗрдВ рдлрд╝рд╛рдЗрд▓реЛрдВ рдХреА рд╕рдВрдЦреНрдпрд╛ рдорд┐рд▓рддреА рд╣реИред
рд╣рдорд╛рд░рд╛ рдЕрдЧрд▓рд╛ рдХрджрдо рд╣реИ рдХрд┐ рд▓реВрдк рдХреА рдкреНрд░рддреНрдпреЗрдХ рдлрд╛рдЗрд▓ рдХрд╛ рдирд╛рдо рдЙрд╕рдХреЗ рдЗрдВрдбреЗрдХреНрд╕ рджреНрд╡рд╛рд░рд╛ рдкреНрд░рд╛рдкреНрдд рдХрд┐рдпрд╛ рдЬрд╛рдП (рд╕реВрдЪреА рдореЗрдВ рдореМрдЬреВрдж рдлрд╛рдЗрд▓реЛрдВ рдХреЛ рд╢реВрдиреНрдп рд╕реЗ рдЕрдиреБрдХреНрд░рдорд┐рдд рдХрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИ - рдЗрд╕реЗ рди рднреВрд▓реЗрдВ)ред
рдкреНрд░рддреНрдпреЗрдХ рдлрд╝рд╛рдЗрд▓ рдХреЗ рд▓рд┐рдП, рдкрд╣рд▓реЗ рдмрдлрд░ рдХреЗ рдЖрдХрд╛рд░ рдХрд╛ рдкрддрд╛ рд▓рдЧрд╛рдирд╛ рдЖрд╡рд╢реНрдпрдХ рд╣реИ, рдЬрд┐рд╕реЗ рдбреНрд░реИрдЧрд╡рд┐рдХрд╛рдЗрд▓ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдиреЗ рдХреА рджреВрд╕рд░реА рд╡рд┐рдзрд┐ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдХреЗ рдкреНрд░рд╛рдкреНрдд рдХрд┐рдпрд╛ рдЬрд╛ рд╕рдХрддрд╛ рд╣реИ, рдЬрд┐рд╕реЗ рдКрдкрд░ рд╡рд░реНрдгрд┐рдд рдХрд┐рдпрд╛ рдЧрдпрд╛ рдерд╛, рдФрд░ рдлрд┐рд░ рдПрдХ рдкрдВрдХреНрддрд┐ рдХреЗ рд▓рд┐рдП рдореЗрдореЛрд░реА рдЖрд╡рдВрдЯрд┐рдд рдХрд░реЗрдВ рдЬреЛ рдлрд╝рд╛рдЗрд▓ рдХреЛ рдкрде рд╕рдВрдЧреНрд░рд╣реАрдд рдХрд░реЗрдЧреАред
рдЕрдВрдд рдореЗрдВ, рдЖрдкрдХреЛ рддреАрд╕рд░реЗ рд░рд╛рд╕реНрддреЗ рдореЗрдВ DragQueryFile рдХреЛ рдХреЙрд▓ рдХрд░рдХреЗ рдЖрд╡рдВрдЯрд┐рдд рдмрдлрд░ рдХреЛ рдлрд╝рд╛рдЗрд▓ рдкрде рдХреЛ рдкрдврд╝рдиреЗ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реИред
рдлрд╝рд╛рдЗрд▓ рдирд╛рдореЛрдВ рдХреЗ рдмрд╛рд░реЗ рдореЗрдВ рд╕рднреА рдЬрд╛рдирдХрд╛рд░реА рдкрдврд╝рдиреЗ рдХреЗ рдмрд╛рдж, рд╣рдо рдЙрд╕ рдмрд┐рдВрджреБ рдХреЗ рдирд┐рд░реНрджреЗрд╢рд╛рдВрдХ рдкреНрд░рд╛рдкреНрдд рдХрд░ рд╕рдХрддреЗ рд╣реИрдВ рдЬрд╣рд╛рдВ рдЙрдкрдпреЛрдЧрдХрд░реНрддрд╛ рдлрд╝рд╛рдЗрд▓реЛрдВ рдХреЛ рдЦреАрдВрдЪрддрд╛ рд╣реИред
рдЬрдм рд╣рдордиреЗ рд╕рднреА рдСрдкрд░реЗрд╢рдиреЛрдВ рдХреЛ рдкреВрд░рд╛ рдХрд░ рд▓рд┐рдпрд╛ рд╣реИ, рд╣рдо рд╣реИрдВрдбрд▓ рдХреЛ рдЬрд╛рд░реА рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдбреНрд░реИрдЧрдлрд┐рдирд┐рд╢ рдлрд╝рдВрдХреНрд╢рди рдХреЛ рдХреЙрд▓ рдХрд░реЗрдВрдЧреЗред
рдХреГрдкрдпрд╛ рдзреНрдпрд╛рди рджреЗрдВ рдХрд┐ рдЕрдкрд╡рд╛рдж рдХреЛ рдмрдврд╝рд╛рддреЗ рд╣реБрдП рднреА рд╣рдореЗрдВ рдпрд╣ рдХрд╛рд░реНрд░рд╡рд╛рдИ рдХрд░рдиреА рдЪрд╛рд╣рд┐рдПред
рдареАрдХ рд╣реИ, рдмрд╣реБрдд рдЕрдВрдд рдореЗрдВ, рд╣рдо рд╕рдВрджреЗрд╢ рдХреЛ рд╕рдВрд╕рд╛рдзрд┐рдд рдХрд░рдиреЗ рдХреЗ рдкрд░рд┐рдгрд╛рдо рдХреЛ рдЗрдВрдЧрд┐рдд рдХрд░реЗрдВрдЧреЗ 0 рдорд╛рдиред Msg.Result рд╕рдВрд░рдЪрдирд╛ рдореЗрдВ, рдЗрд╕ рддрд░рд╣ рд╕реЗ, рдпрд╣ рджрд░реНрд╢рд╛рддрд╛ рд╣реИ, рдХрд┐ рд╣рдордиреЗ рдЗрд╕ рд╕рдВрджреЗрд╢ рдХреЛ рд╕рдлрд▓рддрд╛рдкреВрд░реНрд╡рдХ рд╕рдВрд╕рд╛рдзрд┐рдд рдХрд┐рдпрд╛ рд╣реИред
рдЖрд╡реЗрджрди рдкреВрд░рд╛ рд╣реЛрдиреЗ рдкрд░, рд╣рдо WM_DROPFILES рд╕рдВрджреЗрд╢ рдкреНрд░рд╛рдкреНрдд рдХрд░рдиреЗ рд╕реЗ рдореБрдЦреНрдп рд╡рд┐рдВрдбреЛ рдХреЛ рдбрд┐рд╕реНрдХрдиреЗрдХреНрдЯ рдХрд░ рджреЗрдВрдЧреЗред
procedure TForm1.FormDestroy(Sender: TObject); begin
рд╣рдо рдЗрд╕реЗ рдПрдХ рд╡рд░реНрдЧ рдХреЗ рд░реВрдк рдореЗрдВ рд▓рд╛рдЧреВ рдХрд░рддреЗ рд╣реИрдВ (рдж рдбреЗрд▓реНрдлреА рд╡реЗ)
рдпрджрд┐ рдЖрдк рд╕рд╣рдордд рд╣реИрдВ рдХрд┐ рд╕реАрдзреЗ рдЖрдзрд╛рд░ рдПрдкреНрд▓рд┐рдХреЗрд╢рди рдХреЗ рдХреЛрдб рдореЗрдВ рдПрдкреАрдЖрдИ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рддреЗ рд╣реБрдП, рдХреБрдЫ рднреНрд░рдо рдХрд╛ рдкрд░рд┐рдЪрдп рджреЗрддрд╛ рд╣реИ, рддреЛ рдореБрдЭреЗ рд▓рдЧрддрд╛ рд╣реИ рдХрд┐ рдЖрдк рд╕рд╣рдордд рд╣реЛрдВрдЧреЗ рдХрд┐ рдХреБрдЫ рд╕рд╣рд╛рдпрдХ рд╡рд░реНрдЧ рдХреЗ рд░реВрдк рдореЗрдВ, рдЗрд╕ рдХрд╛рд░реНрдпрдХреНрд╖рдорддрд╛ рдХреЛ рдмрд╛рд╣рд░ рд▓рд╛рдиреЗ рдХреЗ рд▓рд┐рдП рдпрд╣ рдЕрдзрд┐рдХ рд╕реБрд╡рд┐рдзрд╛рдЬрдирдХ рд╣реИред
рдПрдХ рдЙрджрд╛рд╣рд░рдг рдХреЗ рд░реВрдк рдореЗрдВ, рдпрд╣рд╛рдВ рдПрдХ рдЫреЛрдЯрд╛ рд╡рд░реНрдЧ рд╣реИ рдЬреЛ WM_DROPFILES рд╕рдВрджреЗрд╢ рдХреЛ рд╕рдВрднрд╛рд▓ рд╕рдХрддрд╛ рд╣реИред
рдпрд╣ рдЕрдкрдиреЗ рдЖрдк рдореЗрдВ рдмрд╣реБрдд рд╕рд╛рд░реЗ рдХреЛрдб рдЫреБрдкрд╛рддрд╛ рд╣реИ, рдЬрд┐рд╕реЗ рд╣рдореЗрдВ рдмрд┐рдирд╛ рдЙрдкрдпреЛрдЧ рдХрд┐рдП рд╕реНрд╡рддрдВрддреНрд░ рд░реВрдк рд╕реЗ рд▓рд╛рдЧреВ рдХрд░рдирд╛ рдЪрд╛рд╣рд┐рдП рдерд╛ред
рд╕рдЪ рд╣реИ, рдПрдХ рдЕрддрд┐ рд╕реВрдХреНрд╖реНрдо рдЕрдВрддрд░ рд╣реИ - рд╣рдореЗрдВ рдЕрднреА рднреА рдПрдХ рд╡рд┐рдВрдбреЛ рдХреА рдЙрдкрд╕реНрдерд┐рддрд┐ рдХреЗ рдмрд╛рд░реЗ рдореЗрдВ рд╡рд┐рдВрдбреЛрдЬ рдХреЛ рд╕реВрдЪрд┐рдд рдХрд░рдиреЗ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реИ рдЬреЛ WM_DROPFILI рд╕рдВрджреЗрд╢ рдХреА рдкреНрд░рдХреНрд░рд┐рдпрд╛ рдХрд░рддрд╛ рд╣реИред
рдЗрд╕ рд╡рд░реНрдЧ рдХреА рдШреЛрд╖рдгрд╛ рдЗрд╕ рдкреНрд░рдХрд╛рд░ рд╣реИ:
type TFileCatcher = class(TObject) private fDropHandle: HDROP; function GetFile(Idx: Integer): string; function GetFileCount: Integer; function GetPoint: TPoint; public constructor Create(DropHandle: HDROP); destructor Destroy; override; property FileCount: Integer read GetFileCount; property Files[Idx: Integer]: string read GetFile; property DropPoint: TPoint read GetPoint; end;
... рдареАрдХ рд╣реИ, рдФрд░ рдЗрд╕рдХреЗ рдХрд╛рд░реНрдпрд╛рдиреНрд╡рдпрди:
constructor TFileCatcher.Create(DropHandle: HDROP); begin inherited Create; fDropHandle := DropHandle; end; destructor TFileCatcher.Destroy; begin DragFinish(fDropHandle); inherited; end; function TFileCatcher.GetFile(Idx: Integer): string; var FileNameLength: Integer; begin FileNameLength := DragQueryFile(fDropHandle, Idx, nil, 0); SetLength(Result, FileNameLength); DragQueryFile(fDropHandle, Idx, PChar(Result), FileNameLength + 1); end; function TFileCatcher.GetFileCount: Integer; begin Result := DragQueryFile(fDropHandle, $FFFFFFFF, nil, 0); end; function TFileCatcher.GetPoint: TPoint; begin DragQueryPoint(fDropHandle, Result); end;
рд╕рд┐рджреНрдзрд╛рдВрдд рд░реВрдк рдореЗрдВ, рдРрд╕рд╛ рдХреБрдЫ рднреА рдирд╣реАрдВ рд╣реИ рдЬреЛ рдкрд╣рд▓реЗ рдирд╣реАрдВ рдХрд╣рд╛ рдЧрдпрд╛ рд╣реИред рдЖрдкрдиреЗ рдкрд╣рд▓реЗ рд╣реА рд╕рднреА рдХреЛрдб рджреЗрдЦ рд▓рд┐рдП рд╣реИрдВред
рдХрдВрд╕реНрдЯреНрд░рдХреНрдЯрд░ HDROP рдбрд┐рд╕реНрдХреНрд░рд┐рдкреНрдЯрд░ рдХреЛ рд╕реНрд╡реАрдХрд╛рд░ рдХрд░рддрд╛ рд╣реИ, рд╡рд┐рдзреНрд╡рдВрд╕рдХ рдЗрд╕реЗ DragFinish рдХреЗ рд▓рд┐рдП рдПрдХ рдХреЙрд▓ рдХреЗ рд╕рд╛рде рдЕрдВрддрд┐рдо рд░реВрдк рджреЗрддрд╛ рд╣реИред
рдлрд╝рд╛рдЗрд▓реЛрдВ рдХреА рд╕реВрдЪреА рдФрд░ рдЙрдирдХреА рд╕рдВрдЦреНрдпрд╛ рдХреЛ рд╡рд░реНрдЧ рдЧреБрдгреЛрдВ рджреНрд╡рд╛рд░рд╛ рджрд░реНрд╢рд╛рдпрд╛ рдЧрдпрд╛ рд╣реИред
рд╕рднреА рд╡рд░реНрдЧ рд╡рд┐рдзрд┐рдпрд╛рдВ рдЕрдирд┐рд╡рд╛рд░реНрдп рд░реВрдк рд╕реЗ рдбреНрд░реИрдЧрд╡рд┐рдХрдПрдлрд╛рдЗрд▓ рдФрд░ рдбреНрд░реИрдЧрд╡рд┐рдХреЙрдкреНрдЯрд░ рдПрдкреАрдЖрдИ рдкрд░ рдПрдХ рдЖрд╡рд░рдг рд╣реИред
рдЪрд▓реЛ TFileCatcher рдХреЗ рдЙрдкрдпреЛрдЧ рдХреЛ рдзреНрдпрд╛рди рдореЗрдВ рд░рдЦрддреЗ рд╣реБрдП, WM_DROPFILES рд╕рдВрджреЗрд╢ рд╣реИрдВрдбрд▓рд░ рдХреЛ рдлрд┐рд░ рд╕реЗ рд▓рд┐рдЦреЗрдВред
procedure TForm1.WMDropFiles(var Msg: TWMDropFiles); var I: Integer;
рднрд╡рд┐рд╖реНрдп рдХреА рдпреЛрдЬрдирд╛
TFileCatcher рд╡рд░реНрдЧ рдХреЛ рдбреНрд░реИрдЧ-рдПрдВрдб-рдбреНрд░реЙрдк рдСрдкрд░реЗрд╢рди рдореЗрдВ рдЙрдкрдпреЛрдЧ рдХрд┐рдП рдЬрд╛рдиреЗ рд╡рд╛рд▓реЗ рд╕рднреА рдПрдкреАрдЖрдИ рдХреЛ рдЫрд┐рдкрд╛рдиреЗ рдХреЗ рд▓рд┐рдП рдмрдврд╝рд╛рдпрд╛ рдЬрд╛ рд╕рдХрддрд╛ рд╣реИред рд╕рдЪ рд╣реИ, рдпрд╣ WM_DROPFILES рд╕рдВрджреЗрд╢ рдХреЛ рдЗрдВрдЯрд░рд╕реЗрдкреНрдЯ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдлреЙрд░реНрдо рд╡рд┐рдВрдбреЛ рддрдХ рдкрд╣реБрдВрдЪ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реЛрдЧреАред
рдЗрд╕ рдХрд╛рд░реНрдпрд╛рдиреНрд╡рдпрди рдХреЗ рд▓рд┐рдП рдПрдХ рд╡рд┐рдХрд▓реНрдк рдлреЙрд░реНрдо рд╡рд┐рдВрдбреЛ рдХреЛ рдЙрдк-рд╡рд░реНрдЧ рдХрд░рдирд╛ рд╣реИред рд╕рдЪ рд╣реИ, рдпрд╣ рдЗрд╕ рд▓реЗрдЦ рдХреЗ рджрд╛рдпрд░реЗ рд╕реЗ рдкрд░реЗ рд╣реИред рд╣рд╛рд▓рд╛рдБрдХрд┐, рдпрджрд┐ рдЖрдк рдЕрдзрд┐рдХ рдЬрд╛рдирдХрд╛рд░реА рдЪрд╛рд╣рддреЗ рд╣реИрдВ, рддреЛ
рдбреНрд░реЙрдк рдлрд╝рд╛рдЗрд▓ рдШрдЯрдХреЛрдВ рдХреЗ рдореЗрд░реЗ
рд╕реЗрдЯ рдХреА рдЬрд╛рдБрдЪ рдХрд░реЗрдВред
рдбреЗрдореЛ рдРрдк
рдбреЗрдореЛ рдЖрд╡реЗрджрди рдХреЗ рд▓рд┐рдП рд╕реНрд░реЛрдд рдХреЛрдб рдЗрд╕ рд▓реЗрдЦ рдореЗрдВ рдкреНрд░рдХрд╛рд╢рд┐рдд рдХреЛрдб рдкрд░ рдЖрдзрд╛рд░рд┐рдд рд╣реИред рдХреЛрдб рдХреЛ рдбреЗрд▓реНрдлреА рдХреЗ рд╕рд╛рдд рдХреЗ рдорд╛рдзреНрдпрдо рд╕реЗ рдЪрд╛рд░ рд╕рдВрд╕реНрдХрд░рдгреЛрдВ рдореЗрдВ рдкрд░реАрдХреНрд╖рдг рдХрд┐рдпрд╛ рдЧрдпрд╛ рдерд╛ред
рдпрд╣ рд╕реНрд░реЛрдд рдХреЛрдб рдХреЗрд╡рд▓ рдЕрд╡рдзрд╛рд░рдгрд╛ рдХрд╛ рдкреНрд░рдорд╛рдг рд╣реИ рдФрд░ рдЗрд╕рдХрд╛ рдЙрджреНрджреЗрд╢реНрдп рдХреЗрд╡рд▓ рдЗрд╕ рд▓реЗрдЦ рдХреЛ рдЪрд┐рддреНрд░рд┐рдд рдХрд░рдирд╛ рд╣реИред рдпрд╣ рддреИрдпрд╛рд░ рдЕрдиреБрдкреНрд░рдпреЛрдЧреЛрдВ рдореЗрдВ рдЕрдкрдиреЗ рд╡рд░реНрддрдорд╛рди рд░реВрдк рдореЗрдВ рдЙрдкрдпреЛрдЧ рдХреЗ рд▓рд┐рдП рдбрд┐рдЬрд╝рд╛рдЗрди рдирд╣реАрдВ рдХрд┐рдпрд╛ рдЧрдпрд╛ рд╣реИред рдХреЛрдб "AS IS" рдХреЗ рдЖрдзрд╛рд░ рдкрд░ рдкреНрд░рджрд╛рди рдХрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИ, рдХрд┐рд╕реА рднреА рдкреНрд░рдХрд╛рд░ рдХреА рд╡рд╛рд░рдВрдЯреА рдХреЗ рдмрд┐рдирд╛, рдпрд╛ рддреЛ рд╡реНрдпрдХреНрдд рдпрд╛ рдирд┐рд╣рд┐рдд рд╣реИред рдХреЛрдб рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд┐рд╕реА рднреА рддрд░рд╣ рд╕реЗ рдХрд┐рдпрд╛ рдЬрд╛ рд╕рдХрддрд╛ рд╣реИ, рдмрд╢рд░реНрддреЗ рдХрд┐ рд╡рд╣ рдмреЗрдЪрд╛ рди рдЬрд╛рдП рдпрд╛ рдХрд┐рд╕реА рдЕрдиреНрдп рд╡реНрдпрдХреНрддрд┐ рдХреЗ рдХрд╛рдо рдХреЗ рд░реВрдк рдореЗрдВ рдкрд╛рд╕ рди рд╣реЛред рдпрджрд┐ рдЖрдк рдЗрд╕ рд╕рдм рд╕реЗ рд╕рд╣рдордд рд╣реИрдВ рддреЛ рдХреГрдкрдпрд╛ рдирд┐рдореНрди рд▓рд┐рдВрдХ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдХреЗ рдХреЛрдб рдбрд╛рдЙрдирд▓реЛрдб рдХрд░реЗрдВред
рдбреЗрдореЛ рдбрд╛рдЙрдирд▓реЛрдб рдХрд░реЗрдВ